@pinata/sdk 2.0.0 → 3.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.
Files changed (78) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +58 -695
  3. package/index.d.ts +9 -0
  4. package/index.js +6 -0
  5. package/index.mjs +4 -0
  6. package/legacy.js +15 -0
  7. package/package.json +58 -84
  8. package/react/index.d.ts +1 -0
  9. package/react/index.js +3 -0
  10. package/react/index.mjs +1 -0
  11. package/.babelrc +0 -5
  12. package/.editorconfig +0 -12
  13. package/.eslintrc +0 -173
  14. package/.husky/pre-commit +0 -6
  15. package/.nvmrc +0 -1
  16. package/.travis.yml +0 -5
  17. package/lib/pinata-sdk.js +0 -24514
  18. package/lib/pinata-sdk.min.js +0 -22
  19. package/pinata.png +0 -0
  20. package/src/commands/data/getFilesByCount/getFilesByCount.ts +0 -66
  21. package/src/commands/data/index.ts +0 -4
  22. package/src/commands/data/pinList/pinList.ts +0 -77
  23. package/src/commands/data/pinList/queryBuilder.ts +0 -239
  24. package/src/commands/data/testAuthentication.ts +0 -31
  25. package/src/commands/data/userPinnedDataTotal.ts +0 -24
  26. package/src/commands/pinning/hashMetadata.ts +0 -56
  27. package/src/commands/pinning/index.ts +0 -8
  28. package/src/commands/pinning/pinByHash.ts +0 -65
  29. package/src/commands/pinning/pinFileToIPFS.ts +0 -118
  30. package/src/commands/pinning/pinFromFS.ts +0 -50
  31. package/src/commands/pinning/pinJSONToIPFS.ts +0 -47
  32. package/src/commands/pinning/pinJobs/pinJobs.ts +0 -50
  33. package/src/commands/pinning/pinJobs/queryBuilder.ts +0 -75
  34. package/src/commands/pinning/unpin.ts +0 -32
  35. package/src/constants.ts +0 -4
  36. package/src/index.ts +0 -123
  37. package/src/third-party/base-path-converter.d.ts +0 -3
  38. package/src/third-party/is-ipfs.d.ts +0 -5
  39. package/src/util/errorResponse.ts +0 -10
  40. package/src/util/validators.ts +0 -182
  41. package/test/commands/data/getFilesByCount/getFilesByCount.test.ts +0 -212
  42. package/test/commands/data/pinList/pinList.test.ts +0 -102
  43. package/test/commands/data/pinList/queryBuilder.test.ts +0 -439
  44. package/test/commands/data/pinlist-sample-api.ts +0 -540
  45. package/test/commands/data/testAuthentication.test.ts +0 -34
  46. package/test/commands/data/userPinnedDataTotal.test.ts +0 -29
  47. package/test/commands/pinning/hashMetadata.test.ts +0 -76
  48. package/test/commands/pinning/pinByHash.test.ts +0 -46
  49. package/test/commands/pinning/pinFileToIPFS.test.ts +0 -53
  50. package/test/commands/pinning/pinFromFS.ts +0 -32
  51. package/test/commands/pinning/pinJSONToIPFS.test.ts +0 -42
  52. package/test/commands/pinning/pinJobs/pinJobs.test.ts +0 -29
  53. package/test/commands/pinning/pinJobs/queryBuilder.test.ts +0 -120
  54. package/test/commands/pinning/unpin.test.ts +0 -46
  55. package/test/util/validators.test.ts +0 -234
  56. package/tsconfig.json +0 -23
  57. package/types/commands/data/getFilesByCount/getFilesByCount.d.ts +0 -14
  58. package/types/commands/data/index.d.ts +0 -4
  59. package/types/commands/data/pinList/pinList.d.ts +0 -45
  60. package/types/commands/data/pinList/queryBuilder.d.ts +0 -1
  61. package/types/commands/data/testAuthentication.d.ts +0 -5
  62. package/types/commands/data/userPinnedDataTotal.d.ts +0 -2
  63. package/types/commands/pinning/hashMetadata.d.ts +0 -3
  64. package/types/commands/pinning/hashPinPolicy.d.ts +0 -9
  65. package/types/commands/pinning/index.d.ts +0 -8
  66. package/types/commands/pinning/pinByHash.d.ts +0 -14
  67. package/types/commands/pinning/pinFileToIPFS.d.ts +0 -25
  68. package/types/commands/pinning/pinFromFS.d.ts +0 -3
  69. package/types/commands/pinning/pinJSONToIPFS.d.ts +0 -3
  70. package/types/commands/pinning/pinJobs/pinJobs.d.ts +0 -20
  71. package/types/commands/pinning/pinJobs/queryBuilder.d.ts +0 -1
  72. package/types/commands/pinning/unpin.d.ts +0 -2
  73. package/types/commands/pinning/userPinPolicy.d.ts +0 -8
  74. package/types/constants.d.ts +0 -2
  75. package/types/index.d.ts +0 -38
  76. package/types/util/errorResponse.d.ts +0 -1
  77. package/types/util/validators.d.ts +0 -37
  78. package/webpack.config.js +0 -58
@@ -1,22 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("pinata-sdk",[],n):"object"==typeof exports?exports["pinata-sdk"]=n():e["pinata-sdk"]=n()}("undefined"!=typeof self?self:this,(function(){return function(e){var n={};function t(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:i})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(i,a,function(n){return e[n]}.bind(null,a));return i},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=207)}([function(e,n,t){var i=t(2),a=t(25),o=t(16),r=t(17),s=t(26),c=function(e,n,t){var u,p,l,f,d=e&c.F,m=e&c.G,h=e&c.S,v=e&c.P,x=e&c.B,b=m?i:h?i[n]||(i[n]={}):(i[n]||{}).prototype,g=m?a:a[n]||(a[n]={}),y=g.prototype||(g.prototype={});for(u in m&&(t=n),t)l=((p=!d&&b&&void 0!==b[u])?b:t)[u],f=x&&p?s(l,i):v&&"function"==typeof l?s(Function.call,l):l,b&&r(b,u,l,e&c.U),g[u]!=l&&o(g,u,f),v&&y[u]!=l&&(y[u]=l)};i.core=a,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,n,t){var i=t(4);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,n){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n,t){var i=t(65)("wks"),a=t(50),o=t(2).Symbol,r="function"==typeof o;(e.exports=function(e){return i[e]||(i[e]=r&&o[e]||(r?o:a)("Symbol."+e))}).store=i},function(e,n,t){var i=t(28),a=Math.min;e.exports=function(e){return e>0?a(i(e),9007199254740991):0}},function(e,n,t){e.exports=!t(3)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,n,t){var i=t(1),a=t(132),o=t(36),r=Object.defineProperty;n.f=t(7)?Object.defineProperty:function(e,n,t){if(i(e),n=o(n,!0),i(t),a)try{return r(e,n,t)}catch(e){}if("get"in t||"set"in t)throw TypeError("Accessors not supported!");return"value"in t&&(e[n]=t.value),e}},function(e,n,t){var i=t(37);e.exports=function(e){return Object(i(e))}},function(e,n,t){var i=t(0);i(i.S+i.F*!t(7),"Object",{defineProperty:t(8).f})},function(e,n,t){"use strict";var i=t(0),a=t(39)(0),o=t(31)([].forEach,!0);i(i.P+i.F*!o,"Array",{forEach:function(e){return a(this,e,arguments[1])}})},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){var i=t(9),a=t(51);t(38)("keys",(function(){return function(e){return a(i(e))}}))},function(e,n,t){"use strict";var i=t(173),a=Object.prototype.toString;function o(e){return"[object Array]"===a.call(e)}function r(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function c(e){if("[object Object]"!==a.call(e))return!1;var n=Object.getPrototypeOf(e);return null===n||n===Object.prototype}function u(e){return"[object Function]"===a.call(e)}function p(e,n){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var t=0,i=e.length;t<i;t++)n.call(null,e[t],t,e);else for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&n.call(null,e[a],a,e)}e.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===a.call(e)},isBuffer:function(e){return null!==e&&!r(e)&&null!==e.constructor&&!r(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:s,isPlainObject:c,isUndefined:r,isDate:function(e){return"[object Date]"===a.call(e)},isFile:function(e){return"[object File]"===a.call(e)},isBlob:function(e){return"[object Blob]"===a.call(e)},isFunction:u,isStream:function(e){return s(e)&&u(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:p,merge:function e(){var n={};function t(t,i){c(n[i])&&c(t)?n[i]=e(n[i],t):c(t)?n[i]=e({},t):o(t)?n[i]=t.slice():n[i]=t}for(var i=0,a=arguments.length;i<a;i++)p(arguments[i],t);return n},extend:function(e,n,t){return p(n,(function(n,a){e[a]=t&&"function"==typeof n?i(n,t):n})),e},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},function(e,n,t){var i=t(8),a=t(49);e.exports=t(7)?function(e,n,t){return i.f(e,n,a(1,t))}:function(e,n,t){return e[n]=t,e}},function(e,n,t){var i=t(2),a=t(16),o=t(19),r=t(50)("src"),s=t(210),c=(""+s).split("toString");t(25).inspectSource=function(e){return s.call(e)},(e.exports=function(e,n,t,s){var u="function"==typeof t;u&&(o(t,"name")||a(t,"name",n)),e[n]!==t&&(u&&(o(t,r)||a(t,r,e[n]?""+e[n]:c.join(String(n)))),e===i?e[n]=t:s?e[n]?e[n]=t:a(e,n,t):(delete e[n],a(e,n,t)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[r]||s.call(this)}))},function(e,n,t){var i=t(0),a=t(3),o=t(37),r=/"/g,s=function(e,n,t,i){var a=String(o(e)),s="<"+n;return""!==t&&(s+=" "+t+'="'+String(i).replace(r,"&quot;")+'"'),s+">"+a+"</"+n+">"};e.exports=function(e,n){var t={};t[e]=n(s),i(i.P+i.F*a((function(){var n=""[e]('"');return n!==n.toLowerCase()||n.split('"').length>3})),"String",t)}},function(e,n){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,n,t){var i=t(66),a=t(37);e.exports=function(e){return i(a(e))}},function(e,n,t){var i=t(67),a=t(49),o=t(20),r=t(36),s=t(19),c=t(132),u=Object.getOwnPropertyDescriptor;n.f=t(7)?u:function(e,n){if(e=o(e),n=r(n,!0),c)try{return u(e,n)}catch(e){}if(s(e,n))return a(!i.f.call(e,n),e[n])}},function(e,n,t){var i=t(19),a=t(9),o=t(93)("IE_PROTO"),r=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),i(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?r:null}},function(e,n,t){"use strict";var i=t(61),a={};a[t(5)("toStringTag")]="z",a+""!="[object z]"&&t(17)(Object.prototype,"toString",(function(){return"[object "+i(this)+"]"}),!0)},function(e,n,t){"use strict";var i=t(2),a=t(19),o=t(7),r=t(0),s=t(17),c=t(47).KEY,u=t(3),p=t(65),l=t(60),f=t(50),d=t(5),m=t(133),h=t(92),v=t(211),x=t(76),b=t(1),g=t(4),y=t(9),k=t(20),w=t(36),S=t(49),j=t(53),_=t(136),O=t(21),E=t(75),P=t(8),C=t(51),A=O.f,M=P.f,F=_.f,N=i.Symbol,T=i.JSON,R=T&&T.stringify,B=d("_hidden"),I=d("toPrimitive"),L={}.propertyIsEnumerable,z=p("symbol-registry"),D=p("symbols"),q=p("op-symbols"),U=Object.prototype,$="function"==typeof N&&!!E.f,V=i.QObject,W=!V||!V.prototype||!V.prototype.findChild,G=o&&u((function(){return 7!=j(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a}))?function(e,n,t){var i=A(U,n);i&&delete U[n],M(e,n,t),i&&e!==U&&M(U,n,i)}:M,H=function(e){var n=D[e]=j(N.prototype);return n._k=e,n},K=$&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},J=function(e,n,t){return e===U&&J(q,n,t),b(e),n=w(n,!0),b(t),a(D,n)?(t.enumerable?(a(e,B)&&e[B][n]&&(e[B][n]=!1),t=j(t,{enumerable:S(0,!1)})):(a(e,B)||M(e,B,S(1,{})),e[B][n]=!0),G(e,n,t)):M(e,n,t)},Y=function(e,n){b(e);for(var t,i=v(n=k(n)),a=0,o=i.length;o>a;)J(e,t=i[a++],n[t]);return e},X=function(e){var n=L.call(this,e=w(e,!0));return!(this===U&&a(D,e)&&!a(q,e))&&(!(n||!a(this,e)||!a(D,e)||a(this,B)&&this[B][e])||n)},Z=function(e,n){if(e=k(e),n=w(n,!0),e!==U||!a(D,n)||a(q,n)){var t=A(e,n);return!t||!a(D,n)||a(e,B)&&e[B][n]||(t.enumerable=!0),t}},Q=function(e){for(var n,t=F(k(e)),i=[],o=0;t.length>o;)a(D,n=t[o++])||n==B||n==c||i.push(n);return i},ee=function(e){for(var n,t=e===U,i=F(t?q:k(e)),o=[],r=0;i.length>r;)!a(D,n=i[r++])||t&&!a(U,n)||o.push(D[n]);return o};$||(s((N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),n=function(t){this===U&&n.call(q,t),a(this,B)&&a(this[B],e)&&(this[B][e]=!1),G(this,e,S(1,t))};return o&&W&&G(U,e,{configurable:!0,set:n}),H(e)}).prototype,"toString",(function(){return this._k})),O.f=Z,P.f=J,t(54).f=_.f=Q,t(67).f=X,E.f=ee,o&&!t(46)&&s(U,"propertyIsEnumerable",X,!0),m.f=function(e){return H(d(e))}),r(r.G+r.W+r.F*!$,{Symbol:N});for(var ne="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ne.length>te;)d(ne[te++]);for(var ie=C(d.store),ae=0;ie.length>ae;)h(ie[ae++]);r(r.S+r.F*!$,"Symbol",{for:function(e){return a(z,e+="")?z[e]:z[e]=N(e)},keyFor:function(e){if(!K(e))throw TypeError(e+" is not a symbol!");for(var n in z)if(z[n]===e)return n},useSetter:function(){W=!0},useSimple:function(){W=!1}}),r(r.S+r.F*!$,"Object",{create:function(e,n){return void 0===n?j(e):Y(j(e),n)},defineProperty:J,defineProperties:Y,getOwnPropertyDescriptor:Z,getOwnPropertyNames:Q,getOwnPropertySymbols:ee});var oe=u((function(){E.f(1)}));r(r.S+r.F*oe,"Object",{getOwnPropertySymbols:function(e){return E.f(y(e))}}),T&&r(r.S+r.F*(!$||u((function(){var e=N();return"[null]"!=R([e])||"{}"!=R({a:e})||"{}"!=R(Object(e))}))),"JSON",{stringify:function(e){for(var n,t,i=[e],a=1;arguments.length>a;)i.push(arguments[a++]);if(t=n=i[1],(g(n)||void 0!==e)&&!K(e))return x(n)||(n=function(e,n){if("function"==typeof t&&(n=t.call(this,e,n)),!K(n))return n}),i[1]=n,R.apply(T,i)}}),N.prototype[I]||t(16)(N.prototype,I,N.prototype.valueOf),l(N,"Symbol"),l(Math,"Math",!0),l(i.JSON,"JSON",!0)},function(e,n){var t=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=t)},function(e,n,t){var i=t(12);e.exports=function(e,n,t){if(i(e),void 0===n)return e;switch(t){case 1:return function(t){return e.call(n,t)};case 2:return function(t,i){return e.call(n,t,i)};case 3:return function(t,i,a){return e.call(n,t,i,a)}}return function(){return e.apply(n,arguments)}}},function(e,n){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,n){var t=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:t)(e)}},function(e,n,t){var i=t(0);i(i.S+i.F*!t(7),"Object",{defineProperties:t(135)})},function(e,n,t){var i=t(20),a=t(21).f;t(38)("getOwnPropertyDescriptor",(function(){return function(e,n){return a(i(e),n)}}))},function(e,n,t){"use strict";var i=t(3);e.exports=function(e,n){return!!e&&i((function(){n?e.call(null,(function(){}),1):e.call(null)}))}},function(e,n,t){"use strict";var i=t(0),a=t(39)(2);i(i.P+i.F*!t(31)([].filter,!0),"Array",{filter:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i,a,o,r,s=t(46),c=t(2),u=t(26),p=t(61),l=t(0),f=t(4),d=t(12),m=t(56),h=t(57),v=t(70),x=t(116).set,b=t(117)(),g=t(118),y=t(156),k=t(82),w=t(157),S=c.TypeError,j=c.process,_=j&&j.versions,O=_&&_.v8||"",E=c.Promise,P="process"==p(j),C=function(){},A=a=g.f,M=!!function(){try{var e=E.resolve(1),n=(e.constructor={})[t(5)("species")]=function(e){e(C,C)};return(P||"function"==typeof PromiseRejectionEvent)&&e.then(C)instanceof n&&0!==O.indexOf("6.6")&&-1===k.indexOf("Chrome/66")}catch(e){}}(),F=function(e){var n;return!(!f(e)||"function"!=typeof(n=e.then))&&n},N=function(e,n){if(!e._n){e._n=!0;var t=e._c;b((function(){for(var i=e._v,a=1==e._s,o=0,r=function(n){var t,o,r,s=a?n.ok:n.fail,c=n.resolve,u=n.reject,p=n.domain;try{s?(a||(2==e._h&&B(e),e._h=1),!0===s?t=i:(p&&p.enter(),t=s(i),p&&(p.exit(),r=!0)),t===n.promise?u(S("Promise-chain cycle")):(o=F(t))?o.call(t,c,u):c(t)):u(i)}catch(e){p&&!r&&p.exit(),u(e)}};t.length>o;)r(t[o++]);e._c=[],e._n=!1,n&&!e._h&&T(e)}))}},T=function(e){x.call(c,(function(){var n,t,i,a=e._v,o=R(e);if(o&&(n=y((function(){P?j.emit("unhandledRejection",a,e):(t=c.onunhandledrejection)?t({promise:e,reason:a}):(i=c.console)&&i.error&&i.error("Unhandled promise rejection",a)})),e._h=P||R(e)?2:1),e._a=void 0,o&&n.e)throw n.v}))},R=function(e){return 1!==e._h&&0===(e._a||e._c).length},B=function(e){x.call(c,(function(){var n;P?j.emit("rejectionHandled",e):(n=c.onrejectionhandled)&&n({promise:e,reason:e._v})}))},I=function(e){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=e,n._s=2,n._a||(n._a=n._c.slice()),N(n,!0))},L=function(e){var n,t=this;if(!t._d){t._d=!0,t=t._w||t;try{if(t===e)throw S("Promise can't be resolved itself");(n=F(e))?b((function(){var i={_w:t,_d:!1};try{n.call(e,u(L,i,1),u(I,i,1))}catch(e){I.call(i,e)}})):(t._v=e,t._s=1,N(t,!1))}catch(e){I.call({_w:t,_d:!1},e)}}};M||(E=function(e){m(this,E,"Promise","_h"),d(e),i.call(this);try{e(u(L,this,1),u(I,this,1))}catch(e){I.call(this,e)}},(i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=t(58)(E.prototype,{then:function(e,n){var t=A(v(this,E));return t.ok="function"!=typeof e||e,t.fail="function"==typeof n&&n,t.domain=P?j.domain:void 0,this._c.push(t),this._a&&this._a.push(t),this._s&&N(this,!1),t.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new i;this.promise=e,this.resolve=u(L,e,1),this.reject=u(I,e,1)},g.f=A=function(e){return e===E||e===r?new o(e):a(e)}),l(l.G+l.W+l.F*!M,{Promise:E}),t(60)(E,"Promise"),t(55)("Promise"),r=t(25).Promise,l(l.S+l.F*!M,"Promise",{reject:function(e){var n=A(this);return(0,n.reject)(e),n.promise}}),l(l.S+l.F*(s||!M),"Promise",{resolve:function(e){return w(s&&this===r?E:this,e)}}),l(l.S+l.F*!(M&&t(79)((function(e){E.all(e).catch(C)}))),"Promise",{all:function(e){var n=this,t=A(n),i=t.resolve,a=t.reject,o=y((function(){var t=[],o=0,r=1;h(e,!1,(function(e){var s=o++,c=!1;t.push(void 0),r++,n.resolve(e).then((function(e){c||(c=!0,t[s]=e,--r||i(t))}),a)})),--r||i(t)}));return o.e&&a(o.v),t.promise},race:function(e){var n=this,t=A(n),i=t.reject,a=y((function(){h(e,!1,(function(e){n.resolve(e).then(t.resolve,i)}))}));return a.e&&i(a.v),t.promise}})},function(e,n,t){var i=t(0),a=t(164),o=t(20),r=t(21),s=t(109);i(i.S,"Object",{getOwnPropertyDescriptors:function(e){for(var n,t,i=o(e),c=r.f,u=a(i),p={},l=0;u.length>l;)void 0!==(t=c(i,n=u[l++]))&&s(p,n,t);return p}})},function(e,n){e.exports=function(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){var i=t(4);e.exports=function(e,n){if(!i(e))return e;var t,a;if(n&&"function"==typeof(t=e.toString)&&!i(a=t.call(e)))return a;if("function"==typeof(t=e.valueOf)&&!i(a=t.call(e)))return a;if(!n&&"function"==typeof(t=e.toString)&&!i(a=t.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,t){var i=t(0),a=t(25),o=t(3);e.exports=function(e,n){var t=(a.Object||{})[e]||Object[e],r={};r[e]=n(t),i(i.S+i.F*o((function(){t(1)})),"Object",r)}},function(e,n,t){var i=t(26),a=t(66),o=t(9),r=t(6),s=t(111);e.exports=function(e,n){var t=1==e,c=2==e,u=3==e,p=4==e,l=6==e,f=5==e||l,d=n||s;return function(n,s,m){for(var h,v,x=o(n),b=a(x),g=i(s,m,3),y=r(b.length),k=0,w=t?d(n,y):c?d(n,0):void 0;y>k;k++)if((f||k in b)&&(v=g(h=b[k],k,x),e))if(t)w[k]=v;else if(v)switch(e){case 3:return!0;case 5:return h;case 6:return k;case 2:w.push(h)}else if(p)return!1;return l?-1:u||p?p:w}}},function(e,n,t){"use strict";t(10),Object.defineProperty(n,"__esModule",{value:!0}),n.baseUrl=n.ERROR_NO_CREDENTIALS_PROVIDED=void 0;n.baseUrl="https://api.pinata.cloud";n.ERROR_NO_CREDENTIALS_PROVIDED="No credentials provided! Please provide your pinata api key and pinata secret api key or your pinata JWT key as an argument when you start this script"},function(e,n,t){"use strict";if(t(7)){var i=t(46),a=t(2),o=t(3),r=t(0),s=t(84),c=t(119),u=t(26),p=t(56),l=t(49),f=t(16),d=t(58),m=t(28),h=t(6),v=t(163),x=t(52),b=t(36),g=t(19),y=t(61),k=t(4),w=t(9),S=t(108),j=t(53),_=t(22),O=t(54).f,E=t(110),P=t(50),C=t(5),A=t(39),M=t(74),F=t(70),N=t(113),T=t(63),R=t(79),B=t(55),I=t(112),L=t(152),z=t(8),D=t(21),q=z.f,U=D.f,$=a.RangeError,V=a.TypeError,W=a.Uint8Array,G=Array.prototype,H=c.ArrayBuffer,K=c.DataView,J=A(0),Y=A(2),X=A(3),Z=A(4),Q=A(5),ee=A(6),ne=M(!0),te=M(!1),ie=N.values,ae=N.keys,oe=N.entries,re=G.lastIndexOf,se=G.reduce,ce=G.reduceRight,ue=G.join,pe=G.sort,le=G.slice,fe=G.toString,de=G.toLocaleString,me=C("iterator"),he=C("toStringTag"),ve=P("typed_constructor"),xe=P("def_constructor"),be=s.CONSTR,ge=s.TYPED,ye=s.VIEW,ke=A(1,(function(e,n){return Oe(F(e,e[xe]),n)})),we=o((function(){return 1===new W(new Uint16Array([1]).buffer)[0]})),Se=!!W&&!!W.prototype.set&&o((function(){new W(1).set({})})),je=function(e,n){var t=m(e);if(t<0||t%n)throw $("Wrong offset!");return t},_e=function(e){if(k(e)&&ge in e)return e;throw V(e+" is not a typed array!")},Oe=function(e,n){if(!(k(e)&&ve in e))throw V("It is not a typed array constructor!");return new e(n)},Ee=function(e,n){return Pe(F(e,e[xe]),n)},Pe=function(e,n){for(var t=0,i=n.length,a=Oe(e,i);i>t;)a[t]=n[t++];return a},Ce=function(e,n,t){q(e,n,{get:function(){return this._d[t]}})},Ae=function(e){var n,t,i,a,o,r,s=w(e),c=arguments.length,p=c>1?arguments[1]:void 0,l=void 0!==p,f=E(s);if(null!=f&&!S(f)){for(r=f.call(s),i=[],n=0;!(o=r.next()).done;n++)i.push(o.value);s=i}for(l&&c>2&&(p=u(p,arguments[2],2)),n=0,t=h(s.length),a=Oe(this,t);t>n;n++)a[n]=l?p(s[n],n):s[n];return a},Me=function(){for(var e=0,n=arguments.length,t=Oe(this,n);n>e;)t[e]=arguments[e++];return t},Fe=!!W&&o((function(){de.call(new W(1))})),Ne=function(){return de.apply(Fe?le.call(_e(this)):_e(this),arguments)},Te={copyWithin:function(e,n){return L.call(_e(this),e,n,arguments.length>2?arguments[2]:void 0)},every:function(e){return Z(_e(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return I.apply(_e(this),arguments)},filter:function(e){return Ee(this,Y(_e(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Q(_e(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(_e(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){J(_e(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return te(_e(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return ne(_e(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return ue.apply(_e(this),arguments)},lastIndexOf:function(e){return re.apply(_e(this),arguments)},map:function(e){return ke(_e(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(_e(this),arguments)},reduceRight:function(e){return ce.apply(_e(this),arguments)},reverse:function(){for(var e,n=_e(this).length,t=Math.floor(n/2),i=0;i<t;)e=this[i],this[i++]=this[--n],this[n]=e;return this},some:function(e){return X(_e(this),e,arguments.length>1?arguments[1]:void 0)},sort:function(e){return pe.call(_e(this),e)},subarray:function(e,n){var t=_e(this),i=t.length,a=x(e,i);return new(F(t,t[xe]))(t.buffer,t.byteOffset+a*t.BYTES_PER_ELEMENT,h((void 0===n?i:x(n,i))-a))}},Re=function(e,n){return Ee(this,le.call(_e(this),e,n))},Be=function(e){_e(this);var n=je(arguments[1],1),t=this.length,i=w(e),a=h(i.length),o=0;if(a+n>t)throw $("Wrong length!");for(;o<a;)this[n+o]=i[o++]},Ie={entries:function(){return oe.call(_e(this))},keys:function(){return ae.call(_e(this))},values:function(){return ie.call(_e(this))}},Le=function(e,n){return k(e)&&e[ge]&&"symbol"!=typeof n&&n in e&&String(+n)==String(n)},ze=function(e,n){return Le(e,n=b(n,!0))?l(2,e[n]):U(e,n)},De=function(e,n,t){return!(Le(e,n=b(n,!0))&&k(t)&&g(t,"value"))||g(t,"get")||g(t,"set")||t.configurable||g(t,"writable")&&!t.writable||g(t,"enumerable")&&!t.enumerable?q(e,n,t):(e[n]=t.value,e)};be||(D.f=ze,z.f=De),r(r.S+r.F*!be,"Object",{getOwnPropertyDescriptor:ze,defineProperty:De}),o((function(){fe.call({})}))&&(fe=de=function(){return ue.call(this)});var qe=d({},Te);d(qe,Ie),f(qe,me,Ie.values),d(qe,{slice:Re,set:Be,constructor:function(){},toString:fe,toLocaleString:Ne}),Ce(qe,"buffer","b"),Ce(qe,"byteOffset","o"),Ce(qe,"byteLength","l"),Ce(qe,"length","e"),q(qe,he,{get:function(){return this[ge]}}),e.exports=function(e,n,t,c){var u=e+((c=!!c)?"Clamped":"")+"Array",l="get"+e,d="set"+e,m=a[u],x=m||{},b=m&&_(m),g=!m||!s.ABV,w={},S=m&&m.prototype,E=function(e,t){q(e,t,{get:function(){return function(e,t){var i=e._d;return i.v[l](t*n+i.o,we)}(this,t)},set:function(e){return function(e,t,i){var a=e._d;c&&(i=(i=Math.round(i))<0?0:i>255?255:255&i),a.v[d](t*n+a.o,i,we)}(this,t,e)},enumerable:!0})};g?(m=t((function(e,t,i,a){p(e,m,u,"_d");var o,r,s,c,l=0,d=0;if(k(t)){if(!(t instanceof H||"ArrayBuffer"==(c=y(t))||"SharedArrayBuffer"==c))return ge in t?Pe(m,t):Ae.call(m,t);o=t,d=je(i,n);var x=t.byteLength;if(void 0===a){if(x%n)throw $("Wrong length!");if((r=x-d)<0)throw $("Wrong length!")}else if((r=h(a)*n)+d>x)throw $("Wrong length!");s=r/n}else s=v(t),o=new H(r=s*n);for(f(e,"_d",{b:o,o:d,l:r,e:s,v:new K(o)});l<s;)E(e,l++)})),S=m.prototype=j(qe),f(S,"constructor",m)):o((function(){m(1)}))&&o((function(){new m(-1)}))&&R((function(e){new m,new m(null),new m(1.5),new m(e)}),!0)||(m=t((function(e,t,i,a){var o;return p(e,m,u),k(t)?t instanceof H||"ArrayBuffer"==(o=y(t))||"SharedArrayBuffer"==o?void 0!==a?new x(t,je(i,n),a):void 0!==i?new x(t,je(i,n)):new x(t):ge in t?Pe(m,t):Ae.call(m,t):new x(v(t))})),J(b!==Function.prototype?O(x).concat(O(b)):O(x),(function(e){e in m||f(m,e,x[e])})),m.prototype=S,i||(S.constructor=m));var P=S[me],C=!!P&&("values"==P.name||null==P.name),A=Ie.values;f(m,ve,!0),f(S,ge,u),f(S,ye,!0),f(S,xe,m),(c?new m(1)[he]==u:he in S)||q(S,he,{get:function(){return u}}),w[u]=m,r(r.G+r.W+r.F*(m!=x),w),r(r.S,u,{BYTES_PER_ELEMENT:n}),r(r.S+r.F*o((function(){x.of.call(m,1)})),u,{from:Ae,of:Me}),"BYTES_PER_ELEMENT"in S||f(S,"BYTES_PER_ELEMENT",n),r(r.P,u,Te),B(u),r(r.P+r.F*Se,u,{set:Be}),r(r.P+r.F*!C,u,Ie),i||S.toString==fe||(S.toString=fe),r(r.P+r.F*o((function(){new m(1).slice()})),u,{slice:Re}),r(r.P+r.F*(o((function(){return[1,2].toLocaleString()!=new m([1,2]).toLocaleString()}))||!o((function(){S.toLocaleString.call([1,2])}))),u,{toLocaleString:Ne}),T[u]=C?P:A,i||C||f(S,me,A)}}else e.exports=function(){}},function(e,n,t){var i=t(158),a=t(0),o=t(65)("metadata"),r=o.store||(o.store=new(t(161))),s=function(e,n,t){var a=r.get(e);if(!a){if(!t)return;r.set(e,a=new i)}var o=a.get(n);if(!o){if(!t)return;a.set(n,o=new i)}return o};e.exports={store:r,map:s,has:function(e,n,t){var i=s(n,t,!1);return void 0!==i&&i.has(e)},get:function(e,n,t){var i=s(n,t,!1);return void 0===i?void 0:i.get(e)},set:function(e,n,t,i){s(t,i,!0).set(e,n)},keys:function(e,n){var t=s(e,n,!1),i=[];return t&&t.forEach((function(e,n){i.push(n)})),i},key:function(e){return void 0===e||"symbol"==typeof e?e:String(e)},exp:function(e){a(a.S,"Reflect",e)}}},function(e,n,t){e.exports=t(395)},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.createConfigForAxiosHeaders=p,n.createConfigForAxiosHeadersWithFormData=function(e,n){var t=u(u({},p(e)),{},{maxContentLength:1/0,maxBodyLength:1/0});return t.headers["Content-type"]="multipart/form-data; boundary=".concat(n),t},n.validateApiKeys=function(e,n){if(!e||""===e)throw new Error("No pinataApiKey provided! Please provide your pinata api key as an argument when you start this script");if(!n||""===n)throw new Error("No pinataSecretApiKey provided! Please provide your pinata secret api key as an argument when you start this script")},n.validateHostNodes=l,n.validateMetadata=function(e){if(e.name&&!("string"==typeof e.name||e.name instanceof String))throw new Error("metadata name must be of type string");if(e.keyvalues){if("object"!==(0,a.default)(e.keyvalues))throw new Error("metatadata keyvalues must be an object");var n=0;Object.entries(e.keyvalues).forEach((function(e){if(n>9)throw new Error("No more than 10 keyvalues can be provided for metadata entries");if("string"!=typeof e[1]&&"boolean"!=typeof e[1]&&isNaN(e[1]))throw new Error("Metadata keyvalue values must be strings, booleans, or numbers");n++}))}},n.validatePinPolicyStructure=f,n.validatePinataOptions=function(e){if("object"!==(0,a.default)(e))throw new Error("options must be an object");if(e.cidVersion&&0!=e.cidVersion&&1!=e.cidVersion)throw new Error("unsupported or invalid cidVersion");if(e.wrapWithDirectory&&!0!==e.wrapWithDirectory&&!1!==e.wrapWithDirectory)throw new Error("wrapWithDirectory must be a boolean value of true or false");e.hostNodes&&l(e.hostNodes);e.customPinPolicy&&f(e.customPinPolicy)},t(148),t(11),t(68),t(120),t(23),t(101),t(98),t(14),t(24),t(32),t(30),t(34),t(29),t(10);var a=i(t(71)),o=i(t(35)),r=i(t(72)),s=t(40);function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function u(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){(0,o.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function p(e){if(e.pinataApiKey&&e.pinataApiKey.length>0&&e.pinataSecretApiKey&&e.pinataSecretApiKey.length>0)return{withCredentials:!0,headers:{pinata_api_key:e.pinataApiKey,pinata_secret_api_key:e.pinataSecretApiKey}};if(e.pinataJWTKey&&e.pinataJWTKey.length>0)return{headers:{Authorization:"Bearer ".concat(e.pinataJWTKey)}};throw new Error(s.ERROR_NO_CREDENTIALS_PROVIDED)}function l(e){if(!Array.isArray(e))throw new Error("host_nodes value must be an array");e.forEach((function(e){if(!r.default.peerMultiaddr(e))throw new Error("host_node array entry: ".concat(e," is not a valid peer multiaddr"))}))}function f(e){if(!e)throw new Error("No pin policy provided");if(!e.regions)throw new Error("No regions provided in pin policy");e.regions.length&&e.regions.forEach((function(e){if(!e.id||"[object String]"!==Object.prototype.toString.call(e.id))throw new Error("region id must be a string");if(!e.desiredReplicationCount&&0!==e.desiredReplicationCount||!Number.isInteger(e.desiredReplicationCount))throw new Error("desiredReplicationCount must be an integer")}))}},function(e,n,t){"use strict";t(10),Object.defineProperty(n,"__esModule",{value:!0}),n.handleError=void 0;n.handleError=function(e){return e&&e.response&&e.response&&e.response.data&&e.response.data.error?e.response.data.error:e.data&&e.data.error?e.data.error:e.response&&e.response.error?e.response.error:e}},function(e,n){e.exports=!1},function(e,n,t){var i=t(50)("meta"),a=t(4),o=t(19),r=t(8).f,s=0,c=Object.isExtensible||function(){return!0},u=!t(3)((function(){return c(Object.preventExtensions({}))})),p=function(e){r(e,i,{value:{i:"O"+ ++s,w:{}}})},l=e.exports={KEY:i,NEED:!1,fastKey:function(e,n){if(!a(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,i)){if(!c(e))return"F";if(!n)return"E";p(e)}return e[i].i},getWeak:function(e,n){if(!o(e,i)){if(!c(e))return!0;if(!n)return!1;p(e)}return e[i].w},onFreeze:function(e){return u&&l.NEED&&c(e)&&!o(e,i)&&p(e),e}}},function(e,n,t){var i=t(5)("unscopables"),a=Array.prototype;null==a[i]&&t(16)(a,i,{}),e.exports=function(e){a[i][e]=!0}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n){var t=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+i).toString(36))}},function(e,n,t){var i=t(134),a=t(94);e.exports=Object.keys||function(e){return i(e,a)}},function(e,n,t){var i=t(28),a=Math.max,o=Math.min;e.exports=function(e,n){return(e=i(e))<0?a(e+n,0):o(e,n)}},function(e,n,t){var i=t(1),a=t(135),o=t(94),r=t(93)("IE_PROTO"),s=function(){},c=function(){var e,n=t(91)("iframe"),i=o.length;for(n.style.display="none",t(95).appendChild(n),n.src="javascript:",(e=n.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;i--;)delete c.prototype[o[i]];return c()};e.exports=Object.create||function(e,n){var t;return null!==e?(s.prototype=i(e),t=new s,s.prototype=null,t[r]=e):t=c(),void 0===n?t:a(t,n)}},function(e,n,t){var i=t(134),a=t(94).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(e){return i(e,a)}},function(e,n,t){"use strict";var i=t(2),a=t(8),o=t(7),r=t(5)("species");e.exports=function(e){var n=i[e];o&&n&&!n[r]&&a.f(n,r,{configurable:!0,get:function(){return this}})}},function(e,n){e.exports=function(e,n,t,i){if(!(e instanceof n)||void 0!==i&&i in e)throw TypeError(t+": incorrect invocation!");return e}},function(e,n,t){var i=t(26),a=t(149),o=t(108),r=t(1),s=t(6),c=t(110),u={},p={};(n=e.exports=function(e,n,t,l,f){var d,m,h,v,x=f?function(){return e}:c(e),b=i(t,l,n?2:1),g=0;if("function"!=typeof x)throw TypeError(e+" is not iterable!");if(o(x)){for(d=s(e.length);d>g;g++)if((v=n?b(r(m=e[g])[0],m[1]):b(e[g]))===u||v===p)return v}else for(h=x.call(e);!(m=h.next()).done;)if((v=a(h,b,m.value,n))===u||v===p)return v}).BREAK=u,n.RETURN=p},function(e,n,t){var i=t(17);e.exports=function(e,n,t){for(var a in n)i(e,a,n[a],t);return e}},function(e,n,t){var i=t(4);e.exports=function(e,n){if(!i(e)||e._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return e}},function(e,n,t){var i=t(8).f,a=t(19),o=t(5)("toStringTag");e.exports=function(e,n,t){e&&!a(e=t?e:e.prototype,o)&&i(e,o,{configurable:!0,value:n})}},function(e,n,t){var i=t(27),a=t(5)("toStringTag"),o="Arguments"==i(function(){return arguments}());e.exports=function(e){var n,t,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,n){try{return e[n]}catch(e){}}(n=Object(e),a))?t:o?i(n):"Object"==(r=i(n))&&"function"==typeof n.callee?"Arguments":r}},function(e,n,t){var i=t(0),a=t(37),o=t(3),r=t(97),s="["+r+"]",c=RegExp("^"+s+s+"*"),u=RegExp(s+s+"*$"),p=function(e,n,t){var a={},s=o((function(){return!!r[e]()||"​…"!="​…"[e]()})),c=a[e]=s?n(l):r[e];t&&(a[t]=c),i(i.P+i.F*s,"String",a)},l=p.trim=function(e,n){return e=String(a(e)),1&n&&(e=e.replace(c,"")),2&n&&(e=e.replace(u,"")),e};e.exports=p},function(e,n){e.exports={}},function(e,n,t){e.exports={encode:t(424),decode:t(425),encodingLength:t(426)}},function(e,n,t){var i=t(25),a=t(2),o=a["__core-js_shared__"]||(a["__core-js_shared__"]={});(e.exports=function(e,n){return o[e]||(o[e]=void 0!==n?n:{})})("versions",[]).push({version:i.version,mode:t(46)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,n,t){var i=t(27);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,n){n.f={}.propertyIsEnumerable},function(e,n,t){var i=t(8).f,a=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in a||t(7)&&i(a,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(e){return""}}})},function(e,n,t){"use strict";var i=t(1);e.exports=function(){var e=i(this),n="";return e.global&&(n+="g"),e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),e.sticky&&(n+="y"),n}},function(e,n,t){var i=t(1),a=t(12),o=t(5)("species");e.exports=function(e,n){var t,r=i(e).constructor;return void 0===r||null==(t=i(r)[o])?n:a(t)}},function(e,n){function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){"use strict";const i=t(90),a=t(126),o=t(186),r=t(187),s=t(445),c=t(128),u=/^https?:\/\/[^/]+\/(ip(f|n)s)\/((\w+).*)/,p=/^\/(ip(f|n)s)\/((\w+).*)/,l=/^https?:\/\/([^/]+)\.(ip(?:f|n)s)\.[^/]+/;function f(e){try{return new c(e),!0}catch(e){return!1}}function d(e){if(!e)return!1;if(r.isMultiaddr(e))return!0;try{return new r(e),!0}catch(e){return!1}}function m(e,n,t=1,i=4){const a=x(e);if(!a)return!1;const o=a.match(n);if(!o)return!1;if("ipfs"!==o[t])return!1;let r=o[i];return r&&n===l&&(r=r.toLowerCase()),f(r)}function h(e,n,t=1,i){const a=x(e);if(!a)return!1;const o=a.match(n);if(!o)return!1;if("ipns"!==o[t])return!1;if(i&&n===l){let e=o[i];return e=e.toLowerCase(),f(e)}return!0}function v(e){return"string"==typeof e}function x(e){return Buffer.isBuffer(e)?i.encode(e):!!v(e)&&e}const b=e=>m(e,l,2,1),g=e=>h(e,l,2,1);e.exports={multihash:function(e){const n=x(e);try{const e=Buffer.from(i.decode(n));return a.decode(e),!0}catch(e){return!1}},multiaddr:d,peerMultiaddr:function(e){return d(e)&&s.IPFS.matches(e)},cid:f,base32cid:e=>"base32"===function(e){try{return o.isEncoded(e)}catch(e){return!1}}(e)&&f(e),ipfsSubdomain:b,ipnsSubdomain:g,subdomain:e=>b(e)||g(e),subdomainPattern:l,ipfsUrl:e=>m(e,u),ipnsUrl:e=>h(e,u),url:e=>m(e,u)||h(e,u),urlPattern:u,ipfsPath:e=>m(e,p),ipnsPath:e=>h(e,p),path:e=>m(e,p)||h(e,p),pathPattern:p,urlOrPath:e=>m(e,u)||h(e,u)||m(e,p)||h(e,p),cidPath:e=>v(e)&&!f(e)&&m(`/ipfs/${e}`,p)}},function(e){e.exports=JSON.parse('{"identity":0,"ip4":4,"tcp":6,"sha1":17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"dccp":33,"murmur3-128":34,"murmur3-32":35,"ip6":41,"ip6zone":42,"path":47,"multicodec":48,"multihash":49,"multiaddr":50,"multibase":51,"dns":53,"dns4":54,"dns6":55,"dnsaddr":56,"protobuf":80,"cbor":81,"raw":85,"dbl-sha2-256":86,"rlp":96,"bencode":99,"dag-pb":112,"dag-cbor":113,"libp2p-key":114,"git-raw":120,"torrent-info":123,"torrent-file":124,"leofcoin-block":129,"leofcoin-tx":130,"leofcoin-pr":131,"sctp":132,"eth-block":144,"eth-block-list":145,"eth-tx-trie":146,"eth-tx":147,"eth-tx-receipt-trie":148,"eth-tx-receipt":149,"eth-state-trie":150,"eth-account-snapshot":151,"eth-storage-trie":152,"bitcoin-block":176,"bitcoin-tx":177,"zcash-block":192,"zcash-tx":193,"stellar-block":208,"stellar-tx":209,"md4":212,"md5":213,"bmt":214,"decred-block":224,"decred-tx":225,"ipld-ns":226,"ipfs-ns":227,"swarm-ns":228,"ipns-ns":229,"zeronet":230,"ed25519-pub":237,"dash-block":240,"dash-tx":241,"swarm-manifest":250,"swarm-feed":251,"udp":273,"p2p-webrtc-star":275,"p2p-webrtc-direct":276,"p2p-stardust":277,"p2p-circuit":290,"dag-json":297,"udt":301,"utp":302,"unix":400,"p2p":421,"ipfs":421,"https":443,"onion":444,"onion3":445,"garlic64":446,"garlic32":447,"tls":448,"quic":460,"ws":477,"wss":478,"p2p-websocket-star":479,"http":480,"json":512,"messagepack":513,"x11":4352,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46000,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"holochain-adr-v0":8417572,"holochain-adr-v1":8483108,"holochain-key-v0":9728292,"holochain-key-v1":9793828,"holochain-sig-v0":10645796,"holochain-sig-v1":10711332}')},function(e,n,t){var i=t(20),a=t(6),o=t(52);e.exports=function(e){return function(n,t,r){var s,c=i(n),u=a(c.length),p=o(r,u);if(e&&t!=t){for(;u>p;)if((s=c[p++])!=s)return!0}else for(;u>p;p++)if((e||p in c)&&c[p]===t)return e||p||0;return!e&&-1}}},function(e,n){n.f=Object.getOwnPropertySymbols},function(e,n,t){var i=t(27);e.exports=Array.isArray||function(e){return"Array"==i(e)}},function(e,n,t){var i=t(28),a=t(37);e.exports=function(e){return function(n,t){var o,r,s=String(a(n)),c=i(t),u=s.length;return c<0||c>=u?e?"":void 0:(o=s.charCodeAt(c))<55296||o>56319||c+1===u||(r=s.charCodeAt(c+1))<56320||r>57343?e?s.charAt(c):o:e?s.slice(c,c+2):r-56320+(o-55296<<10)+65536}}},function(e,n,t){var i=t(4),a=t(27),o=t(5)("match");e.exports=function(e){var n;return i(e)&&(void 0!==(n=e[o])?!!n:"RegExp"==a(e))}},function(e,n,t){var i=t(5)("iterator"),a=!1;try{var o=[7][i]();o.return=function(){a=!0},Array.from(o,(function(){throw 2}))}catch(e){}e.exports=function(e,n){if(!n&&!a)return!1;var t=!1;try{var o=[7],r=o[i]();r.next=function(){return{done:t=!0}},o[i]=function(){return r},e(o)}catch(e){}return t}},function(e,n,t){"use strict";var i=t(61),a=RegExp.prototype.exec;e.exports=function(e,n){var t=e.exec;if("function"==typeof t){var o=t.call(e,n);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==i(e))throw new TypeError("RegExp#exec called on incompatible receiver");return a.call(e,n)}},function(e,n,t){"use strict";t(154);var i=t(17),a=t(16),o=t(3),r=t(37),s=t(5),c=t(114),u=s("species"),p=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),l=function(){var e=/(?:)/,n=e.exec;e.exec=function(){return n.apply(this,arguments)};var t="ab".split(e);return 2===t.length&&"a"===t[0]&&"b"===t[1]}();e.exports=function(e,n,t){var f=s(e),d=!o((function(){var n={};return n[f]=function(){return 7},7!=""[e](n)})),m=d?!o((function(){var n=!1,t=/a/;return t.exec=function(){return n=!0,null},"split"===e&&(t.constructor={},t.constructor[u]=function(){return t}),t[f](""),!n})):void 0;if(!d||!m||"replace"===e&&!p||"split"===e&&!l){var h=/./[f],v=t(r,f,""[e],(function(e,n,t,i,a){return n.exec===c?d&&!a?{done:!0,value:h.call(n,t,i)}:{done:!0,value:e.call(t,n,i)}:{done:!1}})),x=v[0],b=v[1];i(String.prototype,e,x),a(RegExp.prototype,f,2==n?function(e,n){return b.call(e,this,n)}:function(e){return b.call(e,this)})}}},function(e,n,t){var i=t(2).navigator;e.exports=i&&i.userAgent||""},function(e,n,t){"use strict";var i=t(2),a=t(0),o=t(17),r=t(58),s=t(47),c=t(57),u=t(56),p=t(4),l=t(3),f=t(79),d=t(60),m=t(99);e.exports=function(e,n,t,h,v,x){var b=i[e],g=b,y=v?"set":"add",k=g&&g.prototype,w={},S=function(e){var n=k[e];o(k,e,"delete"==e||"has"==e?function(e){return!(x&&!p(e))&&n.call(this,0===e?0:e)}:"get"==e?function(e){return x&&!p(e)?void 0:n.call(this,0===e?0:e)}:"add"==e?function(e){return n.call(this,0===e?0:e),this}:function(e,t){return n.call(this,0===e?0:e,t),this})};if("function"==typeof g&&(x||k.forEach&&!l((function(){(new g).entries().next()})))){var j=new g,_=j[y](x?{}:-0,1)!=j,O=l((function(){j.has(1)})),E=f((function(e){new g(e)})),P=!x&&l((function(){for(var e=new g,n=5;n--;)e[y](n,n);return!e.has(-0)}));E||((g=n((function(n,t){u(n,g,e);var i=m(new b,n,g);return null!=t&&c(t,v,i[y],i),i}))).prototype=k,k.constructor=g),(O||P)&&(S("delete"),S("has"),v&&S("get")),(P||_)&&S(y),x&&k.clear&&delete k.clear}else g=h.getConstructor(n,e,v,y),r(g.prototype,t),s.NEED=!0;return d(g,e),w[e]=g,a(a.G+a.W+a.F*(g!=b),w),x||h.setStrong(g,e,v),g}},function(e,n,t){for(var i,a=t(2),o=t(16),r=t(50),s=r("typed_array"),c=r("view"),u=!(!a.ArrayBuffer||!a.DataView),p=u,l=0,f="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(i=a[f[l++]])?(o(i.prototype,s,!0),o(i.prototype,c,!0)):p=!1;e.exports={ABV:u,CONSTR:p,TYPED:s,VIEW:c}},function(e,n,t){"use strict";e.exports=t(46)||!t(3)((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete t(2)[e]}))},function(e,n,t){"use strict";var i=t(0);e.exports=function(e){i(i.S,e,{of:function(){for(var e=arguments.length,n=new Array(e);e--;)n[e]=arguments[e];return new this(n)}})}},function(e,n,t){"use strict";var i=t(0),a=t(12),o=t(26),r=t(57);e.exports=function(e){i(i.S,e,{from:function(e){var n,t,i,s,c=arguments[1];return a(this),(n=void 0!==c)&&a(c),null==e?new this:(t=[],n?(i=0,s=o(c,arguments[2],2),r(e,!1,(function(e){t.push(s(e,i++))}))):r(e,!1,t.push,t),new this(t))}})}},function(e,n){e.exports=require("stream")},function(e,n){e.exports=require("util")},function(e,n,t){var i=t(184);e.exports=i("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},function(e,n,t){var i=t(4),a=t(2).document,o=i(a)&&i(a.createElement);e.exports=function(e){return o?a.createElement(e):{}}},function(e,n,t){var i=t(2),a=t(25),o=t(46),r=t(133),s=t(8).f;e.exports=function(e){var n=a.Symbol||(a.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in n||s(n,e,{value:r.f(e)})}},function(e,n,t){var i=t(65)("keys"),a=t(50);e.exports=function(e){return i[e]||(i[e]=a(e))}},function(e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,n,t){var i=t(2).document;e.exports=i&&i.documentElement},function(e,n,t){var i=t(4),a=t(1),o=function(e,n){if(a(e),!i(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,i){try{(i=t(26)(Function.call,t(21).f(Object.prototype,"__proto__").set,2))(e,[]),n=!(e instanceof Array)}catch(e){n=!0}return function(e,t){return o(e,t),n?e.__proto__=t:i(e,t),e}}({},!1):void 0),check:o}},function(e,n){e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(e,n,t){"use strict";var i=t(2),a=t(19),o=t(27),r=t(99),s=t(36),c=t(3),u=t(54).f,p=t(21).f,l=t(8).f,f=t(62).trim,d=i.Number,m=d,h=d.prototype,v="Number"==o(t(53)(h)),x="trim"in String.prototype,b=function(e){var n=s(e,!1);if("string"==typeof n&&n.length>2){var t,i,a,o=(n=x?n.trim():f(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(t=n.charCodeAt(2))||120===t)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:i=2,a=49;break;case 79:case 111:i=8,a=55;break;default:return+n}for(var r,c=n.slice(2),u=0,p=c.length;u<p;u++)if((r=c.charCodeAt(u))<48||r>a)return NaN;return parseInt(c,i)}}return+n};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(e){var n=arguments.length<1?0:e,t=this;return t instanceof d&&(v?c((function(){h.valueOf.call(t)})):"Number"!=o(t))?r(new m(b(n)),t,d):b(n)};for(var g,y=t(7)?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;y.length>k;k++)a(m,g=y[k])&&!a(d,g)&&l(d,g,p(m,g));d.prototype=h,h.constructor=d,t(17)(i,"Number",d)}},function(e,n,t){var i=t(4),a=t(96).set;e.exports=function(e,n,t){var o,r=n.constructor;return r!==t&&"function"==typeof r&&(o=r.prototype)!==t.prototype&&i(o)&&a&&a(e,o),e}},function(e,n,t){"use strict";var i=t(28),a=t(37);e.exports=function(e){var n=String(a(this)),t="",o=i(e);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(n+=n))1&o&&(t+=n);return t}},function(e,n,t){var i=t(0);i(i.S,"Number",{isInteger:t(144)})},function(e,n){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,n){var t=Math.expm1;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:t},function(e,n,t){"use strict";var i=t(46),a=t(0),o=t(17),r=t(16),s=t(63),c=t(105),u=t(60),p=t(22),l=t(5)("iterator"),f=!([].keys&&"next"in[].keys()),d=function(){return this};e.exports=function(e,n,t,m,h,v,x){c(t,n,m);var b,g,y,k=function(e){if(!f&&e in _)return _[e];switch(e){case"keys":case"values":return function(){return new t(this,e)}}return function(){return new t(this,e)}},w=n+" Iterator",S="values"==h,j=!1,_=e.prototype,O=_[l]||_["@@iterator"]||h&&_[h],E=O||k(h),P=h?S?k("entries"):E:void 0,C="Array"==n&&_.entries||O;if(C&&(y=p(C.call(new e)))!==Object.prototype&&y.next&&(u(y,w,!0),i||"function"==typeof y[l]||r(y,l,d)),S&&O&&"values"!==O.name&&(j=!0,E=function(){return O.call(this)}),i&&!x||!f&&!j&&_[l]||r(_,l,E),s[n]=E,s[w]=d,h)if(b={values:S?E:k("values"),keys:v?E:k("keys"),entries:P},x)for(g in b)g in _||o(_,g,b[g]);else a(a.P+a.F*(f||j),n,b);return b}},function(e,n,t){"use strict";var i=t(53),a=t(49),o=t(60),r={};t(16)(r,t(5)("iterator"),(function(){return this})),e.exports=function(e,n,t){e.prototype=i(r,{next:a(1,t)}),o(e,n+" Iterator")}},function(e,n,t){var i=t(78),a=t(37);e.exports=function(e,n,t){if(i(n))throw TypeError("String#"+t+" doesn't accept regex!");return String(a(e))}},function(e,n,t){var i=t(5)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[i]=!1,!"/./"[e](n)}catch(e){}}return!0}},function(e,n,t){var i=t(63),a=t(5)("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||o[a]===e)}},function(e,n,t){"use strict";var i=t(8),a=t(49);e.exports=function(e,n,t){n in e?i.f(e,n,a(0,t)):e[n]=t}},function(e,n,t){var i=t(61),a=t(5)("iterator"),o=t(63);e.exports=t(25).getIteratorMethod=function(e){if(null!=e)return e[a]||e["@@iterator"]||o[i(e)]}},function(e,n,t){var i=t(287);e.exports=function(e,n){return new(i(e))(n)}},function(e,n,t){"use strict";var i=t(9),a=t(52),o=t(6);e.exports=function(e){for(var n=i(this),t=o(n.length),r=arguments.length,s=a(r>1?arguments[1]:void 0,t),c=r>2?arguments[2]:void 0,u=void 0===c?t:a(c,t);u>s;)n[s++]=e;return n}},function(e,n,t){"use strict";var i=t(48),a=t(153),o=t(63),r=t(20);e.exports=t(104)(Array,"Array",(function(e,n){this._t=r(e),this._i=0,this._k=n}),(function(){var e=this._t,n=this._k,t=this._i++;return!e||t>=e.length?(this._t=void 0,a(1)):a(0,"keys"==n?t:"values"==n?e[t]:[t,e[t]])}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},function(e,n,t){"use strict";var i,a,o=t(69),r=RegExp.prototype.exec,s=String.prototype.replace,c=r,u=(i=/a/,a=/b*/g,r.call(i,"a"),r.call(a,"a"),0!==i.lastIndex||0!==a.lastIndex),p=void 0!==/()??/.exec("")[1];(u||p)&&(c=function(e){var n,t,i,a,c=this;return p&&(t=new RegExp("^"+c.source+"$(?!\\s)",o.call(c))),u&&(n=c.lastIndex),i=r.call(c,e),u&&i&&(c.lastIndex=c.global?i.index+i[0].length:n),p&&i&&i.length>1&&s.call(i[0],t,(function(){for(a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(i[a]=void 0)})),i}),e.exports=c},function(e,n,t){"use strict";var i=t(77)(!0);e.exports=function(e,n,t){return n+(t?i(e,n).length:1)}},function(e,n,t){var i,a,o,r=t(26),s=t(140),c=t(95),u=t(91),p=t(2),l=p.process,f=p.setImmediate,d=p.clearImmediate,m=p.MessageChannel,h=p.Dispatch,v=0,x={},b=function(){var e=+this;if(x.hasOwnProperty(e)){var n=x[e];delete x[e],n()}},g=function(e){b.call(e.data)};f&&d||(f=function(e){for(var n=[],t=1;arguments.length>t;)n.push(arguments[t++]);return x[++v]=function(){s("function"==typeof e?e:Function(e),n)},i(v),v},d=function(e){delete x[e]},"process"==t(27)(l)?i=function(e){l.nextTick(r(b,e,1))}:h&&h.now?i=function(e){h.now(r(b,e,1))}:m?(o=(a=new m).port2,a.port1.onmessage=g,i=r(o.postMessage,o,1)):p.addEventListener&&"function"==typeof postMessage&&!p.importScripts?(i=function(e){p.postMessage(e+"","*")},p.addEventListener("message",g,!1)):i="onreadystatechange"in u("script")?function(e){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),b.call(e)}}:function(e){setTimeout(r(b,e,1),0)}),e.exports={set:f,clear:d}},function(e,n,t){var i=t(2),a=t(116).set,o=i.MutationObserver||i.WebKitMutationObserver,r=i.process,s=i.Promise,c="process"==t(27)(r);e.exports=function(){var e,n,t,u=function(){var i,a;for(c&&(i=r.domain)&&i.exit();e;){a=e.fn,e=e.next;try{a()}catch(i){throw e?t():n=void 0,i}}n=void 0,i&&i.enter()};if(c)t=function(){r.nextTick(u)};else if(!o||i.navigator&&i.navigator.standalone)if(s&&s.resolve){var p=s.resolve(void 0);t=function(){p.then(u)}}else t=function(){a.call(i,u)};else{var l=!0,f=document.createTextNode("");new o(u).observe(f,{characterData:!0}),t=function(){f.data=l=!l}}return function(i){var a={fn:i,next:void 0};n&&(n.next=a),e||(e=a,t()),n=a}}},function(e,n,t){"use strict";var i=t(12);function a(e){var n,t;this.promise=new e((function(e,i){if(void 0!==n||void 0!==t)throw TypeError("Bad Promise constructor");n=e,t=i})),this.resolve=i(n),this.reject=i(t)}e.exports.f=function(e){return new a(e)}},function(e,n,t){"use strict";var i=t(2),a=t(7),o=t(46),r=t(84),s=t(16),c=t(58),u=t(3),p=t(56),l=t(28),f=t(6),d=t(163),m=t(54).f,h=t(8).f,v=t(112),x=t(60),b=i.ArrayBuffer,g=i.DataView,y=i.Math,k=i.RangeError,w=i.Infinity,S=b,j=y.abs,_=y.pow,O=y.floor,E=y.log,P=y.LN2,C=a?"_b":"buffer",A=a?"_l":"byteLength",M=a?"_o":"byteOffset";function F(e,n,t){var i,a,o,r=new Array(t),s=8*t-n-1,c=(1<<s)-1,u=c>>1,p=23===n?_(2,-24)-_(2,-77):0,l=0,f=e<0||0===e&&1/e<0?1:0;for((e=j(e))!=e||e===w?(a=e!=e?1:0,i=c):(i=O(E(e)/P),e*(o=_(2,-i))<1&&(i--,o*=2),(e+=i+u>=1?p/o:p*_(2,1-u))*o>=2&&(i++,o/=2),i+u>=c?(a=0,i=c):i+u>=1?(a=(e*o-1)*_(2,n),i+=u):(a=e*_(2,u-1)*_(2,n),i=0));n>=8;r[l++]=255&a,a/=256,n-=8);for(i=i<<n|a,s+=n;s>0;r[l++]=255&i,i/=256,s-=8);return r[--l]|=128*f,r}function N(e,n,t){var i,a=8*t-n-1,o=(1<<a)-1,r=o>>1,s=a-7,c=t-1,u=e[c--],p=127&u;for(u>>=7;s>0;p=256*p+e[c],c--,s-=8);for(i=p&(1<<-s)-1,p>>=-s,s+=n;s>0;i=256*i+e[c],c--,s-=8);if(0===p)p=1-r;else{if(p===o)return i?NaN:u?-w:w;i+=_(2,n),p-=r}return(u?-1:1)*i*_(2,p-n)}function T(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function R(e){return[255&e]}function B(e){return[255&e,e>>8&255]}function I(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function L(e){return F(e,52,8)}function z(e){return F(e,23,4)}function D(e,n,t){h(e.prototype,n,{get:function(){return this[t]}})}function q(e,n,t,i){var a=d(+t);if(a+n>e[A])throw k("Wrong index!");var o=e[C]._b,r=a+e[M],s=o.slice(r,r+n);return i?s:s.reverse()}function U(e,n,t,i,a,o){var r=d(+t);if(r+n>e[A])throw k("Wrong index!");for(var s=e[C]._b,c=r+e[M],u=i(+a),p=0;p<n;p++)s[c+p]=u[o?p:n-p-1]}if(r.ABV){if(!u((function(){b(1)}))||!u((function(){new b(-1)}))||u((function(){return new b,new b(1.5),new b(NaN),"ArrayBuffer"!=b.name}))){for(var $,V=(b=function(e){return p(this,b),new S(d(e))}).prototype=S.prototype,W=m(S),G=0;W.length>G;)($=W[G++])in b||s(b,$,S[$]);o||(V.constructor=b)}var H=new g(new b(2)),K=g.prototype.setInt8;H.setInt8(0,2147483648),H.setInt8(1,2147483649),!H.getInt8(0)&&H.getInt8(1)||c(g.prototype,{setInt8:function(e,n){K.call(this,e,n<<24>>24)},setUint8:function(e,n){K.call(this,e,n<<24>>24)}},!0)}else b=function(e){p(this,b,"ArrayBuffer");var n=d(e);this._b=v.call(new Array(n),0),this[A]=n},g=function(e,n,t){p(this,g,"DataView"),p(e,b,"DataView");var i=e[A],a=l(n);if(a<0||a>i)throw k("Wrong offset!");if(a+(t=void 0===t?i-a:f(t))>i)throw k("Wrong length!");this[C]=e,this[M]=a,this[A]=t},a&&(D(b,"byteLength","_l"),D(g,"buffer","_b"),D(g,"byteLength","_l"),D(g,"byteOffset","_o")),c(g.prototype,{getInt8:function(e){return q(this,1,e)[0]<<24>>24},getUint8:function(e){return q(this,1,e)[0]},getInt16:function(e){var n=q(this,2,e,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function(e){var n=q(this,2,e,arguments[1]);return n[1]<<8|n[0]},getInt32:function(e){return T(q(this,4,e,arguments[1]))},getUint32:function(e){return T(q(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return N(q(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return N(q(this,8,e,arguments[1]),52,8)},setInt8:function(e,n){U(this,1,e,R,n)},setUint8:function(e,n){U(this,1,e,R,n)},setInt16:function(e,n){U(this,2,e,B,n,arguments[2])},setUint16:function(e,n){U(this,2,e,B,n,arguments[2])},setInt32:function(e,n){U(this,4,e,I,n,arguments[2])},setUint32:function(e,n){U(this,4,e,I,n,arguments[2])},setFloat32:function(e,n){U(this,4,e,z,n,arguments[2])},setFloat64:function(e,n){U(this,8,e,L,n,arguments[2])}});x(b,"ArrayBuffer"),x(g,"DataView"),s(g.prototype,r.VIEW,!0),n.ArrayBuffer=b,n.DataView=g},function(e,n,t){var i=t(0),a=t(168)(!0);i(i.S,"Object",{entries:function(e){return a(e)}})},function(e,n,t){"use strict";var i=t(15);function a(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,n,t){if(!n)return e;var o;if(t)o=t(n);else if(i.isURLSearchParams(n))o=n.toString();else{var r=[];i.forEach(n,(function(e,n){null!=e&&(i.isArray(e)?n+="[]":e=[e],i.forEach(e,(function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),r.push(a(n)+"="+a(e))})))})),o=r.join("&")}if(o){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},function(e,n,t){"use strict";var i=t(177);e.exports=function(e,n,t,a,o){var r=new Error(e);return i(r,n,t,a,o)}},function(e,n){e.exports=require("http")},function(e,n){e.exports=require("https")},function(e,n){e.exports=require("url")},function(e,n,t){"use strict";const i=t(90),a=t(423);n.names=a.names,n.codes=a.codes,n.defaultLengths=a.defaultLengths;const o=t(64);function r(e){n.decode(e)}n.toHexString=function(e){if(!Buffer.isBuffer(e))throw new Error("must be passed a buffer");return e.toString("hex")},n.fromHexString=function(e){return Buffer.from(e,"hex")},n.toB58String=function(e){if(!Buffer.isBuffer(e))throw new Error("must be passed a buffer");return i.encode(e)},n.fromB58String=function(e){let n=e;return Buffer.isBuffer(e)&&(n=e.toString()),Buffer.from(i.decode(n))},n.decode=function(e){if(!Buffer.isBuffer(e))throw new Error("multihash must be a Buffer");if(e.length<3)throw new Error("multihash too short. must be > 3 bytes.");const t=o.decode(e);if(!n.isValidCode(t))throw new Error(`multihash unknown function code: 0x${t.toString(16)}`);e=e.slice(o.decode.bytes);const i=o.decode(e);if(i<1)throw new Error(`multihash invalid length: 0x${i.toString(16)}`);if((e=e.slice(o.decode.bytes)).length!==i)throw new Error(`multihash length inconsistent: 0x${e.toString("hex")}`);return{code:t,name:a.codes[t],length:i,digest:e}},n.encode=function(e,t,i){if(!e||void 0===t)throw new Error("multihash encode requires at least two args: digest, code");const a=n.coerceCode(t);if(!Buffer.isBuffer(e))throw new Error("digest should be a Buffer");if(null==i&&(i=e.length),i&&e.length!==i)throw new Error("digest length should be equal to specified length.");return Buffer.concat([Buffer.from(o.encode(a)),Buffer.from(o.encode(i)),e])},n.coerceCode=function(e){let t=e;if("string"==typeof e){if(void 0===a.names[e])throw new Error(`Unrecognized hash function named: ${e}`);t=a.names[e]}if("number"!=typeof t)throw new Error(`Hash function code should be a number. Got: ${t}`);if(void 0===a.codes[t]&&!n.isAppCode(t))throw new Error(`Unrecognized function code: ${t}`);return t},n.isAppCode=function(e){return e>0&&e<16},n.isValidCode=function(e){return!!n.isAppCode(e)||!!a.codes[e]},n.validate=r,n.prefix=function(e){return r(e),e.slice(0,2)}},function(e,n,t){"use strict";function i(e){if("number"==typeof e){if(i.codes[e])return i.codes[e];throw new Error("no protocol with code: "+e)}if("string"==typeof e||e instanceof String){if(i.names[e])return i.names[e];throw new Error("no protocol with name: "+e)}throw new Error("invalid protocol id type: "+e)}const a=-1;function o(e,n,t,i,a){return{code:e,size:n,name:t,resolvable:Boolean(i),path:Boolean(a)}}i.lengthPrefixedVarSize=a,i.V=a,i.table=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,a,"ip6zone"],[53,a,"dns","resolvable"],[54,a,"dns4","resolvable"],[55,a,"dns6","resolvable"],[56,a,"dnsaddr","resolvable"],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,a,"unix",!1,"path"],[421,a,"ipfs"],[421,a,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,a,"garlic64"],[460,0,"quic"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"]],i.names={},i.codes={},i.table.map(e=>{const n=o.apply(null,e);i.codes[n.code]=n,i.names[n.name]=n}),i.object=o,e.exports=i},function(e,n,t){"use strict";const i=t(126),a=t(186),o=t(437),r=t(73),s=t(442);class c{constructor(e,n,t,r){if(u.isCID(e)){const n=e;return this.version=n.version,this.codec=n.codec,this.multihash=Buffer.from(n.multihash),void(this.multibaseName=n.multibaseName||(0===n.version?"base58btc":"base32"))}if("string"==typeof e){const n=a.isEncoded(e);if(n){const t=a.decode(e);this.version=parseInt(t.slice(0,1).toString("hex"),16),this.codec=o.getCodec(t.slice(1)),this.multihash=o.rmPrefix(t.slice(1)),this.multibaseName=n}else this.version=0,this.codec="dag-pb",this.multihash=i.fromB58String(e),this.multibaseName="base58btc";return c.validateCID(this),void Object.defineProperty(this,"string",{value:e})}if(Buffer.isBuffer(e)){const n=e.slice(0,1),t=parseInt(n.toString("hex"),16);if(1===t){const n=e;this.version=t,this.codec=o.getCodec(n.slice(1)),this.multihash=o.rmPrefix(n.slice(1)),this.multibaseName="base32"}else this.version=0,this.codec="dag-pb",this.multihash=e,this.multibaseName="base58btc";c.validateCID(this)}else this.version=e,this.codec=n,this.multihash=t,this.multibaseName=r||(0===e?"base58btc":"base32"),c.validateCID(this)}get buffer(){let e=this._buffer;if(!e){if(0===this.version)e=this.multihash;else{if(1!==this.version)throw new Error("unsupported version");e=Buffer.concat([Buffer.from("01","hex"),o.getCodeVarint(this.codec),this.multihash])}Object.defineProperty(this,"_buffer",{value:e})}return e}get prefix(){return Buffer.concat([Buffer.from(`0${this.version}`,"hex"),o.getCodeVarint(this.codec),i.prefix(this.multihash)])}toV0(){if("dag-pb"!==this.codec)throw new Error("Cannot convert a non dag-pb CID to CIDv0");const{name:e,length:n}=i.decode(this.multihash);if("sha2-256"!==e)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");if(32!==n)throw new Error("Cannot convert non 32 byte multihash CID to CIDv0");return new u(0,this.codec,this.multihash)}toV1(){return new u(1,this.codec,this.multihash)}toBaseEncodedString(e=this.multibaseName){if(this.string&&e===this.multibaseName)return this.string;let n=null;if(0===this.version){if("base58btc"!==e)throw new Error("not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()");n=i.toB58String(this.multihash)}else{if(1!==this.version)throw new Error("unsupported version");n=a.encode(e,this.buffer).toString()}return e===this.multibaseName&&Object.defineProperty(this,"string",{value:n}),n}toString(e){return this.toBaseEncodedString(e)}toJSON(){return{codec:this.codec,version:this.version,hash:this.multihash}}equals(e){return this.codec===e.codec&&this.version===e.version&&this.multihash.equals(e.multihash)}static validateCID(e){const n=s.checkCIDComponents(e);if(n)throw new Error(n)}}const u=t(189)(c,{className:"CID",symbolName:"@ipld/js-cid/CID"});u.codecs=r,e.exports=u},function(e,n,t){"use strict";t(10);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){return new Promise((function(i,a){var o,c=new r.default;if(!(null!=t&&null!==(o=t.pinataMetadata)&&void 0!==o&&o.name&&"string"==typeof t.pinataMetadata.name&&t.pinataMetadata.name.length>0))throw Error("filename was not provide, make sure to provide options.pinataMetadata.name");c.append("file",n,{filename:t.pinataMetadata.name}),n instanceof s.default.Readable||n instanceof r.default||a(new Error("readStream is not a readable stream or form data")),i(l(e,c,t))}))},n.uploadToIPFS=l,t(23),t(33),t(68);var a=i(t(43)),o=t(40),r=i(t(191)),s=i(t(88)),c=t(44),u=t(45),p="".concat(o.baseUrl,"/pinning/pinFileToIPFS");function l(e,n,t){return new Promise((function(i,o){t&&t.pinataMetadata&&((0,c.validateMetadata)(t.pinataMetadata),n.append("pinataMetadata",JSON.stringify(t.pinataMetadata))),t&&t.pinataOptions&&((0,c.validatePinataOptions)(t.pinataOptions),n.append("pinataOptions",JSON.stringify(t.pinataOptions))),a.default.post(p,n,(0,c.createConfigForAxiosHeadersWithFormData)(e,n.getBoundary())).then((function(e){200!==e.status&&o(new Error("unknown server response while pinning File to IPFS: ".concat(e))),i(e.data)})).catch((function(e){var n=(0,u.handleError)(e);o(n)}))}))}},function(e,n){e.exports=require("path")},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n=l(l({},n),{includeCount:"false"});var t="".concat(r.baseUrl,"/data/pinList"),i=(0,u.default)(t,n);return new Promise((function(n,t){o.default.get(i,l({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while attempting to retrieve user pin list: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,c.handleError)(e);t(n)}))}))},t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var a=i(t(35)),o=i(t(43)),r=t(40),s=t(44),c=t(45),u=i(t(205));function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}e.exports=n.default},function(e,n,t){e.exports=!t(7)&&!t(3)((function(){return 7!=Object.defineProperty(t(91)("div"),"a",{get:function(){return 7}}).a}))},function(e,n,t){n.f=t(5)},function(e,n,t){var i=t(19),a=t(20),o=t(74)(!1),r=t(93)("IE_PROTO");e.exports=function(e,n){var t,s=a(e),c=0,u=[];for(t in s)t!=r&&i(s,t)&&u.push(t);for(;n.length>c;)i(s,t=n[c++])&&(~o(u,t)||u.push(t));return u}},function(e,n,t){var i=t(8),a=t(1),o=t(51);e.exports=t(7)?Object.defineProperties:function(e,n){a(e);for(var t,r=o(n),s=r.length,c=0;s>c;)i.f(e,t=r[c++],n[t]);return e}},function(e,n,t){var i=t(20),a=t(54).f,o={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return r&&"[object Window]"==o.call(e)?function(e){try{return a(e)}catch(e){return r.slice()}}(e):a(i(e))}},function(e,n,t){"use strict";var i=t(7),a=t(51),o=t(75),r=t(67),s=t(9),c=t(66),u=Object.assign;e.exports=!u||t(3)((function(){var e={},n={},t=Symbol(),i="abcdefghijklmnopqrst";return e[t]=7,i.split("").forEach((function(e){n[e]=e})),7!=u({},e)[t]||Object.keys(u({},n)).join("")!=i}))?function(e,n){for(var t=s(e),u=arguments.length,p=1,l=o.f,f=r.f;u>p;)for(var d,m=c(arguments[p++]),h=l?a(m).concat(l(m)):a(m),v=h.length,x=0;v>x;)d=h[x++],i&&!f.call(m,d)||(t[d]=m[d]);return t}:u},function(e,n){e.exports=Object.is||function(e,n){return e===n?0!==e||1/e==1/n:e!=e&&n!=n}},function(e,n,t){"use strict";var i=t(12),a=t(4),o=t(140),r=[].slice,s={},c=function(e,n,t){if(!(n in s)){for(var i=[],a=0;a<n;a++)i[a]="a["+a+"]";s[n]=Function("F,a","return new F("+i.join(",")+")")}return s[n](e,t)};e.exports=Function.bind||function(e){var n=i(this),t=r.call(arguments,1),s=function(){var i=t.concat(r.call(arguments));return this instanceof s?c(n,i.length,i):o(n,i,e)};return a(n.prototype)&&(s.prototype=n.prototype),s}},function(e,n){e.exports=function(e,n,t){var i=void 0===t;switch(n.length){case 0:return i?e():e.call(t);case 1:return i?e(n[0]):e.call(t,n[0]);case 2:return i?e(n[0],n[1]):e.call(t,n[0],n[1]);case 3:return i?e(n[0],n[1],n[2]):e.call(t,n[0],n[1],n[2]);case 4:return i?e(n[0],n[1],n[2],n[3]):e.call(t,n[0],n[1],n[2],n[3])}return e.apply(t,n)}},function(e,n,t){var i=t(2).parseInt,a=t(62).trim,o=t(97),r=/^[-+]?0[xX]/;e.exports=8!==i(o+"08")||22!==i(o+"0x16")?function(e,n){var t=a(String(e),3);return i(t,n>>>0||(r.test(t)?16:10))}:i},function(e,n,t){var i=t(2).parseFloat,a=t(62).trim;e.exports=1/i(t(97)+"-0")!=-1/0?function(e){var n=a(String(e),3),t=i(n);return 0===t&&"-"==n.charAt(0)?-0:t}:i},function(e,n,t){var i=t(27);e.exports=function(e,n){if("number"!=typeof e&&"Number"!=i(e))throw TypeError(n);return+e}},function(e,n,t){var i=t(4),a=Math.floor;e.exports=function(e){return!i(e)&&isFinite(e)&&a(e)===e}},function(e,n){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,n,t){var i=t(102),a=Math.pow,o=a(2,-52),r=a(2,-23),s=a(2,127)*(2-r),c=a(2,-126);e.exports=Math.fround||function(e){var n,t,a=Math.abs(e),u=i(e);return a<c?u*(a/c/r+1/o-1/o)*c*r:(t=(n=(1+r/o)*a)-(n-a))>s||t!=t?u*(1/0):u*t}},function(e,n,t){var i=t(0),a=t(279);i(i.P+i.F*(Date.prototype.toISOString!==a),"Date",{toISOString:a})},function(e,n,t){var i=t(0);i(i.S,"Array",{isArray:t(76)})},function(e,n,t){var i=t(1);e.exports=function(e,n,t,a){try{return a?n(i(t)[0],t[1]):n(t)}catch(n){var o=e.return;throw void 0!==o&&i(o.call(e)),n}}},function(e,n,t){"use strict";var i=t(0),a=t(12),o=t(9),r=t(3),s=[].sort,c=[1,2,3];i(i.P+i.F*(r((function(){c.sort(void 0)}))||!r((function(){c.sort(null)}))||!t(31)(s)),"Array",{sort:function(e){return void 0===e?s.call(o(this)):s.call(o(this),a(e))}})},function(e,n,t){var i=t(12),a=t(9),o=t(66),r=t(6);e.exports=function(e,n,t,s,c){i(n);var u=a(e),p=o(u),l=r(u.length),f=c?l-1:0,d=c?-1:1;if(t<2)for(;;){if(f in p){s=p[f],f+=d;break}if(f+=d,c?f<0:l<=f)throw TypeError("Reduce of empty array with no initial value")}for(;c?f>=0:l>f;f+=d)f in p&&(s=n(s,p[f],f,u));return s}},function(e,n,t){"use strict";var i=t(9),a=t(52),o=t(6);e.exports=[].copyWithin||function(e,n){var t=i(this),r=o(t.length),s=a(e,r),c=a(n,r),u=arguments.length>2?arguments[2]:void 0,p=Math.min((void 0===u?r:a(u,r))-c,r-s),l=1;for(c<s&&s<c+p&&(l=-1,c+=p-1,s+=p-1);p-- >0;)c in t?t[s]=t[c]:delete t[s],s+=l,c+=l;return t}},function(e,n){e.exports=function(e,n){return{value:n,done:!!e}}},function(e,n,t){"use strict";var i=t(114);t(0)({target:"RegExp",proto:!0,forced:i!==/./.exec},{exec:i})},function(e,n,t){t(7)&&"g"!=/./g.flags&&t(8).f(RegExp.prototype,"flags",{configurable:!0,get:t(69)})},function(e,n){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,n,t){var i=t(1),a=t(4),o=t(118);e.exports=function(e,n){if(i(e),a(n)&&n.constructor===e)return n;var t=o.f(e);return(0,t.resolve)(n),t.promise}},function(e,n,t){"use strict";var i=t(159),a=t(59);e.exports=t(83)("Map",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(e){var n=i.getEntry(a(this,"Map"),e);return n&&n.v},set:function(e,n){return i.def(a(this,"Map"),0===e?0:e,n)}},i,!0)},function(e,n,t){"use strict";var i=t(8).f,a=t(53),o=t(58),r=t(26),s=t(56),c=t(57),u=t(104),p=t(153),l=t(55),f=t(7),d=t(47).fastKey,m=t(59),h=f?"_s":"size",v=function(e,n){var t,i=d(n);if("F"!==i)return e._i[i];for(t=e._f;t;t=t.n)if(t.k==n)return t};e.exports={getConstructor:function(e,n,t,u){var p=e((function(e,i){s(e,p,n,"_i"),e._t=n,e._i=a(null),e._f=void 0,e._l=void 0,e[h]=0,null!=i&&c(i,t,e[u],e)}));return o(p.prototype,{clear:function(){for(var e=m(this,n),t=e._i,i=e._f;i;i=i.n)i.r=!0,i.p&&(i.p=i.p.n=void 0),delete t[i.i];e._f=e._l=void 0,e[h]=0},delete:function(e){var t=m(this,n),i=v(t,e);if(i){var a=i.n,o=i.p;delete t._i[i.i],i.r=!0,o&&(o.n=a),a&&(a.p=o),t._f==i&&(t._f=a),t._l==i&&(t._l=o),t[h]--}return!!i},forEach:function(e){m(this,n);for(var t,i=r(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.n:this._f;)for(i(t.v,t.k,this);t&&t.r;)t=t.p},has:function(e){return!!v(m(this,n),e)}}),f&&i(p.prototype,"size",{get:function(){return m(this,n)[h]}}),p},def:function(e,n,t){var i,a,o=v(e,n);return o?o.v=t:(e._l=o={i:a=d(n,!0),k:n,v:t,p:i=e._l,n:void 0,r:!1},e._f||(e._f=o),i&&(i.n=o),e[h]++,"F"!==a&&(e._i[a]=o)),e},getEntry:v,setStrong:function(e,n,t){u(e,n,(function(e,t){this._t=m(e,n),this._k=t,this._l=void 0}),(function(){for(var e=this._k,n=this._l;n&&n.r;)n=n.p;return this._t&&(this._l=n=n?n.n:this._t._f)?p(0,"keys"==e?n.k:"values"==e?n.v:[n.k,n.v]):(this._t=void 0,p(1))}),t?"entries":"values",!t,!0),l(n)}}},function(e,n,t){"use strict";var i=t(159),a=t(59);e.exports=t(83)("Set",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(e){return i.def(a(this,"Set"),e=0===e?0:e,e)}},i)},function(e,n,t){"use strict";var i,a=t(2),o=t(39)(0),r=t(17),s=t(47),c=t(137),u=t(162),p=t(4),l=t(59),f=t(59),d=!a.ActiveXObject&&"ActiveXObject"in a,m=s.getWeak,h=Object.isExtensible,v=u.ufstore,x=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(e){if(p(e)){var n=m(e);return!0===n?v(l(this,"WeakMap")).get(e):n?n[this._i]:void 0}},set:function(e,n){return u.def(l(this,"WeakMap"),e,n)}},g=e.exports=t(83)("WeakMap",x,b,u,!0,!0);f&&d&&(c((i=u.getConstructor(x,"WeakMap")).prototype,b),s.NEED=!0,o(["delete","has","get","set"],(function(e){var n=g.prototype,t=n[e];r(n,e,(function(n,a){if(p(n)&&!h(n)){this._f||(this._f=new i);var o=this._f[e](n,a);return"set"==e?this:o}return t.call(this,n,a)}))})))},function(e,n,t){"use strict";var i=t(58),a=t(47).getWeak,o=t(1),r=t(4),s=t(56),c=t(57),u=t(39),p=t(19),l=t(59),f=u(5),d=u(6),m=0,h=function(e){return e._l||(e._l=new v)},v=function(){this.a=[]},x=function(e,n){return f(e.a,(function(e){return e[0]===n}))};v.prototype={get:function(e){var n=x(this,e);if(n)return n[1]},has:function(e){return!!x(this,e)},set:function(e,n){var t=x(this,e);t?t[1]=n:this.a.push([e,n])},delete:function(e){var n=d(this.a,(function(n){return n[0]===e}));return~n&&this.a.splice(n,1),!!~n}},e.exports={getConstructor:function(e,n,t,o){var u=e((function(e,i){s(e,u,n,"_i"),e._t=n,e._i=m++,e._l=void 0,null!=i&&c(i,t,e[o],e)}));return i(u.prototype,{delete:function(e){if(!r(e))return!1;var t=a(e);return!0===t?h(l(this,n)).delete(e):t&&p(t,this._i)&&delete t[this._i]},has:function(e){if(!r(e))return!1;var t=a(e);return!0===t?h(l(this,n)).has(e):t&&p(t,this._i)}}),u},def:function(e,n,t){var i=a(o(n),!0);return!0===i?h(e).set(n,t):i[e._i]=t,e},ufstore:h}},function(e,n,t){var i=t(28),a=t(6);e.exports=function(e){if(void 0===e)return 0;var n=i(e),t=a(n);if(n!==t)throw RangeError("Wrong length!");return t}},function(e,n,t){var i=t(54),a=t(75),o=t(1),r=t(2).Reflect;e.exports=r&&r.ownKeys||function(e){var n=i.f(o(e)),t=a.f;return t?n.concat(t(e)):n}},function(e,n,t){"use strict";var i=t(76),a=t(4),o=t(6),r=t(26),s=t(5)("isConcatSpreadable");e.exports=function e(n,t,c,u,p,l,f,d){for(var m,h,v=p,x=0,b=!!f&&r(f,d,3);x<u;){if(x in c){if(m=b?b(c[x],x,t):c[x],h=!1,a(m)&&(h=void 0!==(h=m[s])?!!h:i(m)),h&&l>0)v=e(n,t,m,o(m.length),v,l-1)-1;else{if(v>=9007199254740991)throw TypeError();n[v]=m}v++}x++}return v}},function(e,n,t){var i=t(6),a=t(100),o=t(37);e.exports=function(e,n,t,r){var s=String(o(e)),c=s.length,u=void 0===t?" ":String(t),p=i(n);if(p<=c||""==u)return s;var l=p-c,f=a.call(u,Math.ceil(l/u.length));return f.length>l&&(f=f.slice(0,l)),r?f+s:s+f}},function(e,n,t){t(92)("asyncIterator")},function(e,n,t){var i=t(7),a=t(51),o=t(20),r=t(67).f;e.exports=function(e){return function(n){for(var t,s=o(n),c=a(s),u=c.length,p=0,l=[];u>p;)t=c[p++],i&&!r.call(s,t)||l.push(e?[t,s[t]]:s[t]);return l}}},function(e,n,t){var i=t(61),a=t(170);e.exports=function(e){return function(){if(i(this)!=e)throw TypeError(e+"#toJSON isn't generic");return a(this)}}},function(e,n,t){var i=t(57);e.exports=function(e,n){var t=[];return i(e,!1,t.push,t,n),t}},function(e,n){e.exports=Math.scale||function(e,n,t,i,a){return 0===arguments.length||e!=e||n!=n||t!=t||i!=i||a!=a?NaN:e===1/0||e===-1/0?e:(e-n)*(a-i)/(t-n)+i}},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){if(!n)throw new Error("hashToPin value is required for pinning by hash");if(!c.default.cid(n))throw new Error("hashToPin value is an invalid IPFS CID");var i="".concat(r.baseUrl,"/pinning/pinByHash"),l={hashToPin:n,pinataOptions:{}};t&&(t.pinataOptions&&(l.pinataOptions=t.pinataOptions),t.pinataMetadata&&((0,s.validateMetadata)(t.pinataMetadata),l.pinataMetadata=t.pinataMetadata));return new Promise((function(n,t){o.default.post(i,l,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while adding to pin queue: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);t(n)}))}))};var a=i(t(35));t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(43)),r=t(40),s=t(44),c=i(t(72)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";e.exports=function(e,n){return function(){for(var t=new Array(arguments.length),i=0;i<t.length;i++)t[i]=arguments[i];return e.apply(n,t)}}},function(e,n,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,n,t){"use strict";var i=t(15),a=t(400),o={"Content-Type":"application/x-www-form-urlencoded"};function r(e,n){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=n)}var s,c={adapter:("undefined"!=typeof XMLHttpRequest?s=t(401):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(s=t(407)),s),transformRequest:[function(e,n){return a(n,"Accept"),a(n,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(r(n,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(r(n,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){c.headers[e]=i.merge(o)})),e.exports=c},function(e,n,t){"use strict";var i=t(122);e.exports=function(e,n,t){var a=t.config.validateStatus;t.status&&a&&!a(t.status)?n(i("Request failed with status code "+t.status,t.config,null,t.request,t)):e(t)}},function(e,n,t){"use strict";e.exports=function(e,n,t,i,a){return e.config=n,t&&(e.code=t),e.request=i,e.response=a,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,n,t){"use strict";var i=t(403),a=t(404);e.exports=function(e,n){return e&&!i(n)?a(e,n):n}},function(e,n,t){var i=t(125),a=i.URL,o=t(123),r=t(124),s=t(88).Writable,c=t(408),u=t(409),p=Object.create(null);["abort","aborted","connect","error","socket","timeout"].forEach((function(e){p[e]=function(n,t,i){this._redirectable.emit(e,n,t,i)}}));var l=w("ERR_FR_REDIRECTION_FAILURE",""),f=w("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded"),d=w("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),m=w("ERR_STREAM_WRITE_AFTER_END","write after end");function h(e,n){s.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],n&&this.on("response",n);var t=this;this._onNativeResponse=function(e){t._processResponse(e)},this._performRequest()}function v(e,n){clearTimeout(e._timeout),e._timeout=setTimeout((function(){e.emit("timeout")}),n)}function x(){clearTimeout(this._timeout)}function b(e){var n={maxRedirects:21,maxBodyLength:10485760},t={};return Object.keys(e).forEach((function(o){var r=o+":",s=t[r]=e[o],p=n[o]=Object.create(s);Object.defineProperties(p,{request:{value:function(e,o,s){if("string"==typeof e){var p=e;try{e=y(new a(p))}catch(n){e=i.parse(p)}}else a&&e instanceof a?e=y(e):(s=o,o=e,e={protocol:r});return"function"==typeof o&&(s=o,o=null),(o=Object.assign({maxRedirects:n.maxRedirects,maxBodyLength:n.maxBodyLength},e,o)).nativeProtocols=t,c.equal(o.protocol,r,"protocol mismatch"),u("options",o),new h(o,s)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,n,t){var i=p.request(e,n,t);return i.end(),i},configurable:!0,enumerable:!0,writable:!0}})})),n}function g(){}function y(e){var n={protocol:e.protocol,hostname:e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:e.pathname+e.search,href:e.href};return""!==e.port&&(n.port=Number(e.port)),n}function k(e,n){var t;for(var i in n)e.test(i)&&(t=n[i],delete n[i]);return t}function w(e,n){function t(e){Error.captureStackTrace(this,this.constructor),this.message=e||n}return t.prototype=new Error,t.prototype.constructor=t,t.prototype.name="Error ["+e+"]",t.prototype.code=e,t}h.prototype=Object.create(s.prototype),h.prototype.write=function(e,n,t){if(this._ending)throw new m;if(!("string"==typeof e||"object"==typeof e&&"length"in e))throw new TypeError("data should be a string, Buffer or Uint8Array");"function"==typeof n&&(t=n,n=null),0!==e.length?this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:n}),this._currentRequest.write(e,n,t)):(this.emit("error",new d),this.abort()):t&&t()},h.prototype.end=function(e,n,t){if("function"==typeof e?(t=e,e=n=null):"function"==typeof n&&(t=n,n=null),e){var i=this,a=this._currentRequest;this.write(e,n,(function(){i._ended=!0,a.end(null,null,t)})),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,t)},h.prototype.setHeader=function(e,n){this._options.headers[e]=n,this._currentRequest.setHeader(e,n)},h.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},h.prototype.setTimeout=function(e,n){if(n&&this.once("timeout",n),this.socket)v(this,e);else{var t=this;this._currentRequest.once("socket",(function(){v(t,e)}))}return this.once("response",x),this.once("error",x),this},["abort","flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach((function(e){h.prototype[e]=function(n,t){return this._currentRequest[e](n,t)}})),["aborted","connection","socket"].forEach((function(e){Object.defineProperty(h.prototype,e,{get:function(){return this._currentRequest[e]}})})),h.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var n=e.path.indexOf("?");n<0?e.pathname=e.path:(e.pathname=e.path.substring(0,n),e.search=e.path.substring(n))}},h.prototype._performRequest=function(){var e=this._options.protocol,n=this._options.nativeProtocols[e];if(n){if(this._options.agents){var t=e.substr(0,e.length-1);this._options.agent=this._options.agents[t]}var a=this._currentRequest=n.request(this._options,this._onNativeResponse);for(var o in this._currentUrl=i.format(this._options),a._redirectable=this,p)o&&a.on(o,p[o]);if(this._isRedirect){var r=0,s=this,c=this._requestBodyBuffers;!function e(n){if(a===s._currentRequest)if(n)s.emit("error",n);else if(r<c.length){var t=c[r++];a.finished||a.write(t.data,t.encoding,e)}else s._ended&&a.end()}()}}else this.emit("error",new TypeError("Unsupported protocol "+e))},h.prototype._processResponse=function(e){var n=e.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:e.headers,statusCode:n});var t=e.headers.location;if(t&&!1!==this._options.followRedirects&&n>=300&&n<400){if(this._currentRequest.removeAllListeners(),this._currentRequest.on("error",g),this._currentRequest.abort(),e.destroy(),++this._redirectCount>this._options.maxRedirects)return void this.emit("error",new f);((301===n||302===n)&&"POST"===this._options.method||303===n&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],k(/^content-/i,this._options.headers));var a=k(/^host$/i,this._options.headers)||i.parse(this._currentUrl).hostname,o=i.resolve(this._currentUrl,t);u("redirecting to",o),this._isRedirect=!0;var r=i.parse(o);if(Object.assign(this._options,r),r.hostname!==a&&k(/^authorization$/i,this._options.headers),"function"==typeof this._options.beforeRedirect){var s={headers:e.headers};try{this._options.beforeRedirect.call(null,this._options,s)}catch(e){return void this.emit("error",e)}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(e){var c=new l("Redirected request failed: "+e.message);c.cause=e,this.emit("error",c)}}else e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),this._requestBodyBuffers=[]},e.exports=b({http:o,https:r}),e.exports.wrap=b},function(e,n,t){e.exports=function(e){function n(e){let t,a=null;function o(...e){if(!o.enabled)return;const i=o,a=Number(new Date),r=a-(t||a);i.diff=r,i.prev=t,i.curr=a,t=a,e[0]=n.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,a)=>{if("%%"===t)return"%";s++;const o=n.formatters[a];if("function"==typeof o){const n=e[s];t=o.call(i,n),e.splice(s,1),s--}return t}),n.formatArgs.call(i,e),(i.log||n.log).apply(i,e)}return o.namespace=e,o.useColors=n.useColors(),o.color=n.selectColor(e),o.extend=i,o.destroy=n.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null===a?n.enabled(e):a,set:e=>{a=e}}),"function"==typeof n.init&&n.init(o),o}function i(e,t){const i=n(this.namespace+(void 0===t?":":t)+e);return i.log=this.log,i}function a(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return n.debug=n,n.default=n,n.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},n.disable=function(){const e=[...n.names.map(a),...n.skips.map(a).map(e=>"-"+e)].join(",");return n.enable(""),e},n.enable=function(e){let t;n.save(e),n.names=[],n.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),a=i.length;for(t=0;t<a;t++)i[t]&&("-"===(e=i[t].replace(/\*/g,".*?"))[0]?n.skips.push(new RegExp("^"+e.substr(1)+"$")):n.names.push(new RegExp("^"+e+"$")))},n.enabled=function(e){if("*"===e[e.length-1])return!0;let t,i;for(t=0,i=n.skips.length;t<i;t++)if(n.skips[t].test(e))return!1;for(t=0,i=n.names.length;t<i;t++)if(n.names[t].test(e))return!0;return!1},n.humanize=t(412),n.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={},n.selectColor=function(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]},n.enable(n.load()),n}},function(e,n){e.exports=require("os")},function(e,n,t){"use strict";var i=t(15);e.exports=function(e,n){n=n||{};var t={},a=["url","method","data"],o=["headers","auth","proxy","params"],r=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function c(e,n){return i.isPlainObject(e)&&i.isPlainObject(n)?i.merge(e,n):i.isPlainObject(n)?i.merge({},n):i.isArray(n)?n.slice():n}function u(a){i.isUndefined(n[a])?i.isUndefined(e[a])||(t[a]=c(void 0,e[a])):t[a]=c(e[a],n[a])}i.forEach(a,(function(e){i.isUndefined(n[e])||(t[e]=c(void 0,n[e]))})),i.forEach(o,u),i.forEach(r,(function(a){i.isUndefined(n[a])?i.isUndefined(e[a])||(t[a]=c(void 0,e[a])):t[a]=c(void 0,n[a])})),i.forEach(s,(function(i){i in n?t[i]=c(e[i],n[i]):i in e&&(t[i]=c(void 0,e[i]))}));var p=a.concat(o).concat(r).concat(s),l=Object.keys(e).concat(Object.keys(n)).filter((function(e){return-1===p.indexOf(e)}));return i.forEach(l,u),t}},function(e,n,t){"use strict";function i(e){this.message=e}i.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i.prototype.__CANCEL__=!0,e.exports=i},function(e,n,t){"use strict";var i=t(422).Buffer;e.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),t=0;t<n.length;t++)n[t]=255;for(var a=0;a<e.length;a++){var o=e.charAt(a),r=o.charCodeAt(0);if(255!==n[r])throw new TypeError(o+" is ambiguous");n[r]=a}var s=e.length,c=e.charAt(0),u=Math.log(s)/Math.log(256),p=Math.log(256)/Math.log(s);function l(e){if("string"!=typeof e)throw new TypeError("Expected String");if(0===e.length)return i.alloc(0);var t=0;if(" "!==e[t]){for(var a=0,o=0;e[t]===c;)a++,t++;for(var r=(e.length-t)*u+1>>>0,p=new Uint8Array(r);e[t];){var l=n[e.charCodeAt(t)];if(255===l)return;for(var f=0,d=r-1;(0!==l||f<o)&&-1!==d;d--,f++)l+=s*p[d]>>>0,p[d]=l%256>>>0,l=l/256>>>0;if(0!==l)throw new Error("Non-zero carry");o=f,t++}if(" "!==e[t]){for(var m=r-o;m!==r&&0===p[m];)m++;var h=i.allocUnsafe(a+(r-m));h.fill(0,0,a);for(var v=a;m!==r;)h[v++]=p[m++];return h}}}return{encode:function(n){if((Array.isArray(n)||n instanceof Uint8Array)&&(n=i.from(n)),!i.isBuffer(n))throw new TypeError("Expected Buffer");if(0===n.length)return"";for(var t=0,a=0,o=0,r=n.length;o!==r&&0===n[o];)o++,t++;for(var u=(r-o)*p+1>>>0,l=new Uint8Array(u);o!==r;){for(var f=n[o],d=0,m=u-1;(0!==f||d<a)&&-1!==m;m--,d++)f+=256*l[m]>>>0,l[m]=f%s>>>0,f=f/s>>>0;if(0!==f)throw new Error("Non-zero carry");a=d,o++}for(var h=u-a;h!==u&&0===l[h];)h++;for(var v=c.repeat(t);h<u;++h)v+=e.charAt(l[h]);return v},decodeUnsafe:l,decode:function(e){var n=l(e);if(n)return n;throw new Error("Non-base"+s+" character")}}}},function(e,n){e.exports=require("buffer")},function(e,n,t){"use strict";const i=t(427);(n=e.exports=o).encode=function(e,n){const t=r(e);return o(t.name,Buffer.from(t.encode(n)))},n.decode=function(e){Buffer.isBuffer(e)&&(e=e.toString());const n=e.substring(0,1);"string"==typeof(e=e.substring(1,e.length))&&(e=Buffer.from(e));const t=r(n);return Buffer.from(t.decode(e.toString()))},n.isEncoded=function(e){Buffer.isBuffer(e)&&(e=e.toString());if("[object String]"!==Object.prototype.toString.call(e))return!1;const n=e.substring(0,1);try{return r(n).name}catch(e){return!1}},n.names=Object.freeze(Object.keys(i.names)),n.codes=Object.freeze(Object.keys(i.codes));const a=new Error("Unsupported encoding");function o(e,n){if(!n)throw new Error("requires an encoded buffer");const t=r(e),i=Buffer.from(t.code);return function(e,n){r(e).decode(n.toString())}(t.name,n),Buffer.concat([i,n])}function r(e){let n;if(i.names[e])n=i.names[e];else{if(!i.codes[e])throw a;n=i.codes[e]}if(!n.isImplemented())throw new Error("Base "+e+" is not implemented yet");return n}},function(e,n,t){"use strict";const i=t(432),a=t(127),o=t(64),r=t(90),s=t(128),c=t(189),u=Symbol.for("nodejs.util.inspect.custom"),p=c.proto((function(e){if(!(this instanceof p))return new p(e);if(null==e&&(e=""),e instanceof Buffer)this.buffer=i.fromBuffer(e);else if("string"==typeof e||e instanceof String){if(e.length>0&&"/"!==e.charAt(0))throw new Error(`multiaddr "${e}" must start with a "/"`);this.buffer=i.fromString(e)}else{if(!(e.buffer&&e.protos&&e.protoCodes))throw new Error("addr must be a string, Buffer, or another Multiaddr");this.buffer=i.fromBuffer(e.buffer)}}),{className:"Multiaddr",symbolName:"@multiformats/js-multiaddr/multiaddr"});p.prototype.toString=function(){return i.bufferToString(this.buffer)},p.prototype.toJSON=p.prototype.toString,p.prototype.toOptions=function(){const e={},n=this.toString().split("/");return e.family="ip4"===n[1]?"ipv4":"ipv6",e.host=n[2],e.transport=n[3],e.port=parseInt(n[4]),e},p.prototype[u]=function(){return"<Multiaddr "+this.buffer.toString("hex")+" - "+i.bufferToString(this.buffer)+">"},p.prototype.inspect=function(){return"<Multiaddr "+this.buffer.toString("hex")+" - "+i.bufferToString(this.buffer)+">"},p.prototype.protos=function(){return this.protoCodes().map(e=>Object.assign({},a(e)))},p.prototype.protoCodes=function(){const e=[],n=this.buffer;let t=0;for(;t<n.length;){const r=o.decode(n,t),s=o.decode.bytes,c=a(r);t+=i.sizeForAddr(c,n.slice(t+s))+s,e.push(r)}return e},p.prototype.protoNames=function(){return this.protos().map(e=>e.name)},p.prototype.tuples=function(){return i.bufferToTuples(this.buffer)},p.prototype.stringTuples=function(){const e=i.bufferToTuples(this.buffer);return i.tuplesToStringTuples(e)},p.prototype.encapsulate=function(e){return e=p(e),p(this.toString()+e.toString())},p.prototype.decapsulate=function(e){e=e.toString();const n=this.toString(),t=n.lastIndexOf(e);if(t<0)throw new Error("Address "+this+" does not contain subaddress: "+e);return p(n.slice(0,t))},p.prototype.decapsulateCode=function(e){const n=this.tuples();for(let t=n.length-1;t>=0;t--)if(n[t][0]===e)return p(i.tuplesToBuffer(n.slice(0,t)));return this},p.prototype.getPeerId=function(){let e=null;try{e=this.stringTuples().filter(e=>{if(e[0]===a.names.ipfs.code)return!0}).pop()[1],e=r.encode(new s(e).multihash)}catch(n){e=null}return e},p.prototype.getPath=function(){let e=null;try{e=this.stringTuples().filter(e=>{if(a(e[0]).path)return!0})[0][1]}catch(n){e=null}return e},p.prototype.equals=function(e){return this.buffer.equals(e.buffer)},p.prototype.nodeAddress=function(){const e=this.protoCodes(),n=this.protoNames(),t=this.toString().split("/").slice(1);if(t.length<4)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6}/{address}/{tcp, udp}/{port}".');if(4!==e[0]&&41!==e[0]&&54!==e[0]&&55!==e[0])throw new Error(`no protocol with name: "'${n[0]}'". Must have a valid family name: "{ip4, ip6, dns4, dns6}".`);if("tcp"!==t[2]&&"udp"!==t[2])throw new Error(`no protocol with name: "'${n[1]}'". Must have a valid transport protocol: "{tcp, udp}".`);return{family:41===e[0]||55===e[0]?6:4,address:t[1],port:parseInt(t[3])}},p.fromNodeAddress=function(e,n){if(!e)throw new Error("requires node address object");if(!n)throw new Error("requires transport protocol");const t="IPv6"===e.family?"ip6":"ip4";return p("/"+[t,e.address,n,e.port].join("/"))},p.prototype.isThinWaistAddress=function(e){const n=(e||this).protos();return 2===n.length&&((4===n[0].code||41===n[0].code)&&(6===n[1].code||273===n[1].code))},p.protocols=a,p.isName=function(e){return!!p.isMultiaddr(e)&&e.protos().some(e=>e.resolvable)},p.resolve=function(e){return p.isMultiaddr(e)&&p.isName(e)?Promise.reject(new Error("not implemented yet")):Promise.reject(Error("not a valid name"))},e.exports=p},function(e,n,t){"use strict";const i=t(64);function a(e){return parseInt(e.toString("hex"),16)}function o(e){let n=e.toString(16);return n.length%2==1&&(n="0"+n),Buffer.from(n,"hex")}e.exports={numberToBuffer:o,bufferToNumber:a,varintBufferEncode:function(e){return Buffer.from(i.encode(a(e)))},varintBufferDecode:function(e){return o(i.decode(e))},varintEncode:function(e){return Buffer.from(i.encode(e))}}},function(e,n,t){"use strict";e.exports=function(e,{className:n,symbolName:t}){const i=Symbol.for(t),a={[n]:class extends e{constructor(...e){super(...e),Object.defineProperty(this,i,{value:!0})}get[Symbol.toStringTag](){return n}}}[n];return a[`is${n}`]=e=>!(!e||!e[i]),a},e.exports.proto=function(e,{className:n,symbolName:t,withoutNew:i}){const a=Symbol.for(t),o={[n]:function(...n){if(i&&!(this instanceof o))return new o(...n);const t=e.call(this,...n)||this;return t&&!t[a]&&Object.defineProperty(t,a,{value:!0}),t}}[n];return o.prototype=Object.create(e.prototype),o.prototype.constructor=o,Object.defineProperty(o.prototype,Symbol.toStringTag,{get:()=>n}),o[`is${n}`]=e=>!(!e||!e[a]),o}},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){if(!n)throw new Error("ipfsPinHash value is required for changing the pin policy of a pin");if(!c.default.cid(n))throw new Error("ipfsPinHash value is an invalid IPFS CID");if(!t)throw new Error("no metadata object provided");(0,s.validateMetadata)(t);var i="".concat(r.baseUrl,"/pinning/hashMetadata"),l={ipfsPinHash:n};t.name&&(l.name=t.name);t.keyvalues&&(l.keyvalues=t.keyvalues);return new Promise((function(n,t){o.default.put(i,l,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while changing metadata for hash: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);t(n)}))}))};var a=i(t(35));t(68),t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(43)),r=t(40),s=t(44),c=i(t(72)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){var i=t(446),a=t(89),o=t(130),r=t(123),s=t(124),c=t(125).parse,u=t(192),p=t(448),l=t(451),f=t(455);function d(e){if(!(this instanceof d))return new d;for(var n in this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],i.call(this),e=e||{})this[n]=e[n]}e.exports=d,a.inherits(d,i),d.LINE_BREAK="\r\n",d.DEFAULT_CONTENT_TYPE="application/octet-stream",d.prototype.append=function(e,n,t){"string"==typeof(t=t||{})&&(t={filename:t});var o=i.prototype.append.bind(this);if("number"==typeof n&&(n=""+n),a.isArray(n))this._error(new Error("Arrays are not supported."));else{var r=this._multiPartHeader(e,n,t),s=this._multiPartFooter();o(r),o(n),o(s),this._trackLength(r,n,t)}},d.prototype._trackLength=function(e,n,t){var i=0;null!=t.knownLength?i+=+t.knownLength:Buffer.isBuffer(n)?i=n.length:"string"==typeof n&&(i=Buffer.byteLength(n)),this._valueLength+=i,this._overheadLength+=Buffer.byteLength(e)+d.LINE_BREAK.length,n&&(n.path||n.readable&&n.hasOwnProperty("httpVersion"))&&(t.knownLength||this._valuesToMeasure.push(n))},d.prototype._lengthRetriever=function(e,n){e.hasOwnProperty("fd")?null!=e.end&&e.end!=1/0&&null!=e.start?n(null,e.end+1-(e.start?e.start:0)):u.stat(e.path,(function(t,i){var a;t?n(t):(a=i.size-(e.start?e.start:0),n(null,a))})):e.hasOwnProperty("httpVersion")?n(null,+e.headers["content-length"]):e.hasOwnProperty("httpModule")?(e.on("response",(function(t){e.pause(),n(null,+t.headers["content-length"])})),e.resume()):n("Unknown stream")},d.prototype._multiPartHeader=function(e,n,t){if("string"==typeof t.header)return t.header;var i,a=this._getContentDisposition(n,t),o=this._getContentType(n,t),r="",s={"Content-Disposition":["form-data",'name="'+e+'"'].concat(a||[]),"Content-Type":[].concat(o||[])};for(var c in"object"==typeof t.header&&f(s,t.header),s)s.hasOwnProperty(c)&&null!=(i=s[c])&&(Array.isArray(i)||(i=[i]),i.length&&(r+=c+": "+i.join("; ")+d.LINE_BREAK));return"--"+this.getBoundary()+d.LINE_BREAK+r+d.LINE_BREAK},d.prototype._getContentDisposition=function(e,n){var t,i;return"string"==typeof n.filepath?t=o.normalize(n.filepath).replace(/\\/g,"/"):n.filename||e.name||e.path?t=o.basename(n.filename||e.name||e.path):e.readable&&e.hasOwnProperty("httpVersion")&&(t=o.basename(e.client._httpMessage.path||"")),t&&(i='filename="'+t+'"'),i},d.prototype._getContentType=function(e,n){var t=n.contentType;return!t&&e.name&&(t=p.lookup(e.name)),!t&&e.path&&(t=p.lookup(e.path)),!t&&e.readable&&e.hasOwnProperty("httpVersion")&&(t=e.headers["content-type"]),t||!n.filepath&&!n.filename||(t=p.lookup(n.filepath||n.filename)),t||"object"!=typeof e||(t=d.DEFAULT_CONTENT_TYPE),t},d.prototype._multiPartFooter=function(){return function(e){var n=d.LINE_BREAK;0===this._streams.length&&(n+=this._lastBoundary()),e(n)}.bind(this)},d.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+d.LINE_BREAK},d.prototype.getHeaders=function(e){var n,t={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t},d.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary},d.prototype.getBuffer=function(){for(var e=new Buffer.alloc(0),n=this.getBoundary(),t=0,i=this._streams.length;t<i;t++)"function"!=typeof this._streams[t]&&(e=Buffer.isBuffer(this._streams[t])?Buffer.concat([e,this._streams[t]]):Buffer.concat([e,Buffer.from(this._streams[t])]),"string"==typeof this._streams[t]&&this._streams[t].substring(2,n.length+2)===n||(e=Buffer.concat([e,Buffer.from(d.LINE_BREAK)])));return Buffer.concat([e,Buffer.from(this._lastBoundary())])},d.prototype._generateBoundary=function(){for(var e="--------------------------",n=0;n<24;n++)e+=Math.floor(10*Math.random()).toString(16);this._boundary=e},d.prototype.getLengthSync=function(){var e=this._overheadLength+this._valueLength;return this._streams.length&&(e+=this._lastBoundary().length),this.hasKnownLength()||this._error(new Error("Cannot calculate proper length in synchronous way.")),e},d.prototype.hasKnownLength=function(){var e=!0;return this._valuesToMeasure.length&&(e=!1),e},d.prototype.getLength=function(e){var n=this._overheadLength+this._valueLength;this._streams.length&&(n+=this._lastBoundary().length),this._valuesToMeasure.length?l.parallel(this._valuesToMeasure,this._lengthRetriever,(function(t,i){t?e(t):(i.forEach((function(e){n+=e})),e(null,n))})):process.nextTick(e.bind(this,null,n))},d.prototype.submit=function(e,n){var t,i,a={method:"post"};return"string"==typeof e?(e=c(e),i=f({port:e.port,path:e.pathname,host:e.hostname,protocol:e.protocol},a)):(i=f(e,a)).port||(i.port="https:"==i.protocol?443:80),i.headers=this.getHeaders(e.headers),t="https:"==i.protocol?s.request(i):r.request(i),this.getLength(function(e,i){e?this._error(e):(t.setHeader("Content-Length",i),this.pipe(t),n&&(t.on("error",n),t.on("response",n.bind(this,null))))}.bind(this)),t},d.prototype._error=function(e){this.error||(this.error=e,this.pause(),this.emit("error",e))},d.prototype.toString=function(){return"[object FormData]"}},function(e,n){e.exports=require("fs")},function(e,n,t){var i=t(194),a=t(195);e.exports=function(e,n,t,o){var r=t.keyedList?t.keyedList[t.index]:t.index;t.jobs[r]=function(e,n,t,a){var o;o=2==e.length?e(t,i(a)):e(t,n,i(a));return o}(n,r,e[r],(function(e,n){r in t.jobs&&(delete t.jobs[r],e?a(t):t.results[r]=n,o(e,t.results))}))}},function(e,n,t){var i=t(453);e.exports=function(e){var n=!1;return i((function(){n=!0})),function(t,a){n?e(t,a):i((function(){e(t,a)}))}}},function(e,n){function t(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}e.exports=function(e){Object.keys(e.jobs).forEach(t.bind(e)),e.jobs={}}},function(e,n){e.exports=function(e,n){var t=!Array.isArray(e),i={index:0,keyedList:t||n?Object.keys(e):null,jobs:{},results:t?{}:[],size:t?Object.keys(e).length:e.length};n&&i.keyedList.sort(t?n:function(t,i){return n(e[t],e[i])});return i}},function(e,n,t){var i=t(195),a=t(194);e.exports=function(e){if(!Object.keys(this.jobs).length)return;this.index=this.size,i(this),a(e)(null,this.results)}},function(e,n,t){var i=t(193),a=t(196),o=t(197);function r(e,n){return e<n?-1:e>n?1:0}e.exports=function(e,n,t,r){var s=a(e,t);return i(e,n,s,(function t(a,o){a?r(a,o):(s.index++,s.index<(s.keyedList||e).length?i(e,n,s,t):r(null,s.results))})),o.bind(s,r)},e.exports.ascending=r,e.exports.descending=function(e,n){return-1*r(e,n)}},function(e,n,t){"use strict";t(10);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){return l.apply(this,arguments)};var a=i(t(456));t(11);var o=i(t(458)),r=i(t(191)),s=i(t(459)),c=t(129),u=i(t(192)),p=i(t(130));function l(){return(l=(0,o.default)(a.default.mark((function e(n,t,i){var o,l,f,d;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,u.default.promises.stat(t);case 3:if(!e.sent.isFile()){e.next=9;break}return o=u.default.createReadStream(t),(l=new r.default).append("file",o,{filename:p.default.basename(t)}),e.abrupt("return",(0,c.uploadToIPFS)(n,l,i));case 9:return e.next=11,u.default.promises.readdir(t);case 11:return f=e.sent,d=new r.default,f.forEach((function(e){d.append("file",u.default.createReadStream(e),{filepath:(0,s.default)(t,e)})})),e.abrupt("return",(0,c.uploadToIPFS)(n,d,i));case 17:throw e.prev=17,e.t0=e.catch(0),console.log(e.t0),e.t0;case 21:case"end":return e.stop()}}),e,null,[[0,17]])})))).apply(this,arguments)}e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n,t){var i=n;if("object"!==(0,o.default)(n))throw new Error("body must be a valid JSON object");t&&(i={pinataContent:n},t.pinataMetadata&&((0,c.validateMetadata)(t.pinataMetadata),i.pinataMetadata=t.pinataMetadata),t.pinataOptions&&((0,c.validatePinataOptions)(t.pinataOptions),i.pinataOptions=t.pinataOptions));var l="".concat(s.baseUrl,"/pinning/pinJSONToIPFS");return new Promise((function(n,t){r.default.post(l,i,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,c.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&t(new Error("unknown server response while pinning JSON to IPFS: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);t(n)}))}))},t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var a=i(t(35)),o=i(t(71)),r=i(t(43)),s=t(40),c=t(44),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){var t="".concat(r.baseUrl,"/pinning/pinJobs");n&&(t=(0,c.default)(t,n));return new Promise((function(n,i){o.default.get(t,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while attempting to retrieve pin jobs: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);i(n)}))}))};var a=i(t(35));t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(43)),r=t(40),s=t(44),c=i(t(202)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";t(10);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!e)throw new Error("no baseUrl provided");if(!n)return e;var t=e,i=!1;function o(e){i?t="".concat(t,"&").concat(e):(i=!0,t="".concat(t,"?").concat(e))}if(n){if(n.sort){if("ASC"!==n.sort&&"DESC"!==n.sort)throw new Error("Unknown sort value: ".concat(n.sort," provided"));o("sort=".concat(n.sort))}if(n.status){if("searching"!==n.status&&"expired"!==n.status&&"over_free_limit"!==n.status&&"over_max_size"!==n.status&&"invalid_object"!==n.status&&"bad_host_node"!==n.status)throw new Error("Unknown status value: ".concat(n.status," provided"));o("status=".concat(n.status))}if(n.ipfs_pin_hash){if(!a.default.cid(n.ipfs_pin_hash))throw new Error("Invalid IPFS hash: ".concat(n.ipfs_pin_hash));o("ipfs_pin_hash=".concat(n.ipfs_pin_hash))}if(n.limit){if(!(Number.isInteger(n.limit)&&n.limit>0&&n.limit<100))throw new Error("Invalid limit: ".concat(n.limit,". Valid limits are 1-100"));o("limit=".concat(n.limit))}if(n.offset){if(!(Number.isInteger(n.offset)&&n.offset>0))throw new Error("Invalid offset: ".concat(n.offset,". Please provide a positive integer for the offset"));o("offset=".concat(n.offset))}}return t},t(150),t(101),t(98);var a=i(t(72));e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!n)throw new Error("hashToUnpin value is required for removing a pin from Pinata");if(!c.default.cid(n))throw new Error("".concat(n," is an invalid IPFS CID"));var t="".concat(r.baseUrl,"/pinning/unpin/").concat(n);return new Promise((function(n,i){o.default.delete(t,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?p(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):p(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while removing pin from IPFS: ".concat(e))),n(e.data)})).catch((function(e){var n=(0,u.handleError)(e);i(n)}))}))};var a=i(t(35));t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(43)),r=t(40),s=t(44),c=i(t(72)),u=t(45);function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n="".concat(r.baseUrl,"/data/testAuthentication");return new Promise((function(t,i){o.default.get(n,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?u(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while authenticating: ".concat(e))),t({authenticated:!0})})).catch((function(e){var n=(0,c.handleError)(e);i(n)}))}))};var a=i(t(35));t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(43)),r=t(40),s=t(44),c=t(45);function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){"use strict";t(10);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!e)throw new Error("no baseUrl provided");var t="?",i="";if(n){if(n.includeCount&&(t+="includeCount=".concat(n.includeCount,"&")),n.hashContains){if("string"!=typeof n.hashContains)throw new Error("hashContains value is not a string");t+="hashContains=".concat(n.hashContains,"&")}if(n.pinStart&&(t+="pinStart=".concat(o(n.pinStart),"&")),n.pinEnd&&(t+="pinEnd=".concat(o(n.pinEnd),"&")),n.unpinStart&&(t+="unpinStart=".concat(o(n.unpinStart),"&")),n.unpinEnd&&(t+="unpinEnd=".concat(o(n.unpinEnd),"&")),n.pinSizeMin){if(isNaN(n.pinSizeMin)||n.pinSizeMin<0)throw new Error("Please make sure the pinSizeMin is a valid positive integer");t+="pinSizeMin=".concat(n.pinSizeMin,"&")}if(n.pinSizeMax){if(isNaN(n.pinSizeMax)||n.pinSizeMax<0)throw new Error("Please make sure the pinSizeMax is a valid positive integer");t+="pinSizeMax=".concat(n.pinSizeMax,"&")}if(n.status){if("all"!==n.status&&"pinned"!==n.status&&"unpinned"!==n.status)throw new Error("status value must be either: all, pinned, or unpinned");t+="status=".concat(n.status,"&")}if(n.pageLimit){if(isNaN(n.pageLimit)||n.pageLimit<=0||n.pageLimit>1e3)throw new Error("Please make sure the pageLimit is a valid integer between 1-1000");t+="pageLimit=".concat(parseInt(n.pageLimit),"&")}if(n.pageOffset){if(isNaN(n.pageOffset)||n.pageOffset<=0)throw new Error("Please make sure the pageOffset is a positive integer");t+="pageOffset=".concat(parseInt(n.pageOffset),"&")}if(n.metadata){if("object"!==(0,a.default)(n.metadata))throw new Error("metadata value must be an object");if(n.metadata.name&&(i="metadata[name]=".concat(n.metadata.name,"&")),n.metadata.keyvalues){if(i+="metadata[keyvalues]=","object"!==(0,a.default)(n.metadata.keyvalues))throw new Error("metadata keyvalues must be an object");var r={};Object.entries(n.metadata.keyvalues).forEach((function(e){var n=e[0],t=e[1];if("object"!==(0,a.default)(t))throw new Error("keyValue: ".concat(n," is not an object"));if(!t||!t.value||!t.op)throw new Error("keyValue: ".concat(n," must have both value and op attributes"));if("string"!=typeof t.value&&"boolean"!=typeof t.value&&"number"!=typeof t.value)throw new Error("Metadata keyvalue values must be strings, booleans, or numbers");switch(t.op){case"gt":case"gte":case"lt":case"lte":case"ne":case"eq":r[n]={value:t.value,op:t.op};break;case"between":if(!t.secondValue)throw new Error("Because between op code was passed in, keyValue: ".concat(e[0]," must have both also include a secondValue"));if("string"!=typeof t.secondValue&&"boolean"!=typeof t.secondValue&&"number"!=typeof t.secondValue)throw new Error("Metadata keyvalue secondValue must be a string, boolean, or number");r[n]={value:t.value,op:t.op,secondValue:t.secondValue};break;case"notBetween":if(!t.secondValue)throw new Error("Because notBetween op code was passed in, keyValue: ".concat(e[0]," must have both also include a secondValue"));if("string"!=typeof t.secondValue&&"boolean"!=typeof t.secondValue&&"number"!=typeof t.secondValue)throw new Error("Metadata keyvalue secondValue must be a string, boolean, or number");r[n]={value:t.value,op:t.op,secondValue:t.secondValue};break;case"like":case"notLike":case"iLike":case"notILike":case"regexp":case"iRegexp":r[n]={value:t.value,op:t.op};break;default:throw new Error("keyValue op: ".concat(t.op," is not a valid op code"))}})),i+="".concat(JSON.stringify(r))}}}return"".concat(e).concat(t).concat(i)};var a=i(t(71));function o(e){var n=new Date(Date.parse(e));try{if(n.toISOString()===e)return e;throw new Error("dates must be in valid ISO_8601 format")}catch(e){throw new Error("dates must be in valid ISO_8601 format")}}t(147),t(68),t(11),t(120),e.exports=n.default},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n="".concat(r.baseUrl,"/data/userPinnedDataTotal");return new Promise((function(t,i){o.default.get(n,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?u(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},(0,s.createConfigForAxiosHeaders)(e))).then((function(e){200!==e.status&&i(new Error("unknown server response while attempting to retrieve pinned data total: ".concat(e))),t(e.data)})).catch((function(e){var n=(0,c.handleError)(e);i(n)}))}))};var a=i(t(35));t(23),t(33),t(14),t(24),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(43)),r=t(40),s=t(44),c=t(45);function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}e.exports=n.default},function(e,n,t){t(208),e.exports=t(392)},function(e,n,t){"use strict";if(t(209),t(388),t(389),global._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");global._babelPolyfill=!0;function i(e,n,t){e[n]||Object.defineProperty(e,n,{writable:!0,configurable:!0,value:t})}i(String.prototype,"padLeft","".padStart),i(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach((function(e){[][e]&&i(Array,e,Function.call.bind([][e]))}))},function(e,n,t){t(24),t(212),t(10),t(29),t(30),t(213),t(14),t(214),t(215),t(216),t(217),t(218),t(219),t(220),t(221),t(222),t(223),t(23),t(224),t(68),t(225),t(226),t(227),t(98),t(228),t(229),t(230),t(231),t(101),t(232),t(233),t(234),t(235),t(236),t(237),t(238),t(239),t(240),t(241),t(242),t(243),t(244),t(245),t(246),t(247),t(248),t(249),t(250),t(251),t(252),t(253),t(254),t(255),t(256),t(257),t(258),t(259),t(260),t(261),t(262),t(263),t(264),t(265),t(266),t(267),t(268),t(269),t(270),t(271),t(272),t(273),t(274),t(275),t(276),t(277),t(278),t(147),t(280),t(281),t(148),t(283),t(284),t(285),t(286),t(150),t(11),t(288),t(32),t(289),t(290),t(291),t(292),t(293),t(294),t(295),t(296),t(297),t(298),t(299),t(113),t(300),t(154),t(301),t(155),t(302),t(303),t(304),t(305),t(33),t(158),t(160),t(161),t(306),t(307),t(308),t(309),t(310),t(311),t(312),t(313),t(314),t(315),t(316),t(317),t(318),t(319),t(320),t(321),t(322),t(323),t(324),t(325),t(326),t(327),t(328),t(329),t(330),t(331),t(332),t(333),t(334),t(335),t(336),t(337),t(338),t(339),t(340),t(167),t(341),t(34),t(342),t(120),t(343),t(344),t(345),t(346),t(347),t(348),t(349),t(350),t(351),t(352),t(353),t(354),t(355),t(356),t(357),t(358),t(359),t(360),t(361),t(362),t(363),t(364),t(365),t(366),t(367),t(368),t(369),t(370),t(371),t(372),t(373),t(374),t(375),t(376),t(377),t(378),t(379),t(380),t(381),t(382),t(383),t(384),t(385),t(386),t(387),e.exports=t(25)},function(e,n,t){e.exports=t(65)("native-function-to-string",Function.toString)},function(e,n,t){var i=t(51),a=t(75),o=t(67);e.exports=function(e){var n=i(e),t=a.f;if(t)for(var r,s=t(e),c=o.f,u=0;s.length>u;)c.call(e,r=s[u++])&&n.push(r);return n}},function(e,n,t){var i=t(0);i(i.S,"Object",{create:t(53)})},function(e,n,t){var i=t(9),a=t(22);t(38)("getPrototypeOf",(function(){return function(e){return a(i(e))}}))},function(e,n,t){t(38)("getOwnPropertyNames",(function(){return t(136).f}))},function(e,n,t){var i=t(4),a=t(47).onFreeze;t(38)("freeze",(function(e){return function(n){return e&&i(n)?e(a(n)):n}}))},function(e,n,t){var i=t(4),a=t(47).onFreeze;t(38)("seal",(function(e){return function(n){return e&&i(n)?e(a(n)):n}}))},function(e,n,t){var i=t(4),a=t(47).onFreeze;t(38)("preventExtensions",(function(e){return function(n){return e&&i(n)?e(a(n)):n}}))},function(e,n,t){var i=t(4);t(38)("isFrozen",(function(e){return function(n){return!i(n)||!!e&&e(n)}}))},function(e,n,t){var i=t(4);t(38)("isSealed",(function(e){return function(n){return!i(n)||!!e&&e(n)}}))},function(e,n,t){var i=t(4);t(38)("isExtensible",(function(e){return function(n){return!!i(n)&&(!e||e(n))}}))},function(e,n,t){var i=t(0);i(i.S+i.F,"Object",{assign:t(137)})},function(e,n,t){var i=t(0);i(i.S,"Object",{is:t(138)})},function(e,n,t){var i=t(0);i(i.S,"Object",{setPrototypeOf:t(96).set})},function(e,n,t){var i=t(0);i(i.P,"Function",{bind:t(139)})},function(e,n,t){"use strict";var i=t(4),a=t(22),o=t(5)("hasInstance"),r=Function.prototype;o in r||t(8).f(r,o,{value:function(e){if("function"!=typeof this||!i(e))return!1;if(!i(this.prototype))return e instanceof this;for(;e=a(e);)if(this.prototype===e)return!0;return!1}})},function(e,n,t){var i=t(0),a=t(141);i(i.G+i.F*(parseInt!=a),{parseInt:a})},function(e,n,t){var i=t(0),a=t(142);i(i.G+i.F*(parseFloat!=a),{parseFloat:a})},function(e,n,t){"use strict";var i=t(0),a=t(28),o=t(143),r=t(100),s=1..toFixed,c=Math.floor,u=[0,0,0,0,0,0],p="Number.toFixed: incorrect invocation!",l=function(e,n){for(var t=-1,i=n;++t<6;)i+=e*u[t],u[t]=i%1e7,i=c(i/1e7)},f=function(e){for(var n=6,t=0;--n>=0;)t+=u[n],u[n]=c(t/e),t=t%e*1e7},d=function(){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==u[e]){var t=String(u[e]);n=""===n?t:n+r.call("0",7-t.length)+t}return n},m=function(e,n,t){return 0===n?t:n%2==1?m(e,n-1,t*e):m(e*e,n/2,t)};i(i.P+i.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!t(3)((function(){s.call({})}))),"Number",{toFixed:function(e){var n,t,i,s,c=o(this,p),u=a(e),h="",v="0";if(u<0||u>20)throw RangeError(p);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(h="-",c=-c),c>1e-21)if(t=(n=function(e){for(var n=0,t=e;t>=4096;)n+=12,t/=4096;for(;t>=2;)n+=1,t/=2;return n}(c*m(2,69,1))-69)<0?c*m(2,-n,1):c/m(2,n,1),t*=4503599627370496,(n=52-n)>0){for(l(0,t),i=u;i>=7;)l(1e7,0),i-=7;for(l(m(10,i,1),0),i=n-1;i>=23;)f(1<<23),i-=23;f(1<<i),l(1,1),f(2),v=d()}else l(0,t),l(1<<-n,0),v=d()+r.call("0",u);return v=u>0?h+((s=v.length)<=u?"0."+r.call("0",u-s)+v:v.slice(0,s-u)+"."+v.slice(s-u)):h+v}})},function(e,n,t){"use strict";var i=t(0),a=t(3),o=t(143),r=1..toPrecision;i(i.P+i.F*(a((function(){return"1"!==r.call(1,void 0)}))||!a((function(){r.call({})}))),"Number",{toPrecision:function(e){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===e?r.call(n):r.call(n,e)}})},function(e,n,t){var i=t(0);i(i.S,"Number",{EPSILON:Math.pow(2,-52)})},function(e,n,t){var i=t(0),a=t(2).isFinite;i(i.S,"Number",{isFinite:function(e){return"number"==typeof e&&a(e)}})},function(e,n,t){var i=t(0);i(i.S,"Number",{isNaN:function(e){return e!=e}})},function(e,n,t){var i=t(0),a=t(144),o=Math.abs;i(i.S,"Number",{isSafeInteger:function(e){return a(e)&&o(e)<=9007199254740991}})},function(e,n,t){var i=t(0);i(i.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,n,t){var i=t(0);i(i.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(e,n,t){var i=t(0),a=t(142);i(i.S+i.F*(Number.parseFloat!=a),"Number",{parseFloat:a})},function(e,n,t){var i=t(0),a=t(141);i(i.S+i.F*(Number.parseInt!=a),"Number",{parseInt:a})},function(e,n,t){var i=t(0),a=t(145),o=Math.sqrt,r=Math.acosh;i(i.S+i.F*!(r&&710==Math.floor(r(Number.MAX_VALUE))&&r(1/0)==1/0),"Math",{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Math.log(e)+Math.LN2:a(e-1+o(e-1)*o(e+1))}})},function(e,n,t){var i=t(0),a=Math.asinh;i(i.S+i.F*!(a&&1/a(0)>0),"Math",{asinh:function e(n){return isFinite(n=+n)&&0!=n?n<0?-e(-n):Math.log(n+Math.sqrt(n*n+1)):n}})},function(e,n,t){var i=t(0),a=Math.atanh;i(i.S+i.F*!(a&&1/a(-0)<0),"Math",{atanh:function(e){return 0==(e=+e)?e:Math.log((1+e)/(1-e))/2}})},function(e,n,t){var i=t(0),a=t(102);i(i.S,"Math",{cbrt:function(e){return a(e=+e)*Math.pow(Math.abs(e),1/3)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{clz32:function(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},function(e,n,t){var i=t(0),a=Math.exp;i(i.S,"Math",{cosh:function(e){return(a(e=+e)+a(-e))/2}})},function(e,n,t){var i=t(0),a=t(103);i(i.S+i.F*(a!=Math.expm1),"Math",{expm1:a})},function(e,n,t){var i=t(0);i(i.S,"Math",{fround:t(146)})},function(e,n,t){var i=t(0),a=Math.abs;i(i.S,"Math",{hypot:function(e,n){for(var t,i,o=0,r=0,s=arguments.length,c=0;r<s;)c<(t=a(arguments[r++]))?(o=o*(i=c/t)*i+1,c=t):o+=t>0?(i=t/c)*i:t;return c===1/0?1/0:c*Math.sqrt(o)}})},function(e,n,t){var i=t(0),a=Math.imul;i(i.S+i.F*t(3)((function(){return-5!=a(4294967295,5)||2!=a.length})),"Math",{imul:function(e,n){var t=+e,i=+n,a=65535&t,o=65535&i;return 0|a*o+((65535&t>>>16)*o+a*(65535&i>>>16)<<16>>>0)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},function(e,n,t){var i=t(0);i(i.S,"Math",{log1p:t(145)})},function(e,n,t){var i=t(0);i(i.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},function(e,n,t){var i=t(0);i(i.S,"Math",{sign:t(102)})},function(e,n,t){var i=t(0),a=t(103),o=Math.exp;i(i.S+i.F*t(3)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(a(e)-a(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},function(e,n,t){var i=t(0),a=t(103),o=Math.exp;i(i.S,"Math",{tanh:function(e){var n=a(e=+e),t=a(-e);return n==1/0?1:t==1/0?-1:(n-t)/(o(e)+o(-e))}})},function(e,n,t){var i=t(0);i(i.S,"Math",{trunc:function(e){return(e>0?Math.floor:Math.ceil)(e)}})},function(e,n,t){var i=t(0),a=t(52),o=String.fromCharCode,r=String.fromCodePoint;i(i.S+i.F*(!!r&&1!=r.length),"String",{fromCodePoint:function(e){for(var n,t=[],i=arguments.length,r=0;i>r;){if(n=+arguments[r++],a(n,1114111)!==n)throw RangeError(n+" is not a valid code point");t.push(n<65536?o(n):o(55296+((n-=65536)>>10),n%1024+56320))}return t.join("")}})},function(e,n,t){var i=t(0),a=t(20),o=t(6);i(i.S,"String",{raw:function(e){for(var n=a(e.raw),t=o(n.length),i=arguments.length,r=[],s=0;t>s;)r.push(String(n[s++])),s<i&&r.push(String(arguments[s]));return r.join("")}})},function(e,n,t){"use strict";t(62)("trim",(function(e){return function(){return e(this,3)}}))},function(e,n,t){"use strict";var i=t(77)(!0);t(104)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,n=this._t,t=this._i;return t>=n.length?{value:void 0,done:!0}:(e=i(n,t),this._i+=e.length,{value:e,done:!1})}))},function(e,n,t){"use strict";var i=t(0),a=t(77)(!1);i(i.P,"String",{codePointAt:function(e){return a(this,e)}})},function(e,n,t){"use strict";var i=t(0),a=t(6),o=t(106),r="".endsWith;i(i.P+i.F*t(107)("endsWith"),"String",{endsWith:function(e){var n=o(this,e,"endsWith"),t=arguments.length>1?arguments[1]:void 0,i=a(n.length),s=void 0===t?i:Math.min(a(t),i),c=String(e);return r?r.call(n,c,s):n.slice(s-c.length,s)===c}})},function(e,n,t){"use strict";var i=t(0),a=t(106);i(i.P+i.F*t(107)("includes"),"String",{includes:function(e){return!!~a(this,e,"includes").indexOf(e,arguments.length>1?arguments[1]:void 0)}})},function(e,n,t){var i=t(0);i(i.P,"String",{repeat:t(100)})},function(e,n,t){"use strict";var i=t(0),a=t(6),o=t(106),r="".startsWith;i(i.P+i.F*t(107)("startsWith"),"String",{startsWith:function(e){var n=o(this,e,"startsWith"),t=a(Math.min(arguments.length>1?arguments[1]:void 0,n.length)),i=String(e);return r?r.call(n,i,t):n.slice(t,t+i.length)===i}})},function(e,n,t){"use strict";t(18)("anchor",(function(e){return function(n){return e(this,"a","name",n)}}))},function(e,n,t){"use strict";t(18)("big",(function(e){return function(){return e(this,"big","","")}}))},function(e,n,t){"use strict";t(18)("blink",(function(e){return function(){return e(this,"blink","","")}}))},function(e,n,t){"use strict";t(18)("bold",(function(e){return function(){return e(this,"b","","")}}))},function(e,n,t){"use strict";t(18)("fixed",(function(e){return function(){return e(this,"tt","","")}}))},function(e,n,t){"use strict";t(18)("fontcolor",(function(e){return function(n){return e(this,"font","color",n)}}))},function(e,n,t){"use strict";t(18)("fontsize",(function(e){return function(n){return e(this,"font","size",n)}}))},function(e,n,t){"use strict";t(18)("italics",(function(e){return function(){return e(this,"i","","")}}))},function(e,n,t){"use strict";t(18)("link",(function(e){return function(n){return e(this,"a","href",n)}}))},function(e,n,t){"use strict";t(18)("small",(function(e){return function(){return e(this,"small","","")}}))},function(e,n,t){"use strict";t(18)("strike",(function(e){return function(){return e(this,"strike","","")}}))},function(e,n,t){"use strict";t(18)("sub",(function(e){return function(){return e(this,"sub","","")}}))},function(e,n,t){"use strict";t(18)("sup",(function(e){return function(){return e(this,"sup","","")}}))},function(e,n,t){var i=t(0);i(i.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,n,t){"use strict";var i=t(0),a=t(9),o=t(36);i(i.P+i.F*t(3)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(e){var n=a(this),t=o(n);return"number"!=typeof t||isFinite(t)?n.toISOString():null}})},function(e,n,t){"use strict";var i=t(3),a=Date.prototype.getTime,o=Date.prototype.toISOString,r=function(e){return e>9?e:"0"+e};e.exports=i((function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))}))||!i((function(){o.call(new Date(NaN))}))?function(){if(!isFinite(a.call(this)))throw RangeError("Invalid time value");var e=this,n=e.getUTCFullYear(),t=e.getUTCMilliseconds(),i=n<0?"-":n>9999?"+":"";return i+("00000"+Math.abs(n)).slice(i?-6:-4)+"-"+r(e.getUTCMonth()+1)+"-"+r(e.getUTCDate())+"T"+r(e.getUTCHours())+":"+r(e.getUTCMinutes())+":"+r(e.getUTCSeconds())+"."+(t>99?t:"0"+r(t))+"Z"}:o},function(e,n,t){var i=Date.prototype,a=i.toString,o=i.getTime;new Date(NaN)+""!="Invalid Date"&&t(17)(i,"toString",(function(){var e=o.call(this);return e==e?a.call(this):"Invalid Date"}))},function(e,n,t){var i=t(5)("toPrimitive"),a=Date.prototype;i in a||t(16)(a,i,t(282))},function(e,n,t){"use strict";var i=t(1),a=t(36);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return a(i(this),"number"!=e)}},function(e,n,t){"use strict";var i=t(26),a=t(0),o=t(9),r=t(149),s=t(108),c=t(6),u=t(109),p=t(110);a(a.S+a.F*!t(79)((function(e){Array.from(e)})),"Array",{from:function(e){var n,t,a,l,f=o(e),d="function"==typeof this?this:Array,m=arguments.length,h=m>1?arguments[1]:void 0,v=void 0!==h,x=0,b=p(f);if(v&&(h=i(h,m>2?arguments[2]:void 0,2)),null==b||d==Array&&s(b))for(t=new d(n=c(f.length));n>x;x++)u(t,x,v?h(f[x],x):f[x]);else for(l=b.call(f),t=new d;!(a=l.next()).done;x++)u(t,x,v?r(l,h,[a.value,x],!0):a.value);return t.length=x,t}})},function(e,n,t){"use strict";var i=t(0),a=t(109);i(i.S+i.F*t(3)((function(){function e(){}return!(Array.of.call(e)instanceof e)})),"Array",{of:function(){for(var e=0,n=arguments.length,t=new("function"==typeof this?this:Array)(n);n>e;)a(t,e,arguments[e++]);return t.length=n,t}})},function(e,n,t){"use strict";var i=t(0),a=t(20),o=[].join;i(i.P+i.F*(t(66)!=Object||!t(31)(o)),"Array",{join:function(e){return o.call(a(this),void 0===e?",":e)}})},function(e,n,t){"use strict";var i=t(0),a=t(95),o=t(27),r=t(52),s=t(6),c=[].slice;i(i.P+i.F*t(3)((function(){a&&c.call(a)})),"Array",{slice:function(e,n){var t=s(this.length),i=o(this);if(n=void 0===n?t:n,"Array"==i)return c.call(this,e,n);for(var a=r(e,t),u=r(n,t),p=s(u-a),l=new Array(p),f=0;f<p;f++)l[f]="String"==i?this.charAt(a+f):this[a+f];return l}})},function(e,n,t){var i=t(4),a=t(76),o=t(5)("species");e.exports=function(e){var n;return a(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!a(n.prototype)||(n=void 0),i(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},function(e,n,t){"use strict";var i=t(0),a=t(39)(1);i(i.P+i.F*!t(31)([].map,!0),"Array",{map:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(39)(3);i(i.P+i.F*!t(31)([].some,!0),"Array",{some:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(39)(4);i(i.P+i.F*!t(31)([].every,!0),"Array",{every:function(e){return a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(151);i(i.P+i.F*!t(31)([].reduce,!0),"Array",{reduce:function(e){return a(this,e,arguments.length,arguments[1],!1)}})},function(e,n,t){"use strict";var i=t(0),a=t(151);i(i.P+i.F*!t(31)([].reduceRight,!0),"Array",{reduceRight:function(e){return a(this,e,arguments.length,arguments[1],!0)}})},function(e,n,t){"use strict";var i=t(0),a=t(74)(!1),o=[].indexOf,r=!!o&&1/[1].indexOf(1,-0)<0;i(i.P+i.F*(r||!t(31)(o)),"Array",{indexOf:function(e){return r?o.apply(this,arguments)||0:a(this,e,arguments[1])}})},function(e,n,t){"use strict";var i=t(0),a=t(20),o=t(28),r=t(6),s=[].lastIndexOf,c=!!s&&1/[1].lastIndexOf(1,-0)<0;i(i.P+i.F*(c||!t(31)(s)),"Array",{lastIndexOf:function(e){if(c)return s.apply(this,arguments)||0;var n=a(this),t=r(n.length),i=t-1;for(arguments.length>1&&(i=Math.min(i,o(arguments[1]))),i<0&&(i=t+i);i>=0;i--)if(i in n&&n[i]===e)return i||0;return-1}})},function(e,n,t){var i=t(0);i(i.P,"Array",{copyWithin:t(152)}),t(48)("copyWithin")},function(e,n,t){var i=t(0);i(i.P,"Array",{fill:t(112)}),t(48)("fill")},function(e,n,t){"use strict";var i=t(0),a=t(39)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),i(i.P+i.F*o,"Array",{find:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),t(48)("find")},function(e,n,t){"use strict";var i=t(0),a=t(39)(6),o="findIndex",r=!0;o in[]&&Array(1)[o]((function(){r=!1})),i(i.P+i.F*r,"Array",{findIndex:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),t(48)(o)},function(e,n,t){t(55)("Array")},function(e,n,t){var i=t(2),a=t(99),o=t(8).f,r=t(54).f,s=t(78),c=t(69),u=i.RegExp,p=u,l=u.prototype,f=/a/g,d=/a/g,m=new u(f)!==f;if(t(7)&&(!m||t(3)((function(){return d[t(5)("match")]=!1,u(f)!=f||u(d)==d||"/a/i"!=u(f,"i")})))){u=function(e,n){var t=this instanceof u,i=s(e),o=void 0===n;return!t&&i&&e.constructor===u&&o?e:a(m?new p(i&&!o?e.source:e,n):p((i=e instanceof u)?e.source:e,i&&o?c.call(e):n),t?this:l,u)};for(var h=function(e){e in u||o(u,e,{configurable:!0,get:function(){return p[e]},set:function(n){p[e]=n}})},v=r(p),x=0;v.length>x;)h(v[x++]);l.constructor=u,u.prototype=l,t(17)(i,"RegExp",u)}t(55)("RegExp")},function(e,n,t){"use strict";t(155);var i=t(1),a=t(69),o=t(7),r=/./.toString,s=function(e){t(17)(RegExp.prototype,"toString",e,!0)};t(3)((function(){return"/a/b"!=r.call({source:"a",flags:"b"})}))?s((function(){var e=i(this);return"/".concat(e.source,"/","flags"in e?e.flags:!o&&e instanceof RegExp?a.call(e):void 0)})):"toString"!=r.name&&s((function(){return r.call(this)}))},function(e,n,t){"use strict";var i=t(1),a=t(6),o=t(115),r=t(80);t(81)("match",1,(function(e,n,t,s){return[function(t){var i=e(this),a=null==t?void 0:t[n];return void 0!==a?a.call(t,i):new RegExp(t)[n](String(i))},function(e){var n=s(t,e,this);if(n.done)return n.value;var c=i(e),u=String(this);if(!c.global)return r(c,u);var p=c.unicode;c.lastIndex=0;for(var l,f=[],d=0;null!==(l=r(c,u));){var m=String(l[0]);f[d]=m,""===m&&(c.lastIndex=o(u,a(c.lastIndex),p)),d++}return 0===d?null:f}]}))},function(e,n,t){"use strict";var i=t(1),a=t(9),o=t(6),r=t(28),s=t(115),c=t(80),u=Math.max,p=Math.min,l=Math.floor,f=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;t(81)("replace",2,(function(e,n,t,m){return[function(i,a){var o=e(this),r=null==i?void 0:i[n];return void 0!==r?r.call(i,o,a):t.call(String(o),i,a)},function(e,n){var a=m(t,e,this,n);if(a.done)return a.value;var l=i(e),f=String(this),d="function"==typeof n;d||(n=String(n));var v=l.global;if(v){var x=l.unicode;l.lastIndex=0}for(var b=[];;){var g=c(l,f);if(null===g)break;if(b.push(g),!v)break;""===String(g[0])&&(l.lastIndex=s(f,o(l.lastIndex),x))}for(var y,k="",w=0,S=0;S<b.length;S++){g=b[S];for(var j=String(g[0]),_=u(p(r(g.index),f.length),0),O=[],E=1;E<g.length;E++)O.push(void 0===(y=g[E])?y:String(y));var P=g.groups;if(d){var C=[j].concat(O,_,f);void 0!==P&&C.push(P);var A=String(n.apply(void 0,C))}else A=h(j,f,_,O,P,n);_>=w&&(k+=f.slice(w,_)+A,w=_+j.length)}return k+f.slice(w)}];function h(e,n,i,o,r,s){var c=i+e.length,u=o.length,p=d;return void 0!==r&&(r=a(r),p=f),t.call(s,p,(function(t,a){var s;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(c);case"<":s=r[a.slice(1,-1)];break;default:var p=+a;if(0===p)return t;if(p>u){var f=l(p/10);return 0===f?t:f<=u?void 0===o[f-1]?a.charAt(1):o[f-1]+a.charAt(1):t}s=o[p-1]}return void 0===s?"":s}))}}))},function(e,n,t){"use strict";var i=t(1),a=t(138),o=t(80);t(81)("search",1,(function(e,n,t,r){return[function(t){var i=e(this),a=null==t?void 0:t[n];return void 0!==a?a.call(t,i):new RegExp(t)[n](String(i))},function(e){var n=r(t,e,this);if(n.done)return n.value;var s=i(e),c=String(this),u=s.lastIndex;a(u,0)||(s.lastIndex=0);var p=o(s,c);return a(s.lastIndex,u)||(s.lastIndex=u),null===p?-1:p.index}]}))},function(e,n,t){"use strict";var i=t(78),a=t(1),o=t(70),r=t(115),s=t(6),c=t(80),u=t(114),p=t(3),l=Math.min,f=[].push,d=!p((function(){RegExp(4294967295,"y")}));t(81)("split",2,(function(e,n,t,p){var m;return m="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var a=String(this);if(void 0===e&&0===n)return[];if(!i(e))return t.call(a,e,n);for(var o,r,s,c=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,d=void 0===n?4294967295:n>>>0,m=new RegExp(e.source,p+"g");(o=u.call(m,a))&&!((r=m.lastIndex)>l&&(c.push(a.slice(l,o.index)),o.length>1&&o.index<a.length&&f.apply(c,o.slice(1)),s=o[0].length,l=r,c.length>=d));)m.lastIndex===o.index&&m.lastIndex++;return l===a.length?!s&&m.test("")||c.push(""):c.push(a.slice(l)),c.length>d?c.slice(0,d):c}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,i){var a=e(this),o=null==t?void 0:t[n];return void 0!==o?o.call(t,a,i):m.call(String(a),t,i)},function(e,n){var i=p(m,e,this,n,m!==t);if(i.done)return i.value;var u=a(e),f=String(this),h=o(u,RegExp),v=u.unicode,x=(u.ignoreCase?"i":"")+(u.multiline?"m":"")+(u.unicode?"u":"")+(d?"y":"g"),b=new h(d?u:"^(?:"+u.source+")",x),g=void 0===n?4294967295:n>>>0;if(0===g)return[];if(0===f.length)return null===c(b,f)?[f]:[];for(var y=0,k=0,w=[];k<f.length;){b.lastIndex=d?k:0;var S,j=c(b,d?f:f.slice(k));if(null===j||(S=l(s(b.lastIndex+(d?0:k)),f.length))===y)k=r(f,k,v);else{if(w.push(f.slice(y,k)),w.length===g)return w;for(var _=1;_<=j.length-1;_++)if(w.push(j[_]),w.length===g)return w;k=y=S}}return w.push(f.slice(y)),w}]}))},function(e,n,t){"use strict";var i=t(162),a=t(59);t(83)("WeakSet",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(e){return i.def(a(this,"WeakSet"),e,!0)}},i,!1,!0)},function(e,n,t){"use strict";var i=t(0),a=t(84),o=t(119),r=t(1),s=t(52),c=t(6),u=t(4),p=t(2).ArrayBuffer,l=t(70),f=o.ArrayBuffer,d=o.DataView,m=a.ABV&&p.isView,h=f.prototype.slice,v=a.VIEW;i(i.G+i.W+i.F*(p!==f),{ArrayBuffer:f}),i(i.S+i.F*!a.CONSTR,"ArrayBuffer",{isView:function(e){return m&&m(e)||u(e)&&v in e}}),i(i.P+i.U+i.F*t(3)((function(){return!new f(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(e,n){if(void 0!==h&&void 0===n)return h.call(r(this),e);for(var t=r(this).byteLength,i=s(e,t),a=s(void 0===n?t:n,t),o=new(l(this,f))(c(a-i)),u=new d(this),p=new d(o),m=0;i<a;)p.setUint8(m++,u.getUint8(i++));return o}}),t(55)("ArrayBuffer")},function(e,n,t){var i=t(0);i(i.G+i.W+i.F*!t(84).ABV,{DataView:t(119).DataView})},function(e,n,t){t(41)("Int8",1,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint8",1,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint8",1,(function(e){return function(n,t,i){return e(this,n,t,i)}}),!0)},function(e,n,t){t(41)("Int16",2,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint16",2,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Int32",4,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Uint32",4,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Float32",4,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){t(41)("Float64",8,(function(e){return function(n,t,i){return e(this,n,t,i)}}))},function(e,n,t){var i=t(0),a=t(12),o=t(1),r=(t(2).Reflect||{}).apply,s=Function.apply;i(i.S+i.F*!t(3)((function(){r((function(){}))})),"Reflect",{apply:function(e,n,t){var i=a(e),c=o(t);return r?r(i,n,c):s.call(i,n,c)}})},function(e,n,t){var i=t(0),a=t(53),o=t(12),r=t(1),s=t(4),c=t(3),u=t(139),p=(t(2).Reflect||{}).construct,l=c((function(){function e(){}return!(p((function(){}),[],e)instanceof e)})),f=!c((function(){p((function(){}))}));i(i.S+i.F*(l||f),"Reflect",{construct:function(e,n){o(e),r(n);var t=arguments.length<3?e:o(arguments[2]);if(f&&!l)return p(e,n,t);if(e==t){switch(n.length){case 0:return new e;case 1:return new e(n[0]);case 2:return new e(n[0],n[1]);case 3:return new e(n[0],n[1],n[2]);case 4:return new e(n[0],n[1],n[2],n[3])}var i=[null];return i.push.apply(i,n),new(u.apply(e,i))}var c=t.prototype,d=a(s(c)?c:Object.prototype),m=Function.apply.call(e,d,n);return s(m)?m:d}})},function(e,n,t){var i=t(8),a=t(0),o=t(1),r=t(36);a(a.S+a.F*t(3)((function(){Reflect.defineProperty(i.f({},1,{value:1}),1,{value:2})})),"Reflect",{defineProperty:function(e,n,t){o(e),n=r(n,!0),o(t);try{return i.f(e,n,t),!0}catch(e){return!1}}})},function(e,n,t){var i=t(0),a=t(21).f,o=t(1);i(i.S,"Reflect",{deleteProperty:function(e,n){var t=a(o(e),n);return!(t&&!t.configurable)&&delete e[n]}})},function(e,n,t){"use strict";var i=t(0),a=t(1),o=function(e){this._t=a(e),this._i=0;var n,t=this._k=[];for(n in e)t.push(n)};t(105)(o,"Object",(function(){var e,n=this._k;do{if(this._i>=n.length)return{value:void 0,done:!0}}while(!((e=n[this._i++])in this._t));return{value:e,done:!1}})),i(i.S,"Reflect",{enumerate:function(e){return new o(e)}})},function(e,n,t){var i=t(21),a=t(22),o=t(19),r=t(0),s=t(4),c=t(1);r(r.S,"Reflect",{get:function e(n,t){var r,u,p=arguments.length<3?n:arguments[2];return c(n)===p?n[t]:(r=i.f(n,t))?o(r,"value")?r.value:void 0!==r.get?r.get.call(p):void 0:s(u=a(n))?e(u,t,p):void 0}})},function(e,n,t){var i=t(21),a=t(0),o=t(1);a(a.S,"Reflect",{getOwnPropertyDescriptor:function(e,n){return i.f(o(e),n)}})},function(e,n,t){var i=t(0),a=t(22),o=t(1);i(i.S,"Reflect",{getPrototypeOf:function(e){return a(o(e))}})},function(e,n,t){var i=t(0);i(i.S,"Reflect",{has:function(e,n){return n in e}})},function(e,n,t){var i=t(0),a=t(1),o=Object.isExtensible;i(i.S,"Reflect",{isExtensible:function(e){return a(e),!o||o(e)}})},function(e,n,t){var i=t(0);i(i.S,"Reflect",{ownKeys:t(164)})},function(e,n,t){var i=t(0),a=t(1),o=Object.preventExtensions;i(i.S,"Reflect",{preventExtensions:function(e){a(e);try{return o&&o(e),!0}catch(e){return!1}}})},function(e,n,t){var i=t(8),a=t(21),o=t(22),r=t(19),s=t(0),c=t(49),u=t(1),p=t(4);s(s.S,"Reflect",{set:function e(n,t,s){var l,f,d=arguments.length<4?n:arguments[3],m=a.f(u(n),t);if(!m){if(p(f=o(n)))return e(f,t,s,d);m=c(0)}if(r(m,"value")){if(!1===m.writable||!p(d))return!1;if(l=a.f(d,t)){if(l.get||l.set||!1===l.writable)return!1;l.value=s,i.f(d,t,l)}else i.f(d,t,c(0,s));return!0}return void 0!==m.set&&(m.set.call(d,s),!0)}})},function(e,n,t){var i=t(0),a=t(96);a&&i(i.S,"Reflect",{setPrototypeOf:function(e,n){a.check(e,n);try{return a.set(e,n),!0}catch(e){return!1}}})},function(e,n,t){"use strict";var i=t(0),a=t(74)(!0);i(i.P,"Array",{includes:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),t(48)("includes")},function(e,n,t){"use strict";var i=t(0),a=t(165),o=t(9),r=t(6),s=t(12),c=t(111);i(i.P,"Array",{flatMap:function(e){var n,t,i=o(this);return s(e),n=r(i.length),t=c(i,0),a(t,i,i,n,0,1,e,arguments[1]),t}}),t(48)("flatMap")},function(e,n,t){"use strict";var i=t(0),a=t(165),o=t(9),r=t(6),s=t(28),c=t(111);i(i.P,"Array",{flatten:function(){var e=arguments[0],n=o(this),t=r(n.length),i=c(n,0);return a(i,n,n,t,0,void 0===e?1:s(e)),i}}),t(48)("flatten")},function(e,n,t){"use strict";var i=t(0),a=t(77)(!0);i(i.P,"String",{at:function(e){return a(this,e)}})},function(e,n,t){"use strict";var i=t(0),a=t(166),o=t(82),r=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);i(i.P+i.F*r,"String",{padStart:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0,!0)}})},function(e,n,t){"use strict";var i=t(0),a=t(166),o=t(82),r=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);i(i.P+i.F*r,"String",{padEnd:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0,!1)}})},function(e,n,t){"use strict";t(62)("trimLeft",(function(e){return function(){return e(this,1)}}),"trimStart")},function(e,n,t){"use strict";t(62)("trimRight",(function(e){return function(){return e(this,2)}}),"trimEnd")},function(e,n,t){"use strict";var i=t(0),a=t(37),o=t(6),r=t(78),s=t(69),c=RegExp.prototype,u=function(e,n){this._r=e,this._s=n};t(105)(u,"RegExp String",(function(){var e=this._r.exec(this._s);return{value:e,done:null===e}})),i(i.P,"String",{matchAll:function(e){if(a(this),!r(e))throw TypeError(e+" is not a regexp!");var n=String(this),t="flags"in c?String(e.flags):s.call(e),i=new RegExp(e.source,~t.indexOf("g")?t:"g"+t);return i.lastIndex=o(e.lastIndex),new u(i,n)}})},function(e,n,t){t(92)("observable")},function(e,n,t){var i=t(0),a=t(168)(!1);i(i.S,"Object",{values:function(e){return a(e)}})},function(e,n,t){"use strict";var i=t(0),a=t(9),o=t(12),r=t(8);t(7)&&i(i.P+t(85),"Object",{__defineGetter__:function(e,n){r.f(a(this),e,{get:o(n),enumerable:!0,configurable:!0})}})},function(e,n,t){"use strict";var i=t(0),a=t(9),o=t(12),r=t(8);t(7)&&i(i.P+t(85),"Object",{__defineSetter__:function(e,n){r.f(a(this),e,{set:o(n),enumerable:!0,configurable:!0})}})},function(e,n,t){"use strict";var i=t(0),a=t(9),o=t(36),r=t(22),s=t(21).f;t(7)&&i(i.P+t(85),"Object",{__lookupGetter__:function(e){var n,t=a(this),i=o(e,!0);do{if(n=s(t,i))return n.get}while(t=r(t))}})},function(e,n,t){"use strict";var i=t(0),a=t(9),o=t(36),r=t(22),s=t(21).f;t(7)&&i(i.P+t(85),"Object",{__lookupSetter__:function(e){var n,t=a(this),i=o(e,!0);do{if(n=s(t,i))return n.set}while(t=r(t))}})},function(e,n,t){var i=t(0);i(i.P+i.R,"Map",{toJSON:t(169)("Map")})},function(e,n,t){var i=t(0);i(i.P+i.R,"Set",{toJSON:t(169)("Set")})},function(e,n,t){t(86)("Map")},function(e,n,t){t(86)("Set")},function(e,n,t){t(86)("WeakMap")},function(e,n,t){t(86)("WeakSet")},function(e,n,t){t(87)("Map")},function(e,n,t){t(87)("Set")},function(e,n,t){t(87)("WeakMap")},function(e,n,t){t(87)("WeakSet")},function(e,n,t){var i=t(0);i(i.G,{global:t(2)})},function(e,n,t){var i=t(0);i(i.S,"System",{global:t(2)})},function(e,n,t){var i=t(0),a=t(27);i(i.S,"Error",{isError:function(e){return"Error"===a(e)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{clamp:function(e,n,t){return Math.min(t,Math.max(n,e))}})},function(e,n,t){var i=t(0);i(i.S,"Math",{DEG_PER_RAD:Math.PI/180})},function(e,n,t){var i=t(0),a=180/Math.PI;i(i.S,"Math",{degrees:function(e){return e*a}})},function(e,n,t){var i=t(0),a=t(171),o=t(146);i(i.S,"Math",{fscale:function(e,n,t,i,r){return o(a(e,n,t,i,r))}})},function(e,n,t){var i=t(0);i(i.S,"Math",{iaddh:function(e,n,t,i){var a=e>>>0,o=t>>>0;return(n>>>0)+(i>>>0)+((a&o|(a|o)&~(a+o>>>0))>>>31)|0}})},function(e,n,t){var i=t(0);i(i.S,"Math",{isubh:function(e,n,t,i){var a=e>>>0,o=t>>>0;return(n>>>0)-(i>>>0)-((~a&o|~(a^o)&a-o>>>0)>>>31)|0}})},function(e,n,t){var i=t(0);i(i.S,"Math",{imulh:function(e,n){var t=+e,i=+n,a=65535&t,o=65535&i,r=t>>16,s=i>>16,c=(r*o>>>0)+(a*o>>>16);return r*s+(c>>16)+((a*s>>>0)+(65535&c)>>16)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{RAD_PER_DEG:180/Math.PI})},function(e,n,t){var i=t(0),a=Math.PI/180;i(i.S,"Math",{radians:function(e){return e*a}})},function(e,n,t){var i=t(0);i(i.S,"Math",{scale:t(171)})},function(e,n,t){var i=t(0);i(i.S,"Math",{umulh:function(e,n){var t=+e,i=+n,a=65535&t,o=65535&i,r=t>>>16,s=i>>>16,c=(r*o>>>0)+(a*o>>>16);return r*s+(c>>>16)+((a*s>>>0)+(65535&c)>>>16)}})},function(e,n,t){var i=t(0);i(i.S,"Math",{signbit:function(e){return(e=+e)!=e?e:0==e?1/e==1/0:e>0}})},function(e,n,t){"use strict";var i=t(0),a=t(25),o=t(2),r=t(70),s=t(157);i(i.P+i.R,"Promise",{finally:function(e){var n=r(this,a.Promise||o.Promise),t="function"==typeof e;return this.then(t?function(t){return s(n,e()).then((function(){return t}))}:e,t?function(t){return s(n,e()).then((function(){throw t}))}:e)}})},function(e,n,t){"use strict";var i=t(0),a=t(118),o=t(156);i(i.S,"Promise",{try:function(e){var n=a.f(this),t=o(e);return(t.e?n.reject:n.resolve)(t.v),n.promise}})},function(e,n,t){var i=t(42),a=t(1),o=i.key,r=i.set;i.exp({defineMetadata:function(e,n,t,i){r(e,n,a(t),o(i))}})},function(e,n,t){var i=t(42),a=t(1),o=i.key,r=i.map,s=i.store;i.exp({deleteMetadata:function(e,n){var t=arguments.length<3?void 0:o(arguments[2]),i=r(a(n),t,!1);if(void 0===i||!i.delete(e))return!1;if(i.size)return!0;var c=s.get(n);return c.delete(t),!!c.size||s.delete(n)}})},function(e,n,t){var i=t(42),a=t(1),o=t(22),r=i.has,s=i.get,c=i.key,u=function(e,n,t){if(r(e,n,t))return s(e,n,t);var i=o(n);return null!==i?u(e,i,t):void 0};i.exp({getMetadata:function(e,n){return u(e,a(n),arguments.length<3?void 0:c(arguments[2]))}})},function(e,n,t){var i=t(160),a=t(170),o=t(42),r=t(1),s=t(22),c=o.keys,u=o.key,p=function(e,n){var t=c(e,n),o=s(e);if(null===o)return t;var r=p(o,n);return r.length?t.length?a(new i(t.concat(r))):r:t};o.exp({getMetadataKeys:function(e){return p(r(e),arguments.length<2?void 0:u(arguments[1]))}})},function(e,n,t){var i=t(42),a=t(1),o=i.get,r=i.key;i.exp({getOwnMetadata:function(e,n){return o(e,a(n),arguments.length<3?void 0:r(arguments[2]))}})},function(e,n,t){var i=t(42),a=t(1),o=i.keys,r=i.key;i.exp({getOwnMetadataKeys:function(e){return o(a(e),arguments.length<2?void 0:r(arguments[1]))}})},function(e,n,t){var i=t(42),a=t(1),o=t(22),r=i.has,s=i.key,c=function(e,n,t){if(r(e,n,t))return!0;var i=o(n);return null!==i&&c(e,i,t)};i.exp({hasMetadata:function(e,n){return c(e,a(n),arguments.length<3?void 0:s(arguments[2]))}})},function(e,n,t){var i=t(42),a=t(1),o=i.has,r=i.key;i.exp({hasOwnMetadata:function(e,n){return o(e,a(n),arguments.length<3?void 0:r(arguments[2]))}})},function(e,n,t){var i=t(42),a=t(1),o=t(12),r=i.key,s=i.set;i.exp({metadata:function(e,n){return function(t,i){s(e,n,(void 0!==i?a:o)(t),r(i))}}})},function(e,n,t){var i=t(0),a=t(117)(),o=t(2).process,r="process"==t(27)(o);i(i.G,{asap:function(e){var n=r&&o.domain;a(n?n.bind(e):e)}})},function(e,n,t){"use strict";var i=t(0),a=t(2),o=t(25),r=t(117)(),s=t(5)("observable"),c=t(12),u=t(1),p=t(56),l=t(58),f=t(16),d=t(57),m=d.RETURN,h=function(e){return null==e?void 0:c(e)},v=function(e){var n=e._c;n&&(e._c=void 0,n())},x=function(e){return void 0===e._o},b=function(e){x(e)||(e._o=void 0,v(e))},g=function(e,n){u(e),this._c=void 0,this._o=e,e=new y(this);try{var t=n(e),i=t;null!=t&&("function"==typeof t.unsubscribe?t=function(){i.unsubscribe()}:c(t),this._c=t)}catch(n){return void e.error(n)}x(this)&&v(this)};g.prototype=l({},{unsubscribe:function(){b(this)}});var y=function(e){this._s=e};y.prototype=l({},{next:function(e){var n=this._s;if(!x(n)){var t=n._o;try{var i=h(t.next);if(i)return i.call(t,e)}catch(e){try{b(n)}finally{throw e}}}},error:function(e){var n=this._s;if(x(n))throw e;var t=n._o;n._o=void 0;try{var i=h(t.error);if(!i)throw e;e=i.call(t,e)}catch(e){try{v(n)}finally{throw e}}return v(n),e},complete:function(e){var n=this._s;if(!x(n)){var t=n._o;n._o=void 0;try{var i=h(t.complete);e=i?i.call(t,e):void 0}catch(e){try{v(n)}finally{throw e}}return v(n),e}}});var k=function(e){p(this,k,"Observable","_f")._f=c(e)};l(k.prototype,{subscribe:function(e){return new g(e,this._f)},forEach:function(e){var n=this;return new(o.Promise||a.Promise)((function(t,i){c(e);var a=n.subscribe({next:function(n){try{return e(n)}catch(e){i(e),a.unsubscribe()}},error:i,complete:t})}))}}),l(k,{from:function(e){var n="function"==typeof this?this:k,t=h(u(e)[s]);if(t){var i=u(t.call(e));return i.constructor===n?i:new n((function(e){return i.subscribe(e)}))}return new n((function(n){var t=!1;return r((function(){if(!t){try{if(d(e,!1,(function(e){if(n.next(e),t)return m}))===m)return}catch(e){if(t)throw e;return void n.error(e)}n.complete()}})),function(){t=!0}}))},of:function(){for(var e=0,n=arguments.length,t=new Array(n);e<n;)t[e]=arguments[e++];return new("function"==typeof this?this:k)((function(e){var n=!1;return r((function(){if(!n){for(var i=0;i<t.length;++i)if(e.next(t[i]),n)return;e.complete()}})),function(){n=!0}}))}}),f(k.prototype,s,(function(){return this})),i(i.G,{Observable:k}),t(55)("Observable")},function(e,n,t){var i=t(2),a=t(0),o=t(82),r=[].slice,s=/MSIE .\./.test(o),c=function(e){return function(n,t){var i=arguments.length>2,a=!!i&&r.call(arguments,2);return e(i?function(){("function"==typeof n?n:Function(n)).apply(this,a)}:n,t)}};a(a.G+a.B+a.F*s,{setTimeout:c(i.setTimeout),setInterval:c(i.setInterval)})},function(e,n,t){var i=t(0),a=t(116);i(i.G+i.B,{setImmediate:a.set,clearImmediate:a.clear})},function(e,n,t){for(var i=t(113),a=t(51),o=t(17),r=t(2),s=t(16),c=t(63),u=t(5),p=u("iterator"),l=u("toStringTag"),f=c.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},m=a(d),h=0;h<m.length;h++){var v,x=m[h],b=d[x],g=r[x],y=g&&g.prototype;if(y&&(y[p]||s(y,p,f),y[l]||s(y,l,x),c[x]=f,b))for(v in i)y[v]||o(y,v,i[v],!0)}},function(e,n){!function(n){"use strict";var t=Object.prototype,i=t.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",r=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag",c="object"==typeof e,u=n.regeneratorRuntime;if(u)c&&(e.exports=u);else{(u=n.regeneratorRuntime=c?e.exports:{}).wrap=h;var p={},l={};l[o]=function(){return this};var f=Object.getPrototypeOf,d=f&&f(f(O([])));d&&d!==t&&i.call(d,o)&&(l=d);var m=g.prototype=x.prototype=Object.create(l);b.prototype=m.constructor=g,g.constructor=b,g[s]=b.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var n="function"==typeof e&&e.constructor;return!!n&&(n===b||"GeneratorFunction"===(n.displayName||n.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,s in e||(e[s]="GeneratorFunction")),e.prototype=Object.create(m),e},u.awrap=function(e){return{__await:e}},y(k.prototype),k.prototype[r]=function(){return this},u.AsyncIterator=k,u.async=function(e,n,t,i){var a=new k(h(e,n,t,i));return u.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},y(m),m[s]="Generator",m[o]=function(){return this},m.toString=function(){return"[object Generator]"},u.keys=function(e){var n=[];for(var t in e)n.push(t);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},u.values=O,_.prototype={constructor:_,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function t(t,i){return r.type="throw",r.arg=e,n.next=t,i&&(n.method="next",n.arg=void 0),!!i}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],r=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var s=i.call(o,"catchLoc"),c=i.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(e,n){for(var t=this.tryEntries.length-1;t>=0;--t){var a=this.tryEntries[t];if(a.tryLoc<=this.prev&&i.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=n&&n<=o.finallyLoc&&(o=null);var r=o?o.completion:{};return r.type=e,r.arg=n,o?(this.method="next",this.next=o.finallyLoc,p):this.complete(r)},complete:function(e,n){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&n&&(this.next=n),p},finish:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),j(t),p}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var i=t.completion;if("throw"===i.type){var a=i.arg;j(t)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,t){return this.delegate={iterator:O(e),resultName:n,nextLoc:t},"next"===this.method&&(this.arg=void 0),p}}}function h(e,n,t,i){var a=n&&n.prototype instanceof x?n:x,o=Object.create(a.prototype),r=new _(i||[]);return o._invoke=function(e,n,t){var i="suspendedStart";return function(a,o){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===a)throw o;return E()}for(t.method=a,t.arg=o;;){var r=t.delegate;if(r){var s=w(r,t);if(s){if(s===p)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===i)throw i="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);i="executing";var c=v(e,n,t);if("normal"===c.type){if(i=t.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(i="completed",t.method="throw",t.arg=c.arg)}}}(e,t,r),o}function v(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}function x(){}function b(){}function g(){}function y(e){["next","throw","return"].forEach((function(n){e[n]=function(e){return this._invoke(n,e)}}))}function k(e){function t(n,a,o,r){var s=v(e[n],e,a);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then((function(e){t("next",e,o,r)}),(function(e){t("throw",e,o,r)})):Promise.resolve(u).then((function(e){c.value=e,o(c)}),r)}r(s.arg)}var a;"object"==typeof n.process&&n.process.domain&&(t=n.process.domain.bind(t)),this._invoke=function(e,n){function i(){return new Promise((function(i,a){t(e,n,i,a)}))}return a=a?a.then(i,i):i()}}function w(e,n){var t=e.iterator[n.method];if(void 0===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=void 0,w(e,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var i=v(t,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,p;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,p):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function S(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function j(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function O(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var t=-1,a=function n(){for(;++t<e.length;)if(i.call(e,t))return n.value=e[t],n.done=!1,n;return n.value=void 0,n.done=!0,n};return a.next=a}}return{next:E}}function E(){return{value:void 0,done:!0}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:this)},function(e,n,t){t(390),e.exports=t(25).RegExp.escape},function(e,n,t){var i=t(0),a=t(391)(/[\\^$*+?.()|[\]{}]/g,"\\$&");i(i.S,"RegExp",{escape:function(e){return a(e)}})},function(e,n){e.exports=function(e,n){var t=n===Object(n)?function(e){return n[e]}:n;return function(n){return String(n).replace(e,t)}}},function(e,n,t){"use strict";t(10),t(11),t(14);var i=t(13);Object.defineProperty(n,"__esModule",{value:!0});var a={};n.default=void 0;var o=i(t(393)),r=i(t(394)),s=i(t(35)),c=i(t(71)),u=i(t(172)),p=i(t(190)),l=i(t(129)),f=i(t(199)),d=i(t(200)),m=i(t(201)),h=i(t(203)),v=i(t(204)),x=i(t(131)),b=i(t(460)),g=i(t(206)),y=t(461);Object.keys(y).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in n&&n[e]===y[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return y[e]}}))}));var k=t(462);Object.keys(k).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in n&&n[e]===k[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return k[e]}}))}));var w=function(){function e(n,t){(0,o.default)(this,e),(0,s.default)(this,"config",void 0),this.config=function(e,n){var t={};return"string"==typeof e&&"string"==typeof n&&(t.pinataApiKey=e,t.pinataSecretApiKey=n),"object"===(0,c.default)(e)&&(t=function(e){var n={};return e.pinataApiKey&&(n.pinataApiKey=e.pinataApiKey),e.pinataSecretApiKey&&(n.pinataSecretApiKey=e.pinataSecretApiKey),e.pinataJWTKey&&(n.pinataJWTKey=e.pinataJWTKey),n}(e)),t}(n,t)}return(0,r.default)(e,[{key:"pinByHash",value:function(e,n){return(0,u.default)(this.config,e,n)}},{key:"hashMetadata",value:function(e,n){return(0,p.default)(this.config,e,n)}},{key:"pinFileToIPFS",value:function(e,n){return(0,l.default)(this.config,e,n)}},{key:"pinFromFS",value:function(e,n){return(0,f.default)(this.config,e,n)}},{key:"pinJSONToIPFS",value:function(e,n){return(0,d.default)(this.config,e,n)}},{key:"pinJobs",value:function(e){return(0,m.default)(this.config,e)}},{key:"unpin",value:function(e){return(0,h.default)(this.config,e)}},{key:"pinList",value:function(e){return(0,x.default)(this.config,e)}},{key:"getFilesByCount",value:function(e,n){return(0,b.default)(this.config,e,n)}},{key:"testAuthentication",value:function(){return(0,v.default)(this.config)}},{key:"userPinnedDataTotal",value:function(){return(0,g.default)(this.config)}}]),e}();e.exports=w;var S=w;n.default=S},function(e,n){e.exports=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n){function t(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}e.exports=function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n,t){"use strict";var i=t(15),a=t(173),o=t(396),r=t(182);function s(e){var n=new o(e),t=a(o.prototype.request,n);return i.extend(t,o.prototype,n),i.extend(t,n),t}var c=s(t(175));c.Axios=o,c.create=function(e){return s(r(c.defaults,e))},c.Cancel=t(183),c.CancelToken=t(419),c.isCancel=t(174),c.all=function(e){return Promise.all(e)},c.spread=t(420),c.isAxiosError=t(421),e.exports=c,e.exports.default=c},function(e,n,t){"use strict";var i=t(15),a=t(121),o=t(397),r=t(398),s=t(182);function c(e){this.defaults=e,this.interceptors={request:new o,response:new o}}c.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=[r,void 0],t=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){n.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)}));n.length;)t=t.then(n.shift(),n.shift());return t},c.prototype.getUri=function(e){return e=s(this.defaults,e),a(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(e){c.prototype[e]=function(n,t){return this.request(s(t||{},{method:e,url:n,data:(t||{}).data}))}})),i.forEach(["post","put","patch"],(function(e){c.prototype[e]=function(n,t,i){return this.request(s(i||{},{method:e,url:n,data:t}))}})),e.exports=c},function(e,n,t){"use strict";var i=t(15);function a(){this.handlers=[]}a.prototype.use=function(e,n){return this.handlers.push({fulfilled:e,rejected:n}),this.handlers.length-1},a.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},a.prototype.forEach=function(e){i.forEach(this.handlers,(function(n){null!==n&&e(n)}))},e.exports=a},function(e,n,t){"use strict";var i=t(15),a=t(399),o=t(174),r=t(175);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=a(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),i.forEach(["delete","get","head","post","put","patch","common"],(function(n){delete e.headers[n]})),(e.adapter||r.adapter)(e).then((function(n){return s(e),n.data=a(n.data,n.headers,e.transformResponse),n}),(function(n){return o(n)||(s(e),n&&n.response&&(n.response.data=a(n.response.data,n.response.headers,e.transformResponse))),Promise.reject(n)}))}},function(e,n,t){"use strict";var i=t(15);e.exports=function(e,n,t){return i.forEach(t,(function(t){e=t(e,n)})),e}},function(e,n,t){"use strict";var i=t(15);e.exports=function(e,n){i.forEach(e,(function(t,i){i!==n&&i.toUpperCase()===n.toUpperCase()&&(e[n]=t,delete e[i])}))}},function(e,n,t){"use strict";var i=t(15),a=t(176),o=t(402),r=t(121),s=t(178),c=t(405),u=t(406),p=t(122);e.exports=function(e){return new Promise((function(n,t){var l=e.data,f=e.headers;i.isFormData(l)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var m=e.auth.username||"",h=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";f.Authorization="Basic "+btoa(m+":"+h)}var v=s(e.baseURL,e.url);if(d.open(e.method.toUpperCase(),r(v,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var i="getAllResponseHeaders"in d?c(d.getAllResponseHeaders()):null,o={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:i,config:e,request:d};a(n,t,o),d=null}},d.onabort=function(){d&&(t(p("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){t(p("Network Error",e,null,d)),d=null},d.ontimeout=function(){var n="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(n=e.timeoutErrorMessage),t(p(n,e,"ECONNABORTED",d)),d=null},i.isStandardBrowserEnv()){var x=(e.withCredentials||u(v))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;x&&(f[e.xsrfHeaderName]=x)}if("setRequestHeader"in d&&i.forEach(f,(function(e,n){void 0===l&&"content-type"===n.toLowerCase()?delete f[n]:d.setRequestHeader(n,e)})),i.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),e.responseType)try{d.responseType=e.responseType}catch(n){if("json"!==e.responseType)throw n}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),t(e),d=null)})),l||(l=null),d.send(l)}))}},function(e,n,t){"use strict";var i=t(15);e.exports=i.isStandardBrowserEnv()?{write:function(e,n,t,a,o,r){var s=[];s.push(e+"="+encodeURIComponent(n)),i.isNumber(t)&&s.push("expires="+new Date(t).toGMTString()),i.isString(a)&&s.push("path="+a),i.isString(o)&&s.push("domain="+o),!0===r&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,n,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,n,t){"use strict";e.exports=function(e,n){return n?e.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):e}},function(e,n,t){"use strict";var i=t(15),a=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var n,t,o,r={};return e?(i.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),n=i.trim(e.substr(0,o)).toLowerCase(),t=i.trim(e.substr(o+1)),n){if(r[n]&&a.indexOf(n)>=0)return;r[n]="set-cookie"===n?(r[n]?r[n]:[]).concat([t]):r[n]?r[n]+", "+t:t}})),r):r}},function(e,n,t){"use strict";var i=t(15);e.exports=i.isStandardBrowserEnv()?function(){var e,n=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");function a(e){var i=e;return n&&(t.setAttribute("href",i),i=t.href),t.setAttribute("href",i),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return e=a(window.location.href),function(n){var t=i.isString(n)?a(n):n;return t.protocol===e.protocol&&t.host===e.host}}():function(){return!0}},function(e,n,t){"use strict";var i=t(15),a=t(176),o=t(178),r=t(121),s=t(123),c=t(124),u=t(179).http,p=t(179).https,l=t(125),f=t(417),d=t(418),m=t(122),h=t(177),v=/https:?/;e.exports=function(e){return new Promise((function(n,t){var x=function(e){n(e)},b=function(e){t(e)},g=e.data,y=e.headers;if(y["User-Agent"]||y["user-agent"]||(y["User-Agent"]="axios/"+d.version),g&&!i.isStream(g)){if(Buffer.isBuffer(g));else if(i.isArrayBuffer(g))g=Buffer.from(new Uint8Array(g));else{if(!i.isString(g))return b(m("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",e));g=Buffer.from(g,"utf-8")}y["Content-Length"]=g.length}var k=void 0;e.auth&&(k=(e.auth.username||"")+":"+(e.auth.password||""));var w=o(e.baseURL,e.url),S=l.parse(w),j=S.protocol||"http:";if(!k&&S.auth){var _=S.auth.split(":");k=(_[0]||"")+":"+(_[1]||"")}k&&delete y.Authorization;var O=v.test(j),E=O?e.httpsAgent:e.httpAgent,P={path:r(S.path,e.params,e.paramsSerializer).replace(/^\?/,""),method:e.method.toUpperCase(),headers:y,agent:E,agents:{http:e.httpAgent,https:e.httpsAgent},auth:k};e.socketPath?P.socketPath=e.socketPath:(P.hostname=S.hostname,P.port=S.port);var C,A=e.proxy;if(!A&&!1!==A){var M=j.slice(0,-1)+"_proxy",F=process.env[M]||process.env[M.toUpperCase()];if(F){var N=l.parse(F),T=process.env.no_proxy||process.env.NO_PROXY,R=!0;if(T)R=!T.split(",").map((function(e){return e.trim()})).some((function(e){return!!e&&("*"===e||("."===e[0]&&S.hostname.substr(S.hostname.length-e.length)===e||S.hostname===e))}));if(R&&(A={host:N.hostname,port:N.port,protocol:N.protocol},N.auth)){var B=N.auth.split(":");A.auth={username:B[0],password:B[1]}}}}A&&(P.headers.host=S.hostname+(S.port?":"+S.port:""),function e(n,t,i){if(n.hostname=t.host,n.host=t.host,n.port=t.port,n.path=i,t.auth){var a=Buffer.from(t.auth.username+":"+t.auth.password,"utf8").toString("base64");n.headers["Proxy-Authorization"]="Basic "+a}n.beforeRedirect=function(n){n.headers.host=n.host,e(n,t,n.href)}}(P,A,j+"//"+S.hostname+(S.port?":"+S.port:"")+P.path));var I=O&&(!A||v.test(A.protocol));e.transport?C=e.transport:0===e.maxRedirects?C=I?c:s:(e.maxRedirects&&(P.maxRedirects=e.maxRedirects),C=I?p:u),e.maxBodyLength>-1&&(P.maxBodyLength=e.maxBodyLength);var L=C.request(P,(function(n){if(!L.aborted){var t=n,o=n.req||L;if(204!==n.statusCode&&"HEAD"!==o.method&&!1!==e.decompress)switch(n.headers["content-encoding"]){case"gzip":case"compress":case"deflate":t=t.pipe(f.createUnzip()),delete n.headers["content-encoding"]}var r={status:n.statusCode,statusText:n.statusMessage,headers:n.headers,config:e,request:o};if("stream"===e.responseType)r.data=t,a(x,b,r);else{var s=[];t.on("data",(function(n){s.push(n),e.maxContentLength>-1&&Buffer.concat(s).length>e.maxContentLength&&(t.destroy(),b(m("maxContentLength size of "+e.maxContentLength+" exceeded",e,null,o)))})),t.on("error",(function(n){L.aborted||b(h(n,e,null,o))})),t.on("end",(function(){var n=Buffer.concat(s);"arraybuffer"!==e.responseType&&(n=n.toString(e.responseEncoding),e.responseEncoding&&"utf8"!==e.responseEncoding||(n=i.stripBOM(n))),r.data=n,a(x,b,r)}))}}}));L.on("error",(function(n){L.aborted&&"ERR_FR_TOO_MANY_REDIRECTS"!==n.code||b(h(n,e,null,L))})),e.timeout&&L.setTimeout(e.timeout,(function(){L.abort(),b(m("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",L))})),e.cancelToken&&e.cancelToken.promise.then((function(e){L.aborted||(L.abort(),b(e))})),i.isStream(g)?g.on("error",(function(n){b(h(n,e,null,L))})).pipe(L):L.end(g)}))}},function(e,n){e.exports=require("assert")},function(e,n,t){var i;try{i=t(410)("follow-redirects")}catch(e){i=function(){}}e.exports=i},function(e,n,t){"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?e.exports=t(411):e.exports=t(413)},function(e,n,t){n.formatArgs=function(n){if(n[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+n[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const t="color: "+this.color;n.splice(1,0,t,"color: inherit");let i=0,a=0;n[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(i++,"%c"===e&&(a=i))}),n.splice(a,0,t)},n.save=function(e){try{e?n.storage.setItem("debug",e):n.storage.removeItem("debug")}catch(e){}},n.load=function(){let e;try{e=n.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},n.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},n.storage=function(){try{return localStorage}catch(e){}}(),n.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),n.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],n.log=console.debug||console.log||(()=>{}),e.exports=t(180)(n);const{formatters:i}=e.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},function(e,n){var t=1e3,i=6e4,a=36e5,o=24*a;function r(e,n,t){if(!(e<n))return e<1.5*n?Math.floor(e/n)+" "+t:Math.ceil(e/n)+" "+t+"s"}e.exports=function(e,n){n=n||{};var s,c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var n=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!n)return;var r=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"days":case"day":case"d":return r*o;case"hours":case"hour":case"hrs":case"hr":case"h":return r*a;case"minutes":case"minute":case"mins":case"min":case"m":return r*i;case"seconds":case"second":case"secs":case"sec":case"s":return r*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===c&&!1===isNaN(e))return n.long?r(s=e,o,"day")||r(s,a,"hour")||r(s,i,"minute")||r(s,t,"second")||s+" ms":function(e){if(e>=o)return Math.round(e/o)+"d";if(e>=a)return Math.round(e/a)+"h";if(e>=i)return Math.round(e/i)+"m";if(e>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,n,t){const i=t(414),a=t(89);n.init=function(e){e.inspectOpts={};const t=Object.keys(n.inspectOpts);for(let i=0;i<t.length;i++)e.inspectOpts[t[i]]=n.inspectOpts[t[i]]},n.log=function(...e){return process.stderr.write(a.format(...e)+"\n")},n.formatArgs=function(t){const{namespace:i,useColors:a}=this;if(a){const n=this.color,a="[3"+(n<8?n:"8;5;"+n),o=` ${a};1m${i} `;t[0]=o+t[0].split("\n").join("\n"+o),t.push(a+"m+"+e.exports.humanize(this.diff)+"")}else t[0]=function(){if(n.inspectOpts.hideDate)return"";return(new Date).toISOString()+" "}()+i+" "+t[0]},n.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},n.load=function(){return process.env.DEBUG},n.useColors=function(){return"colors"in n.inspectOpts?Boolean(n.inspectOpts.colors):i.isatty(process.stderr.fd)},n.destroy=a.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),n.colors=[6,2,3,4,5,1];try{const e=t(415);e&&(e.stderr||e).level>=2&&(n.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}n.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,n)=>{const t=n.substring(6).toLowerCase().replace(/_([a-z])/g,(e,n)=>n.toUpperCase());let i=process.env[n];return i=!!/^(yes|on|true|enabled)$/i.test(i)||!/^(no|off|false|disabled)$/i.test(i)&&("null"===i?null:Number(i)),e[t]=i,e},{}),e.exports=t(180)(n);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts).split("\n").map(e=>e.trim()).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,a.inspect(e,this.inspectOpts)}},function(e,n){e.exports=require("tty")},function(e,n,t){"use strict";const i=t(181),a=t(416),o=process.env;let r;function s(e){return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(function(e){if(!1===r)return 0;if(a("color=16m")||a("color=full")||a("color=truecolor"))return 3;if(a("color=256"))return 2;if(e&&!e.isTTY&&!0!==r)return 0;const n=r?1:0;if("win32"===process.platform){const e=i.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in o)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in o)||"codeship"===o.CI_NAME?1:n;if("TEAMCITY_VERSION"in o)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(o.TEAMCITY_VERSION)?1:0;if("truecolor"===o.COLORTERM)return 3;if("TERM_PROGRAM"in o){const e=parseInt((o.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(o.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(o.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(o.TERM)||"COLORTERM"in o?1:(o.TERM,n)}(e))}a("no-color")||a("no-colors")||a("color=false")?r=!1:(a("color")||a("colors")||a("color=true")||a("color=always"))&&(r=!0),"FORCE_COLOR"in o&&(r=0===o.FORCE_COLOR.length||0!==parseInt(o.FORCE_COLOR,10)),e.exports={supportsColor:s,stdout:s(process.stdout),stderr:s(process.stderr)}},function(e,n,t){"use strict";e.exports=(e,n)=>{n=n||process.argv;const t=e.startsWith("-")?"":1===e.length?"-":"--",i=n.indexOf(t+e),a=n.indexOf("--");return-1!==i&&(-1===a||i<a)}},function(e,n){e.exports=require("zlib")},function(e){e.exports=JSON.parse('{"_args":[["axios@0.21.1","/Users/rommelberrios/Documents/pinata/Pinata-SDK"]],"_from":"axios@0.21.1","_id":"axios@0.21.1","_inBundle":false,"_integrity":"sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==","_location":"/axios","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"axios@0.21.1","name":"axios","escapedName":"axios","rawSpec":"0.21.1","saveSpec":null,"fetchSpec":"0.21.1"},"_requiredBy":["/"],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.21.1.tgz","_spec":"0.21.1","_where":"/Users/rommelberrios/Documents/pinata/Pinata-SDK","author":{"name":"Matt Zabriskie"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"bugs":{"url":"https://github.com/axios/axios/issues"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"dependencies":{"follow-redirects":"^1.10.0"},"description":"Promise based HTTP client for the browser and node.js","devDependencies":{"bundlesize":"^0.17.0","coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.0.2","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^20.1.0","grunt-karma":"^2.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^1.0.18","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-opera-launcher":"^1.0.0","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.7.0","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^5.2.0","sinon":"^4.5.0","typescript":"^2.8.1","url-search-params":"^0.10.0","webpack":"^1.13.1","webpack-dev-server":"^1.14.1"},"homepage":"https://github.com/axios/axios","jsdelivr":"dist/axios.min.js","keywords":["xhr","http","ajax","promise","node"],"license":"MIT","main":"index.js","name":"axios","repository":{"type":"git","url":"git+https://github.com/axios/axios.git"},"scripts":{"build":"NODE_ENV=production grunt build","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","examples":"node ./examples/server.js","fix":"eslint --fix lib/**/*.js","postversion":"git push && git push --tags","preversion":"npm test","start":"node ./sandbox/server.js","test":"grunt test && bundlesize","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},"typings":"./index.d.ts","unpkg":"dist/axios.min.js","version":"0.21.1"}')},function(e,n,t){"use strict";var i=t(183);function a(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var n;this.promise=new Promise((function(e){n=e}));var t=this;e((function(e){t.reason||(t.reason=new i(e),n(t.reason))}))}a.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},a.source=function(){var e;return{token:new a((function(n){e=n})),cancel:e}},e.exports=a},function(e,n,t){"use strict";e.exports=function(e){return function(n){return e.apply(null,n)}}},function(e,n,t){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},function(e,n,t){var i=t(185),a=i.Buffer;function o(e,n){for(var t in e)n[t]=e[t]}function r(e,n,t){return a(e,n,t)}a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?e.exports=i:(o(i,n),n.Buffer=r),r.prototype=Object.create(a.prototype),o(a,r),r.from=function(e,n,t){if("number"==typeof e)throw new TypeError("Argument must not be a number");return a(e,n,t)},r.alloc=function(e,n,t){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=a(e);return void 0!==n?"string"==typeof t?i.fill(n,t):i.fill(n):i.fill(0),i},r.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return a(e)},r.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},function(e,n,t){"use strict";n.names=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"dbl-sha2-256":86,"sha3-224":23,"sha3-256":22,"sha3-384":21,"sha3-512":20,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"murmur3-128":34,"murmur3-32":35,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"Skein256-8":45825,"Skein256-16":45826,"Skein256-24":45827,"Skein256-32":45828,"Skein256-40":45829,"Skein256-48":45830,"Skein256-56":45831,"Skein256-64":45832,"Skein256-72":45833,"Skein256-80":45834,"Skein256-88":45835,"Skein256-96":45836,"Skein256-104":45837,"Skein256-112":45838,"Skein256-120":45839,"Skein256-128":45840,"Skein256-136":45841,"Skein256-144":45842,"Skein256-152":45843,"Skein256-160":45844,"Skein256-168":45845,"Skein256-176":45846,"Skein256-184":45847,"Skein256-192":45848,"Skein256-200":45849,"Skein256-208":45850,"Skein256-216":45851,"Skein256-224":45852,"Skein256-232":45853,"Skein256-240":45854,"Skein256-248":45855,"Skein256-256":45856,"Skein512-8":45857,"Skein512-16":45858,"Skein512-24":45859,"Skein512-32":45860,"Skein512-40":45861,"Skein512-48":45862,"Skein512-56":45863,"Skein512-64":45864,"Skein512-72":45865,"Skein512-80":45866,"Skein512-88":45867,"Skein512-96":45868,"Skein512-104":45869,"Skein512-112":45870,"Skein512-120":45871,"Skein512-128":45872,"Skein512-136":45873,"Skein512-144":45874,"Skein512-152":45875,"Skein512-160":45876,"Skein512-168":45877,"Skein512-176":45878,"Skein512-184":45879,"Skein512-192":45880,"Skein512-200":45881,"Skein512-208":45882,"Skein512-216":45883,"Skein512-224":45884,"Skein512-232":45885,"Skein512-240":45886,"Skein512-248":45887,"Skein512-256":45888,"Skein512-264":45889,"Skein512-272":45890,"Skein512-280":45891,"Skein512-288":45892,"Skein512-296":45893,"Skein512-304":45894,"Skein512-312":45895,"Skein512-320":45896,"Skein512-328":45897,"Skein512-336":45898,"Skein512-344":45899,"Skein512-352":45900,"Skein512-360":45901,"Skein512-368":45902,"Skein512-376":45903,"Skein512-384":45904,"Skein512-392":45905,"Skein512-400":45906,"Skein512-408":45907,"Skein512-416":45908,"Skein512-424":45909,"Skein512-432":45910,"Skein512-440":45911,"Skein512-448":45912,"Skein512-456":45913,"Skein512-464":45914,"Skein512-472":45915,"Skein512-480":45916,"Skein512-488":45917,"Skein512-496":45918,"Skein512-504":45919,"Skein512-512":45920,"Skein1024-8":45921,"Skein1024-16":45922,"Skein1024-24":45923,"Skein1024-32":45924,"Skein1024-40":45925,"Skein1024-48":45926,"Skein1024-56":45927,"Skein1024-64":45928,"Skein1024-72":45929,"Skein1024-80":45930,"Skein1024-88":45931,"Skein1024-96":45932,"Skein1024-104":45933,"Skein1024-112":45934,"Skein1024-120":45935,"Skein1024-128":45936,"Skein1024-136":45937,"Skein1024-144":45938,"Skein1024-152":45939,"Skein1024-160":45940,"Skein1024-168":45941,"Skein1024-176":45942,"Skein1024-184":45943,"Skein1024-192":45944,"Skein1024-200":45945,"Skein1024-208":45946,"Skein1024-216":45947,"Skein1024-224":45948,"Skein1024-232":45949,"Skein1024-240":45950,"Skein1024-248":45951,"Skein1024-256":45952,"Skein1024-264":45953,"Skein1024-272":45954,"Skein1024-280":45955,"Skein1024-288":45956,"Skein1024-296":45957,"Skein1024-304":45958,"Skein1024-312":45959,"Skein1024-320":45960,"Skein1024-328":45961,"Skein1024-336":45962,"Skein1024-344":45963,"Skein1024-352":45964,"Skein1024-360":45965,"Skein1024-368":45966,"Skein1024-376":45967,"Skein1024-384":45968,"Skein1024-392":45969,"Skein1024-400":45970,"Skein1024-408":45971,"Skein1024-416":45972,"Skein1024-424":45973,"Skein1024-432":45974,"Skein1024-440":45975,"Skein1024-448":45976,"Skein1024-456":45977,"Skein1024-464":45978,"Skein1024-472":45979,"Skein1024-480":45980,"Skein1024-488":45981,"Skein1024-496":45982,"Skein1024-504":45983,"Skein1024-512":45984,"Skein1024-520":45985,"Skein1024-528":45986,"Skein1024-536":45987,"Skein1024-544":45988,"Skein1024-552":45989,"Skein1024-560":45990,"Skein1024-568":45991,"Skein1024-576":45992,"Skein1024-584":45993,"Skein1024-592":45994,"Skein1024-600":45995,"Skein1024-608":45996,"Skein1024-616":45997,"Skein1024-624":45998,"Skein1024-632":45999,"Skein1024-640":46e3,"Skein1024-648":46001,"Skein1024-656":46002,"Skein1024-664":46003,"Skein1024-672":46004,"Skein1024-680":46005,"Skein1024-688":46006,"Skein1024-696":46007,"Skein1024-704":46008,"Skein1024-712":46009,"Skein1024-720":46010,"Skein1024-728":46011,"Skein1024-736":46012,"Skein1024-744":46013,"Skein1024-752":46014,"Skein1024-760":46015,"Skein1024-768":46016,"Skein1024-776":46017,"Skein1024-784":46018,"Skein1024-792":46019,"Skein1024-800":46020,"Skein1024-808":46021,"Skein1024-816":46022,"Skein1024-824":46023,"Skein1024-832":46024,"Skein1024-840":46025,"Skein1024-848":46026,"Skein1024-856":46027,"Skein1024-864":46028,"Skein1024-872":46029,"Skein1024-880":46030,"Skein1024-888":46031,"Skein1024-896":46032,"Skein1024-904":46033,"Skein1024-912":46034,"Skein1024-920":46035,"Skein1024-928":46036,"Skein1024-936":46037,"Skein1024-944":46038,"Skein1024-952":46039,"Skein1024-960":46040,"Skein1024-968":46041,"Skein1024-976":46042,"Skein1024-984":46043,"Skein1024-992":46044,"Skein1024-1000":46045,"Skein1024-1008":46046,"Skein1024-1016":46047,"Skein1024-1024":46048}),n.codes=Object.freeze({0:"identity",17:"sha1",18:"sha2-256",19:"sha2-512",86:"dbl-sha2-256",23:"sha3-224",22:"sha3-256",21:"sha3-384",20:"sha3-512",24:"shake-128",25:"shake-256",26:"keccak-224",27:"keccak-256",28:"keccak-384",29:"keccak-512",34:"murmur3-128",35:"murmur3-32",45569:"blake2b-8",45570:"blake2b-16",45571:"blake2b-24",45572:"blake2b-32",45573:"blake2b-40",45574:"blake2b-48",45575:"blake2b-56",45576:"blake2b-64",45577:"blake2b-72",45578:"blake2b-80",45579:"blake2b-88",45580:"blake2b-96",45581:"blake2b-104",45582:"blake2b-112",45583:"blake2b-120",45584:"blake2b-128",45585:"blake2b-136",45586:"blake2b-144",45587:"blake2b-152",45588:"blake2b-160",45589:"blake2b-168",45590:"blake2b-176",45591:"blake2b-184",45592:"blake2b-192",45593:"blake2b-200",45594:"blake2b-208",45595:"blake2b-216",45596:"blake2b-224",45597:"blake2b-232",45598:"blake2b-240",45599:"blake2b-248",45600:"blake2b-256",45601:"blake2b-264",45602:"blake2b-272",45603:"blake2b-280",45604:"blake2b-288",45605:"blake2b-296",45606:"blake2b-304",45607:"blake2b-312",45608:"blake2b-320",45609:"blake2b-328",45610:"blake2b-336",45611:"blake2b-344",45612:"blake2b-352",45613:"blake2b-360",45614:"blake2b-368",45615:"blake2b-376",45616:"blake2b-384",45617:"blake2b-392",45618:"blake2b-400",45619:"blake2b-408",45620:"blake2b-416",45621:"blake2b-424",45622:"blake2b-432",45623:"blake2b-440",45624:"blake2b-448",45625:"blake2b-456",45626:"blake2b-464",45627:"blake2b-472",45628:"blake2b-480",45629:"blake2b-488",45630:"blake2b-496",45631:"blake2b-504",45632:"blake2b-512",45633:"blake2s-8",45634:"blake2s-16",45635:"blake2s-24",45636:"blake2s-32",45637:"blake2s-40",45638:"blake2s-48",45639:"blake2s-56",45640:"blake2s-64",45641:"blake2s-72",45642:"blake2s-80",45643:"blake2s-88",45644:"blake2s-96",45645:"blake2s-104",45646:"blake2s-112",45647:"blake2s-120",45648:"blake2s-128",45649:"blake2s-136",45650:"blake2s-144",45651:"blake2s-152",45652:"blake2s-160",45653:"blake2s-168",45654:"blake2s-176",45655:"blake2s-184",45656:"blake2s-192",45657:"blake2s-200",45658:"blake2s-208",45659:"blake2s-216",45660:"blake2s-224",45661:"blake2s-232",45662:"blake2s-240",45663:"blake2s-248",45664:"blake2s-256",45825:"Skein256-8",45826:"Skein256-16",45827:"Skein256-24",45828:"Skein256-32",45829:"Skein256-40",45830:"Skein256-48",45831:"Skein256-56",45832:"Skein256-64",45833:"Skein256-72",45834:"Skein256-80",45835:"Skein256-88",45836:"Skein256-96",45837:"Skein256-104",45838:"Skein256-112",45839:"Skein256-120",45840:"Skein256-128",45841:"Skein256-136",45842:"Skein256-144",45843:"Skein256-152",45844:"Skein256-160",45845:"Skein256-168",45846:"Skein256-176",45847:"Skein256-184",45848:"Skein256-192",45849:"Skein256-200",45850:"Skein256-208",45851:"Skein256-216",45852:"Skein256-224",45853:"Skein256-232",45854:"Skein256-240",45855:"Skein256-248",45856:"Skein256-256",45857:"Skein512-8",45858:"Skein512-16",45859:"Skein512-24",45860:"Skein512-32",45861:"Skein512-40",45862:"Skein512-48",45863:"Skein512-56",45864:"Skein512-64",45865:"Skein512-72",45866:"Skein512-80",45867:"Skein512-88",45868:"Skein512-96",45869:"Skein512-104",45870:"Skein512-112",45871:"Skein512-120",45872:"Skein512-128",45873:"Skein512-136",45874:"Skein512-144",45875:"Skein512-152",45876:"Skein512-160",45877:"Skein512-168",45878:"Skein512-176",45879:"Skein512-184",45880:"Skein512-192",45881:"Skein512-200",45882:"Skein512-208",45883:"Skein512-216",45884:"Skein512-224",45885:"Skein512-232",45886:"Skein512-240",45887:"Skein512-248",45888:"Skein512-256",45889:"Skein512-264",45890:"Skein512-272",45891:"Skein512-280",45892:"Skein512-288",45893:"Skein512-296",45894:"Skein512-304",45895:"Skein512-312",45896:"Skein512-320",45897:"Skein512-328",45898:"Skein512-336",45899:"Skein512-344",45900:"Skein512-352",45901:"Skein512-360",45902:"Skein512-368",45903:"Skein512-376",45904:"Skein512-384",45905:"Skein512-392",45906:"Skein512-400",45907:"Skein512-408",45908:"Skein512-416",45909:"Skein512-424",45910:"Skein512-432",45911:"Skein512-440",45912:"Skein512-448",45913:"Skein512-456",45914:"Skein512-464",45915:"Skein512-472",45916:"Skein512-480",45917:"Skein512-488",45918:"Skein512-496",45919:"Skein512-504",45920:"Skein512-512",45921:"Skein1024-8",45922:"Skein1024-16",45923:"Skein1024-24",45924:"Skein1024-32",45925:"Skein1024-40",45926:"Skein1024-48",45927:"Skein1024-56",45928:"Skein1024-64",45929:"Skein1024-72",45930:"Skein1024-80",45931:"Skein1024-88",45932:"Skein1024-96",45933:"Skein1024-104",45934:"Skein1024-112",45935:"Skein1024-120",45936:"Skein1024-128",45937:"Skein1024-136",45938:"Skein1024-144",45939:"Skein1024-152",45940:"Skein1024-160",45941:"Skein1024-168",45942:"Skein1024-176",45943:"Skein1024-184",45944:"Skein1024-192",45945:"Skein1024-200",45946:"Skein1024-208",45947:"Skein1024-216",45948:"Skein1024-224",45949:"Skein1024-232",45950:"Skein1024-240",45951:"Skein1024-248",45952:"Skein1024-256",45953:"Skein1024-264",45954:"Skein1024-272",45955:"Skein1024-280",45956:"Skein1024-288",45957:"Skein1024-296",45958:"Skein1024-304",45959:"Skein1024-312",45960:"Skein1024-320",45961:"Skein1024-328",45962:"Skein1024-336",45963:"Skein1024-344",45964:"Skein1024-352",45965:"Skein1024-360",45966:"Skein1024-368",45967:"Skein1024-376",45968:"Skein1024-384",45969:"Skein1024-392",45970:"Skein1024-400",45971:"Skein1024-408",45972:"Skein1024-416",45973:"Skein1024-424",45974:"Skein1024-432",45975:"Skein1024-440",45976:"Skein1024-448",45977:"Skein1024-456",45978:"Skein1024-464",45979:"Skein1024-472",45980:"Skein1024-480",45981:"Skein1024-488",45982:"Skein1024-496",45983:"Skein1024-504",45984:"Skein1024-512",45985:"Skein1024-520",45986:"Skein1024-528",45987:"Skein1024-536",45988:"Skein1024-544",45989:"Skein1024-552",45990:"Skein1024-560",45991:"Skein1024-568",45992:"Skein1024-576",45993:"Skein1024-584",45994:"Skein1024-592",45995:"Skein1024-600",45996:"Skein1024-608",45997:"Skein1024-616",45998:"Skein1024-624",45999:"Skein1024-632",46e3:"Skein1024-640",46001:"Skein1024-648",46002:"Skein1024-656",46003:"Skein1024-664",46004:"Skein1024-672",46005:"Skein1024-680",46006:"Skein1024-688",46007:"Skein1024-696",46008:"Skein1024-704",46009:"Skein1024-712",46010:"Skein1024-720",46011:"Skein1024-728",46012:"Skein1024-736",46013:"Skein1024-744",46014:"Skein1024-752",46015:"Skein1024-760",46016:"Skein1024-768",46017:"Skein1024-776",46018:"Skein1024-784",46019:"Skein1024-792",46020:"Skein1024-800",46021:"Skein1024-808",46022:"Skein1024-816",46023:"Skein1024-824",46024:"Skein1024-832",46025:"Skein1024-840",46026:"Skein1024-848",46027:"Skein1024-856",46028:"Skein1024-864",46029:"Skein1024-872",46030:"Skein1024-880",46031:"Skein1024-888",46032:"Skein1024-896",46033:"Skein1024-904",46034:"Skein1024-912",46035:"Skein1024-920",46036:"Skein1024-928",46037:"Skein1024-936",46038:"Skein1024-944",46039:"Skein1024-952",46040:"Skein1024-960",46041:"Skein1024-968",46042:"Skein1024-976",46043:"Skein1024-984",46044:"Skein1024-992",46045:"Skein1024-1000",46046:"Skein1024-1008",46047:"Skein1024-1016",46048:"Skein1024-1024"}),n.defaultLengths=Object.freeze({17:20,18:32,19:64,86:32,23:28,22:32,21:48,20:64,24:32,25:64,26:28,27:32,28:48,29:64,34:32,45569:1,45570:2,45571:3,45572:4,45573:5,45574:6,45575:7,45576:8,45577:9,45578:10,45579:11,45580:12,45581:13,45582:14,45583:15,45584:16,45585:17,45586:18,45587:19,45588:20,45589:21,45590:22,45591:23,45592:24,45593:25,45594:26,45595:27,45596:28,45597:29,45598:30,45599:31,45600:32,45601:33,45602:34,45603:35,45604:36,45605:37,45606:38,45607:39,45608:40,45609:41,45610:42,45611:43,45612:44,45613:45,45614:46,45615:47,45616:48,45617:49,45618:50,45619:51,45620:52,45621:53,45622:54,45623:55,45624:56,45625:57,45626:58,45627:59,45628:60,45629:61,45630:62,45631:63,45632:64,45633:1,45634:2,45635:3,45636:4,45637:5,45638:6,45639:7,45640:8,45641:9,45642:10,45643:11,45644:12,45645:13,45646:14,45647:15,45648:16,45649:17,45650:18,45651:19,45652:20,45653:21,45654:22,45655:23,45656:24,45657:25,45658:26,45659:27,45660:28,45661:29,45662:30,45663:31,45664:32,45825:1,45826:2,45827:3,45828:4,45829:5,45830:6,45831:7,45832:8,45833:9,45834:10,45835:11,45836:12,45837:13,45838:14,45839:15,45840:16,45841:17,45842:18,45843:19,45844:20,45845:21,45846:22,45847:23,45848:24,45849:25,45850:26,45851:27,45852:28,45853:29,45854:30,45855:31,45856:32,45857:1,45858:2,45859:3,45860:4,45861:5,45862:6,45863:7,45864:8,45865:9,45866:10,45867:11,45868:12,45869:13,45870:14,45871:15,45872:16,45873:17,45874:18,45875:19,45876:20,45877:21,45878:22,45879:23,45880:24,45881:25,45882:26,45883:27,45884:28,45885:29,45886:30,45887:31,45888:32,45889:33,45890:34,45891:35,45892:36,45893:37,45894:38,45895:39,45896:40,45897:41,45898:42,45899:43,45900:44,45901:45,45902:46,45903:47,45904:48,45905:49,45906:50,45907:51,45908:52,45909:53,45910:54,45911:55,45912:56,45913:57,45914:58,45915:59,45916:60,45917:61,45918:62,45919:63,45920:64,45921:1,45922:2,45923:3,45924:4,45925:5,45926:6,45927:7,45928:8,45929:9,45930:10,45931:11,45932:12,45933:13,45934:14,45935:15,45936:16,45937:17,45938:18,45939:19,45940:20,45941:21,45942:22,45943:23,45944:24,45945:25,45946:26,45947:27,45948:28,45949:29,45950:30,45951:31,45952:32,45953:33,45954:34,45955:35,45956:36,45957:37,45958:38,45959:39,45960:40,45961:41,45962:42,45963:43,45964:44,45965:45,45966:46,45967:47,45968:48,45969:49,45970:50,45971:51,45972:52,45973:53,45974:54,45975:55,45976:56,45977:57,45978:58,45979:59,45980:60,45981:61,45982:62,45983:63,45984:64,45985:65,45986:66,45987:67,45988:68,45989:69,45990:70,45991:71,45992:72,45993:73,45994:74,45995:75,45996:76,45997:77,45998:78,45999:79,46e3:80,46001:81,46002:82,46003:83,46004:84,46005:85,46006:86,46007:87,46008:88,46009:89,46010:90,46011:91,46012:92,46013:93,46014:94,46015:95,46016:96,46017:97,46018:98,46019:99,46020:100,46021:101,46022:102,46023:103,46024:104,46025:105,46026:106,46027:107,46028:108,46029:109,46030:110,46031:111,46032:112,46033:113,46034:114,46035:115,46036:116,46037:117,46038:118,46039:119,46040:120,46041:121,46042:122,46043:123,46044:124,46045:125,46046:126,46047:127,46048:128})},function(e,n){e.exports=function e(n,i,a){i=i||[];var o=a=a||0;for(;n>=t;)i[a++]=255&n|128,n/=128;for(;-128&n;)i[a++]=255&n|128,n>>>=7;return i[a]=0|n,e.bytes=a-o+1,i};var t=Math.pow(2,31)},function(e,n){e.exports=function e(n,t){var i,a=0,o=0,r=t=t||0,s=n.length;do{if(r>=s)throw e.bytes=0,new RangeError("Could not decode varint");i=n[r++],a+=o<28?(127&i)<<o:(127&i)*Math.pow(2,o),o+=7}while(i>=128);return e.bytes=r-t,a}},function(e,n){var t=Math.pow(2,7),i=Math.pow(2,14),a=Math.pow(2,21),o=Math.pow(2,28),r=Math.pow(2,35),s=Math.pow(2,42),c=Math.pow(2,49),u=Math.pow(2,56),p=Math.pow(2,63);e.exports=function(e){return e<t?1:e<i?2:e<a?3:e<o?4:e<r?5:e<s?6:e<c?7:e<u?8:e<p?9:10}},function(e,n,t){"use strict";const i=t(428),a=t(184),o=t(429),r=t(430),s=t(431),c=[["base1","1","","1"],["base2","0",a,"01"],["base8","7",a,"01234567"],["base10","9",a,"0123456789"],["base16","f",o,"0123456789abcdef"],["base32","b",r,"abcdefghijklmnopqrstuvwxyz234567"],["base32pad","c",r,"abcdefghijklmnopqrstuvwxyz234567="],["base32hex","v",r,"0123456789abcdefghijklmnopqrstuv"],["base32hexpad","t",r,"0123456789abcdefghijklmnopqrstuv="],["base32z","h",r,"ybndrfg8ejkmcpqxot1uwisza345h769"],["base58flickr","Z",a,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base58btc","z",a,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base64","m",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",s,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],u=c.reduce((e,n)=>(e[n[0]]=new i(n[0],n[1],n[2],n[3]),e),{}),p=c.reduce((e,n)=>(e[n[1]]=u[n[0]],e),{});e.exports={names:u,codes:p}},function(e,n,t){"use strict";e.exports=class{constructor(e,n,t,i){this.name=e,this.code=n,this.alphabet=i,t&&i&&(this.engine=t(i))}encode(e){return this.engine.encode(e)}decode(e){return this.engine.decode(e)}isImplemented(){return this.engine}}},function(e,n,t){"use strict";e.exports=function(e){return{encode:e=>"string"==typeof e?Buffer.from(e).toString("hex"):e.toString("hex"),decode(n){for(let t of n)if(e.indexOf(t)<0)throw new Error("invalid base16 character");return Buffer.from(n,"hex")}}}},function(e,n,t){"use strict";function i(e,n){let t=e.byteLength,i=new Uint8Array(e),a=n.indexOf("=")===n.length-1;a&&(n=n.substring(0,n.length-2));let o=0,r=0,s="";for(let e=0;e<t;e++)for(r=r<<8|i[e],o+=8;o>=5;)s+=n[r>>>o-5&31],o-=5;if(o>0&&(s+=n[r<<5-o&31]),a)for(;s.length%8!=0;)s+="=";return s}e.exports=function(e){return{encode:n=>i("string"==typeof n?Buffer.from(n):n,e),decode(n){for(let t of n)if(e.indexOf(t)<0)throw new Error("invalid base32 character");return function(e,n){let t=(e=e.replace(new RegExp("=","g"),"")).length,i=0,a=0,o=0,r=new Uint8Array(5*t/8|0);for(let s=0;s<t;s++)a=a<<5|n.indexOf(e[s]),i+=5,i>=8&&(r[o++]=a>>>i-8&255,i-=8);return r.buffer}(n,e)}}}},function(e,n,t){"use strict";e.exports=function(e){const n=e.indexOf("=")>-1,t=e.indexOf("-")>-1&&e.indexOf("_")>-1;return{encode(e){let i="";i="string"==typeof e?Buffer.from(e).toString("base64"):e.toString("base64"),t&&(i=i.replace(/\+/g,"-").replace(/\//g,"_"));const a=i.indexOf("=");return a>0&&!n&&(i=i.substring(0,a)),i},decode(n){for(let t of n)if(e.indexOf(t)<0)throw new Error("invalid base64 character");return Buffer.from(n,"base64")}}}},function(e,n,t){"use strict";const i=t(433),a=t(127),o=t(64);function r(e){const n=[],t=e.split("/").slice(1);if(1===t.length&&""===t[0])return[];for(let i=0;i<t.length;i++){const o=t[i],r=a(o);if(0!==r.size){if(i++,i>=t.length)throw x("invalid address: "+e);if(r.path){n.push([o,v(t.slice(i).join("/"))]);break}n.push([o,t[i]])}else n.push([o])}return n}function s(e){const n=[];return e.map(e=>{const t=b(e);n.push(t.name),e.length>1&&n.push(e[1])}),v(n.join("/"))}function c(e){return e.map(e=>{Array.isArray(e)||(e=[e]);const n=b(e);return e.length>1?[n.code,i.toBuffer(n.code,e[1])]:[n.code]})}function u(e){return e.map(e=>{const n=b(e);return e.length>1?[n.code,i.toString(n.code,e[1])]:[n.code]})}function p(e){return m(Buffer.concat(e.map(e=>{const n=b(e);let t=Buffer.from(o.encode(n.code));return e.length>1&&(t=Buffer.concat([t,e[1]])),t})))}function l(e,n){if(e.size>0)return e.size/8;if(0===e.size)return 0;return o.decode(n)+o.decode.bytes}function f(e){const n=[];let t=0;for(;t<e.length;){const i=o.decode(e,t),r=o.decode.bytes,s=l(a(i),e.slice(t+r));if(0===s){n.push([i]),t+=r;continue}const c=e.slice(t+r,t+r+s);if(t+=s+r,t>e.length)throw x("Invalid address buffer: "+e.toString("hex"));n.push([i,c])}return n}function d(e){return p(c(r(e=v(e))))}function m(e){const n=h(e);if(n)throw n;return Buffer.from(e)}function h(e){try{f(e)}catch(e){return e}}function v(e){return"/"+e.trim().split("/").filter(e=>e).join("/")}function x(e){return new Error("Error parsing address: "+e)}function b(e){return a(e[0])}e.exports={stringToStringTuples:r,stringTuplesToString:s,tuplesToStringTuples:u,stringTuplesToTuples:c,bufferToTuples:f,tuplesToBuffer:p,bufferToString:function(e){return s(u(f(e)))},stringToBuffer:d,fromString:function(e){return d(e)},fromBuffer:m,validateBuffer:h,isValidBuffer:function(e){return void 0===h(e)},cleanPath:v,ParseError:x,protoFromTuple:b,sizeForAddr:l}},function(e,n,t){"use strict";const i=t(434),a=t(435),o=t(127),r=t(90),s=t(128),c=t(443),u=t(64);function p(e,n){return n instanceof Buffer?p.toString(e,n):p.toBuffer(e,n)}function l(e){if(!a(e))throw new Error("invalid ip address");return i.toBuffer(e)}function f(e){const n=Buffer.alloc(2);return n.writeUInt16BE(e,0),n}function d(e){return e.readUInt16BE(0)}function m(e){const n=e.slice(0,e.length-2),t=e.slice(e.length-2);return c.encode(n).toLowerCase()+":"+d(t)}e.exports=p,p.toString=function(e,n){switch((e=o(e)).code){case 4:case 41:return function(e){const n=i.toString(e);if(!a(n))throw new Error("invalid ip address");return n}(n);case 6:case 273:case 33:case 132:return d(n);case 53:case 54:case 55:case 56:case 400:return function(e){const n=u.decode(e);if((e=e.slice(u.decode.bytes)).length!==n)throw new Error("inconsistent lengths");return e.toString()}(n);case 421:return function(e){const n=u.decode(e),t=e.slice(u.decode.bytes);if(t.length!==n)throw new Error("inconsistent lengths");return r.encode(t)}(n);case 444:case 445:return m(n);default:return n.toString("hex")}},p.toBuffer=function(e,n){switch((e=o(e)).code){case 4:case 41:return l(n);case 6:case 273:case 33:case 132:return f(parseInt(n,10));case 53:case 54:case 55:case 56:case 400:return function(e){const n=Buffer.from(e),t=Buffer.from(u.encode(n.length));return Buffer.concat([t,n])}(n);case 421:return function(e){const n=new s(e).multihash,t=Buffer.from(u.encode(n.length));return Buffer.concat([t,n])}(n);case 444:return function(e){const n=e.split(":");if(2!==n.length)throw new Error("failed to parse onion addr: "+n+" does not contain a port number");if(16!==n[0].length)throw new Error("failed to parse onion addr: "+n[0]+" not a Tor onion address.");const t=Buffer.from(c.decode.asBytes(n[0].toUpperCase())),i=parseInt(n[1],10);if(i<1||i>65536)throw new Error("Port number is not in range(1, 65536)");const a=f(i);return Buffer.concat([t,a])}(n);case 445:return function(e){const n=e.split(":");if(2!==n.length)throw new Error("failed to parse onion addr: "+n+" does not contain a port number");if(56!==n[0].length)throw new Error("failed to parse onion addr: "+n[0]+" not a Tor onion3 address.");const t=Buffer.from(c.decode.asBytes(n[0].toUpperCase())),i=parseInt(n[1],10);if(i<1||i>65536)throw new Error("Port number is not in range(1, 65536)");const a=f(i);return Buffer.concat([t,a])}(n);default:return Buffer.from(n,"hex")}}},function(e,n,t){"use strict";var i=n,a=t(185).Buffer,o=t(181);i.toBuffer=function(e,n,t){var i;if(t=~~t,this.isV4Format(e))i=n||new a(t+4),e.split(/\./g).map((function(e){i[t++]=255&parseInt(e,10)}));else if(this.isV6Format(e)){var o,r=e.split(":",8);for(o=0;o<r.length;o++){var s;this.isV4Format(r[o])&&(s=this.toBuffer(r[o]),r[o]=s.slice(0,2).toString("hex")),s&&++o<8&&r.splice(o,0,s.slice(2,4).toString("hex"))}if(""===r[0])for(;r.length<8;)r.unshift("0");else if(""===r[r.length-1])for(;r.length<8;)r.push("0");else if(r.length<8){for(o=0;o<r.length&&""!==r[o];o++);var c=[o,1];for(o=9-r.length;o>0;o--)c.push("0");r.splice.apply(r,c)}for(i=n||new a(t+16),o=0;o<r.length;o++){var u=parseInt(r[o],16);i[t++]=u>>8&255,i[t++]=255&u}}if(!i)throw Error("Invalid ip address: "+e);return i},i.toString=function(e,n,t){n=~~n;var i=[];if(4===(t=t||e.length-n)){for(var a=0;a<t;a++)i.push(e[n+a]);i=i.join(".")}else if(16===t){for(a=0;a<t;a+=2)i.push(e.readUInt16BE(n+a).toString(16));i=(i=(i=i.join(":")).replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3")).replace(/:{3,4}/,"::")}return i};var r=/^(\d{1,3}\.){3,3}\d{1,3}$/,s=/^(::)?(((\d{1,3}\.){3}(\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?$/i;function c(e){return e?e.toLowerCase():"ipv4"}i.isV4Format=function(e){return r.test(e)},i.isV6Format=function(e){return s.test(e)},i.fromPrefixLen=function(e,n){var t=4;"ipv6"===(n=e>32?"ipv6":c(n))&&(t=16);for(var o=new a(t),r=0,s=o.length;r<s;++r){var u=8;e<8&&(u=e),e-=u,o[r]=255&~(255>>u)}return i.toString(o)},i.mask=function(e,n){e=i.toBuffer(e),n=i.toBuffer(n);var t=new a(Math.max(e.length,n.length)),o=0;if(e.length===n.length)for(o=0;o<e.length;o++)t[o]=e[o]&n[o];else if(4===n.length)for(o=0;o<n.length;o++)t[o]=e[e.length-4+o]&n[o];else{for(o=0;o<t.length-6;o++)t[o]=0;for(t[10]=255,t[11]=255,o=0;o<e.length;o++)t[o+12]=e[o]&n[o+12];o+=12}for(;o<t.length;o++)t[o]=0;return i.toString(t)},i.cidr=function(e){var n=e.split("/"),t=n[0];if(2!==n.length)throw new Error("invalid CIDR subnet: "+t);var a=i.fromPrefixLen(parseInt(n[1],10));return i.mask(t,a)},i.subnet=function(e,n){for(var t=i.toLong(i.mask(e,n)),a=i.toBuffer(n),o=0,r=0;r<a.length;r++)if(255===a[r])o+=8;else for(var s=255&a[r];s;)s=s<<1&255,o++;var c=Math.pow(2,32-o);return{networkAddress:i.fromLong(t),firstAddress:c<=2?i.fromLong(t):i.fromLong(t+1),lastAddress:c<=2?i.fromLong(t+c-1):i.fromLong(t+c-2),broadcastAddress:i.fromLong(t+c-1),subnetMask:n,subnetMaskLength:o,numHosts:c<=2?c:c-2,length:c,contains:function(e){return t===i.toLong(i.mask(e,n))}}},i.cidrSubnet=function(e){var n=e.split("/"),t=n[0];if(2!==n.length)throw new Error("invalid CIDR subnet: "+t);var a=i.fromPrefixLen(parseInt(n[1],10));return i.subnet(t,a)},i.not=function(e){for(var n=i.toBuffer(e),t=0;t<n.length;t++)n[t]=255^n[t];return i.toString(n)},i.or=function(e,n){if(e=i.toBuffer(e),n=i.toBuffer(n),e.length===n.length){for(var t=0;t<e.length;++t)e[t]|=n[t];return i.toString(e)}var a=e,o=n;n.length>e.length&&(a=n,o=e);var r=a.length-o.length;for(t=r;t<a.length;++t)a[t]|=o[t-r];return i.toString(a)},i.isEqual=function(e,n){if(e=i.toBuffer(e),n=i.toBuffer(n),e.length===n.length){for(var t=0;t<e.length;t++)if(e[t]!==n[t])return!1;return!0}if(4===n.length){var a=n;n=e,e=a}for(t=0;t<10;t++)if(0!==n[t])return!1;var o=n.readUInt16BE(10);if(0!==o&&65535!==o)return!1;for(t=0;t<4;t++)if(e[t]!==n[t+12])return!1;return!0},i.isPrivate=function(e){return/^(::f{4}:)?10\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?192\.168\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?172\.(1[6-9]|2\d|30|31)\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^(::f{4}:)?169\.254\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(e)||/^f[cd][0-9a-f]{2}:/i.test(e)||/^fe80:/i.test(e)||/^::1$/.test(e)||/^::$/.test(e)},i.isPublic=function(e){return!i.isPrivate(e)},i.isLoopback=function(e){return/^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/.test(e)||/^fe80::1$/.test(e)||/^::1$/.test(e)||/^::$/.test(e)},i.loopback=function(e){if("ipv4"!==(e=c(e))&&"ipv6"!==e)throw new Error("family must be ipv4 or ipv6");return"ipv4"===e?"127.0.0.1":"fe80::1"},i.address=function(e,n){var t,a=o.networkInterfaces();if(n=c(n),e&&"private"!==e&&"public"!==e){var r=a[e].filter((function(e){return e.family.toLowerCase()===n}));if(0===r.length)return;return r[0].address}return(t=Object.keys(a).map((function(t){var o=a[t].filter((function(t){return t.family=t.family.toLowerCase(),t.family===n&&!i.isLoopback(t.address)&&(!e||("public"===e?i.isPrivate(t.address):i.isPublic(t.address)))}));return o.length?o[0].address:void 0})).filter(Boolean)).length?t[0]:i.loopback(n)},i.toLong=function(e){var n=0;return e.split(".").forEach((function(e){n<<=8,n+=parseInt(e)})),n>>>0},i.fromLong=function(e){return(e>>>24)+"."+(e>>16&255)+"."+(e>>8&255)+"."+(255&e)}},function(e,n,t){"use strict";const i=t(436),a=e=>i({exact:!0}).test(e);a.v4=e=>i.v4({exact:!0}).test(e),a.v6=e=>i.v6({exact:!0}).test(e),a.version=e=>a(e)?a.v4(e)?4:6:void 0,e.exports=a},function(e,n,t){"use strict";const i=e=>e&&e.includeBoundaries?"(?:(?<=\\s|^)(?=[a-fA-F\\d:])|(?<=[a-fA-F\\d:])(?=\\s|$))":"",a="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",o="[a-fA-F\\d]{1,4}",r=`\n(\n(?:${o}:){7}(?:${o}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${o}:){6}(?:${a}|:${o}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${o}:){5}(?::${a}|(:${o}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${o}:){4}(?:(:${o}){0,1}:${a}|(:${o}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${o}:){3}(?:(:${o}){0,2}:${a}|(:${o}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${o}:){2}(?:(:${o}){0,3}:${a}|(:${o}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${o}:){1}(?:(:${o}){0,4}:${a}|(:${o}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::((?::${o}){0,5}:${a}|(?::${o}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),s=e=>e&&e.exact?new RegExp(`(?:^${a}$)|(?:^${r}$)`):new RegExp(`(?:${i(e)}${a}${i(e)})|(?:${i(e)}${r}${i(e)})`,"g");s.v4=e=>e&&e.exact?new RegExp(`^${a}$`):new RegExp(`${i(e)}${a}${i(e)}`,"g"),s.v6=e=>e&&e.exact?new RegExp(`^${r}$`):new RegExp(`${i(e)}${r}${i(e)}`,"g"),e.exports=s},function(e,n,t){"use strict";const i=t(64),a=t(438),o=t(439),r=t(188);(n=e.exports).addPrefix=(e,n)=>{let t;if(Buffer.isBuffer(e))t=r.varintBufferEncode(e);else{if(!o[e])throw new Error("multicodec not recognized");t=o[e]}return Buffer.concat([t,n])},n.rmPrefix=e=>(i.decode(e),e.slice(i.decode.bytes)),n.getCodec=e=>{const n=i.decode(e),t=a.get(n);if(void 0===t)throw new Error(`Code ${n} not found`);return t},n.getName=e=>a.get(e),n.getNumber=e=>{const n=o[e];if(void 0===n)throw new Error("Codec `"+e+"` not found");return r.varintBufferDecode(n)[0]},n.getCode=e=>i.decode(e),n.getCodeVarint=e=>{const n=o[e];if(void 0===n)throw new Error("Codec `"+e+"` not found");return n},n.getVarint=e=>i.encode(e);const s=t(440);Object.assign(n,s),n.print=t(441)},function(e,n,t){"use strict";const i=t(73),a=new Map;for(const e in i){const n=i[e];a.set(n,e)}e.exports=Object.freeze(a)},function(e,n,t){"use strict";const i=t(73),a=t(188).varintEncode,o={};for(const e in i){const n=i[e];o[e]=a(n)}e.exports=Object.freeze(o)},function(e,n,t){"use strict";const i=t(73),a={};for(const[e,n]of Object.entries(i))a[e.toUpperCase().replace(/-/g,"_")]=n;e.exports=Object.freeze(a)},function(e,n,t){"use strict";const i=t(73),a={};for(const[e,n]of Object.entries(i))void 0===a[n]&&(a[n]=e);e.exports=Object.freeze(a)},function(e,n,t){"use strict";const i=t(126);var a={checkCIDComponents:function(e){if(null==e)return"null values are not valid CIDs";if(0!==e.version&&1!==e.version)return"Invalid version, must be a number equal to 1 or 0";if("string"!=typeof e.codec)return"codec must be string";if(0===e.version){if("dag-pb"!==e.codec)return"codec must be 'dag-pb' for CIDv0";if("base58btc"!==e.multibaseName)return"multibaseName must be 'base58btc' for CIDv0"}if(!Buffer.isBuffer(e.multihash))return"multihash must be a Buffer";try{i.validate(e.multihash)}catch(e){let n=e.message;return n||(n="Multihash validation failed"),n}}};e.exports=a},function(e,n,t){var i;
2
- /*
3
- * [hi-base32]{@link https://github.com/emn178/hi-base32}
4
- *
5
- * @version 0.5.0
6
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
- * @copyright Chen, Yi-Cyuan 2015-2018
8
- * @license MIT
9
- */!function(){"use strict";var n="object"==typeof window?window:{};!n.HI_BASE32_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node&&(n=global);var a=!n.HI_BASE32_NO_COMMON_JS&&"object"==typeof e&&e.exports,o=t(444),r="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split(""),s={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,2:26,3:27,4:28,5:29,6:30,7:31},c=[0,0,0,0,0,0,0,0],u=function(e,n){n.length>10&&(n="..."+n.substr(-10));var t=new Error("Decoded data is not valid UTF-8. Maybe try base32.decode.asBytes()? Partial data after reading "+e+" bytes: "+n+" <-");throw t.position=e,t},p=function(e){if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");for(var n,t,i,a,o,r,c,u,p=[],l=0,f=(e=e.replace(/=/g,"")).length,d=0,m=f>>3<<3;d<m;)n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],o=s[e.charAt(d++)],r=s[e.charAt(d++)],c=s[e.charAt(d++)],u=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4),p[l++]=255&(a<<4|o>>>1),p[l++]=255&(o<<7|r<<2|c>>>3),p[l++]=255&(c<<5|u);var h=f-m;return 2===h?(n=s[e.charAt(d++)],t=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2)):4===h?(n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4)):5===h?(n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],o=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4),p[l++]=255&(a<<4|o>>>1)):7===h&&(n=s[e.charAt(d++)],t=s[e.charAt(d++)],i=s[e.charAt(d++)],a=s[e.charAt(d++)],o=s[e.charAt(d++)],r=s[e.charAt(d++)],c=s[e.charAt(d++)],p[l++]=255&(n<<3|t>>>2),p[l++]=255&(t<<6|i<<1|a>>>4),p[l++]=255&(a<<4|o>>>1),p[l++]=255&(o<<7|r<<2|c>>>3)),p},l=function(e,n){if(!n)return function(e){for(var n,t,i="",a=e.length,o=0,r=0;o<a;)if((n=e[o++])<=127)i+=String.fromCharCode(n);else{n>191&&n<=223?(t=31&n,r=1):n<=239?(t=15&n,r=2):n<=247?(t=7&n,r=3):u(o,i);for(var s=0;s<r;++s)((n=e[o++])<128||n>191)&&u(o,i),t<<=6,t+=63&n;t>=55296&&t<=57343&&u(o,i),t>1114111&&u(o,i),t<=65535?i+=String.fromCharCode(t):(t-=65536,i+=String.fromCharCode(55296+(t>>10)),i+=String.fromCharCode(56320+(1023&t)))}return i}(p(e));if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");var t,i,a,o,r,c,l,f,d="",m=e.indexOf("=");-1===m&&(m=e.length);for(var h=0,v=m>>3<<3;h<v;)t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],r=s[e.charAt(h++)],c=s[e.charAt(h++)],l=s[e.charAt(h++)],f=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))+String.fromCharCode(255&(o<<4|r>>>1))+String.fromCharCode(255&(r<<7|c<<2|l>>>3))+String.fromCharCode(255&(l<<5|f));var x=m-v;return 2===x?(t=s[e.charAt(h++)],i=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))):4===x?(t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))):5===x?(t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],r=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))+String.fromCharCode(255&(o<<4|r>>>1))):7===x&&(t=s[e.charAt(h++)],i=s[e.charAt(h++)],a=s[e.charAt(h++)],o=s[e.charAt(h++)],r=s[e.charAt(h++)],c=s[e.charAt(h++)],l=s[e.charAt(h++)],d+=String.fromCharCode(255&(t<<3|i>>>2))+String.fromCharCode(255&(i<<6|a<<1|o>>>4))+String.fromCharCode(255&(o<<4|r>>>1))+String.fromCharCode(255&(r<<7|c<<2|l>>>3))),d},f={encode:function(e,n){var t="string"!=typeof e;return t&&e.constructor===ArrayBuffer&&(e=new Uint8Array(e)),t?function(e){for(var n,t,i,a,o,s="",c=e.length,u=0,p=5*parseInt(c/5);u<p;)n=e[u++],t=e[u++],i=e[u++],a=e[u++],o=e[u++],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[31&(a<<3|o>>>5)]+r[31&o];var l=c-p;return 1===l?(n=e[u],s+=r[n>>>3]+r[n<<2&31]+"======"):2===l?(n=e[u++],t=e[u],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[t<<4&31]+"===="):3===l?(n=e[u++],t=e[u++],i=e[u],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[i<<1&31]+"==="):4===l&&(n=e[u++],t=e[u++],i=e[u++],a=e[u],s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[a<<3&31]+"="),s}(e):n?function(e){for(var n,t,i,a,o,s="",c=e.length,u=0,p=5*parseInt(c/5);u<p;)n=e.charCodeAt(u++),t=e.charCodeAt(u++),i=e.charCodeAt(u++),a=e.charCodeAt(u++),o=e.charCodeAt(u++),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[31&(a<<3|o>>>5)]+r[31&o];var l=c-p;return 1===l?(n=e.charCodeAt(u),s+=r[n>>>3]+r[n<<2&31]+"======"):2===l?(n=e.charCodeAt(u++),t=e.charCodeAt(u),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[t<<4&31]+"===="):3===l?(n=e.charCodeAt(u++),t=e.charCodeAt(u++),i=e.charCodeAt(u),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[i<<1&31]+"==="):4===l&&(n=e.charCodeAt(u++),t=e.charCodeAt(u++),i=e.charCodeAt(u++),a=e.charCodeAt(u),s+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[a<<3&31]+"="),s}(e):function(e){var n,t,i,a,o,s,u,p=!1,l="",f=0,d=0,m=e.length;do{for(c[0]=c[5],c[1]=c[6],c[2]=c[7],u=d;f<m&&u<5;++f)(s=e.charCodeAt(f))<128?c[u++]=s:s<2048?(c[u++]=192|s>>6,c[u++]=128|63&s):s<55296||s>=57344?(c[u++]=224|s>>12,c[u++]=128|s>>6&63,c[u++]=128|63&s):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++f)),c[u++]=240|s>>18,c[u++]=128|s>>12&63,c[u++]=128|s>>6&63,c[u++]=128|63&s);u-d,d=u-5,f===m&&++f,f>m&&u<6&&(p=!0),n=c[0],u>4?(t=c[1],i=c[2],a=c[3],o=c[4],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[31&(a<<3|o>>>5)]+r[31&o]):1===u?l+=r[n>>>3]+r[n<<2&31]+"======":2===u?(t=c[1],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[t<<4&31]+"===="):3===u?(t=c[1],i=c[2],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[i<<1&31]+"==="):(t=c[1],i=c[2],a=c[3],l+=r[n>>>3]+r[31&(n<<2|t>>>6)]+r[t>>>1&31]+r[31&(t<<4|i>>>4)]+r[31&(i<<1|a>>>7)]+r[a>>>2&31]+r[a<<3&31]+"=")}while(!p);return l}(e)},decode:l};l.asBytes=p,a?e.exports=f:(n.base32=f,o&&(void 0===(i=function(){return f}.call(f,t,f,e))||(e.exports=i)))}()},function(e,n){(function(n){e.exports=n}).call(this,{})},function(e,n,t){"use strict";const i=t(187),a=P("dns4"),o=P("dns6"),r=E(P("dns"),P("dnsaddr"),a,o),s=E(P("ip4"),P("ip6")),c=E(O(s,P("tcp")),O(r,P("tcp"))),u=O(s,P("udp")),p=O(u,P("utp")),l=E(O(c,P("ws")),O(r,P("ws"))),f=E(O(c,P("wss")),O(r,P("wss"))),d=E(O(c,P("http")),O(s,P("http")),O(r,P("http"))),m=E(O(c,P("https")),O(s,P("https")),O(r,P("https"))),h=E(O(l,P("p2p-webrtc-star"),P("p2p")),O(f,P("p2p-webrtc-star"),P("p2p")),O(l,P("p2p-webrtc-star")),O(f,P("p2p-webrtc-star"))),v=E(O(l,P("p2p-websocket-star"),P("p2p")),O(f,P("p2p-websocket-star"),P("p2p")),O(l,P("p2p-websocket-star")),O(f,P("p2p-websocket-star"))),x=E(O(d,P("p2p-webrtc-direct")),O(m,P("p2p-webrtc-direct"))),b=E(l,f,d,m,h,x,c,p),g=E(O(b,P("p2p-stardust"),P("p2p")),O(b,P("p2p-stardust"))),y=E(O(b,P("p2p")),h,P("p2p")),k=E(O(y,P("p2p-circuit"),y),O(y,P("p2p-circuit")),O(P("p2p-circuit"),y),O(b,P("p2p-circuit")),O(P("p2p-circuit"),b),P("p2p-circuit")),w=()=>E(O(k,w),k),S=w(),j=E(O(S,y,S),O(y,S),O(S,y),S,y);function _(e){return function(n){if(!i.isMultiaddr(n))try{n=i(n)}catch(e){return!1}const t=e(n.protoNames());return null!==t&&0===t.length}}function O(){const e=Array.from(arguments);function n(n){return n.length<e.length?null:(e.some(e=>{if(null===(n="function"==typeof e?e().partialMatch(n):e.partialMatch(n)))return!0}),n)}return{toString:function(){return"{ "+e.join(" ")+" }"},input:e,matches:_(n),partialMatch:n}}function E(){const e=Array.from(arguments);function n(n){let t=null;return e.some(e=>{const i="function"==typeof e?e().partialMatch(n):e.partialMatch(n);if(i)return t=i,!0}),t}const t={toString:function(){return"{ "+e.join(" ")+" }"},input:e,matches:_(n),partialMatch:n};return t}function P(e){const n=e;return{toString:function(){return n},matches:function(e){if("string"==typeof e)try{e=i(e)}catch(e){return!1}const t=e.protoNames();return 1===t.length&&t[0]===n},partialMatch:function(e){return 0===e.length?null:e[0]===n?e.slice(1):null}}}n.DNS=r,n.DNS4=a,n.DNS6=o,n.IP=s,n.TCP=c,n.UDP=u,n.UTP=p,n.HTTP=d,n.HTTPS=m,n.WebSockets=l,n.WebSocketsSecure=f,n.WebSocketStar=v,n.WebRTCStar=h,n.WebRTCDirect=x,n.Reliable=b,n.Stardust=g,n.Circuit=S,n.P2P=j,n.IPFS=j},function(e,n,t){var i=t(89),a=t(88).Stream,o=t(447);function r(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}e.exports=r,i.inherits(r,a),r.create=function(e){var n=new this;for(var t in e=e||{})n[t]=e[t];return n},r.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!Buffer.isBuffer(e)},r.prototype.append=function(e){if(r.isStreamLike(e)){if(!(e instanceof o)){var n=o.create(e,{maxDataSize:1/0,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=n}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},r.prototype.pipe=function(e,n){return a.prototype.pipe.call(this,e,n),this.resume(),e},r.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},r.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){r.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},r.prototype._pipeNext=function(e){if(this._currentStream=e,r.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});var n=e;this.write(n),this._getNext()},r.prototype._handleErrors=function(e){var n=this;e.on("error",(function(e){n._emitError(e)}))},r.prototype.write=function(e){this.emit("data",e)},r.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},r.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},r.prototype.end=function(){this._reset(),this.emit("end")},r.prototype.destroy=function(){this._reset(),this.emit("close")},r.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},r.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))}},r.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(n){n.dataSize&&(e.dataSize+=n.dataSize)})),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},r.prototype._emitError=function(e){this._reset(),this.emit("error",e)}},function(e,n,t){var i=t(88).Stream,a=t(89);function o(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}e.exports=o,a.inherits(o,i),o.create=function(e,n){var t=new this;for(var i in n=n||{})t[i]=n[i];t.source=e;var a=e.emit;return e.emit=function(){return t._handleEmit(arguments),a.apply(e,arguments)},e.on("error",(function(){})),t.pauseStream&&e.pause(),t},Object.defineProperty(o.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),o.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},o.prototype.resume=function(){this._released||this.release(),this.source.resume()},o.prototype.pause=function(){this.source.pause()},o.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},o.prototype.pipe=function(){var e=i.prototype.pipe.apply(this,arguments);return this.resume(),e},o.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},o.prototype._checkIfMaxDataSizeExceeded=function(){if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}}},function(e,n,t){"use strict";
10
- /*!
11
- * mime-types
12
- * Copyright(c) 2014 Jonathan Ong
13
- * Copyright(c) 2015 Douglas Christopher Wilson
14
- * MIT Licensed
15
- */var i,a,o,r=t(449),s=t(130).extname,c=/^\s*([^;\s]*)(?:;|\s|$)/,u=/^text\//i;function p(e){if(!e||"string"!=typeof e)return!1;var n=c.exec(e),t=n&&r[n[1].toLowerCase()];return t&&t.charset?t.charset:!(!n||!u.test(n[1]))&&"UTF-8"}n.charset=p,n.charsets={lookup:p},n.contentType=function(e){if(!e||"string"!=typeof e)return!1;var t=-1===e.indexOf("/")?n.lookup(e):e;if(!t)return!1;if(-1===t.indexOf("charset")){var i=n.charset(t);i&&(t+="; charset="+i.toLowerCase())}return t},n.extension=function(e){if(!e||"string"!=typeof e)return!1;var t=c.exec(e),i=t&&n.extensions[t[1].toLowerCase()];if(!i||!i.length)return!1;return i[0]},n.extensions=Object.create(null),n.lookup=function(e){if(!e||"string"!=typeof e)return!1;var t=s("x."+e).toLowerCase().substr(1);if(!t)return!1;return n.types[t]||!1},n.types=Object.create(null),i=n.extensions,a=n.types,o=["nginx","apache",void 0,"iana"],Object.keys(r).forEach((function(e){var n=r[e],t=n.extensions;if(t&&t.length){i[e]=t;for(var s=0;s<t.length;s++){var c=t[s];if(a[c]){var u=o.indexOf(r[a[c]].source),p=o.indexOf(n.source);if("application/octet-stream"!==a[c]&&(u>p||u===p&&"application/"===a[c].substr(0,12)))continue}a[c]=e}}}))},function(e,n,t){
16
- /*!
17
- * mime-db
18
- * Copyright(c) 2014 Jonathan Ong
19
- * MIT Licensed
20
- */
21
- e.exports=t(450)},function(e){e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma","es"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","compressible":true},"application/fhir+xml":{"source":"iana","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/mrb-publish+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/msc-ivr+xml":{"source":"iana","compressible":true},"application/msc-mixer+xml":{"source":"iana","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana"},"application/news-groupinfo":{"source":"iana"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana"},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","compressible":true},"application/pidf-diff+xml":{"source":"iana","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["keynote"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"apache","extensions":["der","crt","pem"]},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana"},"image/avcs":{"source":"iana"},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana"},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},function(e,n,t){e.exports={parallel:t(452),serial:t(454),serialOrdered:t(198)}},function(e,n,t){var i=t(193),a=t(196),o=t(197);e.exports=function(e,n,t){var r=a(e);for(;r.index<(r.keyedList||e).length;)i(e,n,r,(function(e,n){e?t(e,n):0!==Object.keys(r.jobs).length||t(null,r.results)})),r.index++;return o.bind(r,t)}},function(e,n){e.exports=function(e){var n="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;n?n(e):setTimeout(e,0)}},function(e,n,t){var i=t(198);e.exports=function(e,n,t){return i(e,n,null,t)}},function(e,n){e.exports=function(e,n){return Object.keys(n).forEach((function(t){e[t]=e[t]||n[t]})),e}},function(e,n,t){var i=t(457)();e.exports=i;try{regeneratorRuntime=i}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}},function(e,n,t){var i=t(71).default;function a(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */e.exports=a=function(){return n},e.exports.__esModule=!0,e.exports.default=e.exports;var n={},t=Object.prototype,o=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";function p(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[n]}try{p({},"")}catch(e){p=function(e,n,t){return e[n]=t}}function l(e,n,t,i){var a=n&&n.prototype instanceof m?n:m,o=Object.create(a.prototype),r=new O(i||[]);return o._invoke=function(e,n,t){var i="suspendedStart";return function(a,o){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===a)throw o;return P()}for(t.method=a,t.arg=o;;){var r=t.delegate;if(r){var s=S(r,t);if(s){if(s===d)continue;return s}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if("suspendedStart"===i)throw i="completed",t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);i="executing";var c=f(e,n,t);if("normal"===c.type){if(i=t.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:t.done}}"throw"===c.type&&(i="completed",t.method="throw",t.arg=c.arg)}}}(e,t,r),o}function f(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}n.wrap=l;var d={};function m(){}function h(){}function v(){}var x={};p(x,s,(function(){return this}));var b=Object.getPrototypeOf,g=b&&b(b(E([])));g&&g!==t&&o.call(g,s)&&(x=g);var y=v.prototype=m.prototype=Object.create(x);function k(e){["next","throw","return"].forEach((function(n){p(e,n,(function(e){return this._invoke(n,e)}))}))}function w(e,n){var t;this._invoke=function(a,r){function s(){return new n((function(t,s){!function t(a,r,s,c){var u=f(e[a],e,r);if("throw"!==u.type){var p=u.arg,l=p.value;return l&&"object"==i(l)&&o.call(l,"__await")?n.resolve(l.__await).then((function(e){t("next",e,s,c)}),(function(e){t("throw",e,s,c)})):n.resolve(l).then((function(e){p.value=e,s(p)}),(function(e){return t("throw",e,s,c)}))}c(u.arg)}(a,r,t,s)}))}return t=t?t.then(s,s):s()}}function S(e,n){var t=e.iterator[n.method];if(void 0===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=void 0,S(e,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var i=f(t,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,d;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,d):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}function j(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function _(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function E(e){if(e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var t=-1,i=function n(){for(;++t<e.length;)if(o.call(e,t))return n.value=e[t],n.done=!1,n;return n.value=void 0,n.done=!0,n};return i.next=i}}return{next:P}}function P(){return{value:void 0,done:!0}}return h.prototype=v,p(y,"constructor",v),p(v,"constructor",h),h.displayName=p(v,u,"GeneratorFunction"),n.isGeneratorFunction=function(e){var n="function"==typeof e&&e.constructor;return!!n&&(n===h||"GeneratorFunction"===(n.displayName||n.name))},n.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,p(e,u,"GeneratorFunction")),e.prototype=Object.create(y),e},n.awrap=function(e){return{__await:e}},k(w.prototype),p(w.prototype,c,(function(){return this})),n.AsyncIterator=w,n.async=function(e,t,i,a,o){void 0===o&&(o=Promise);var r=new w(l(e,t,i,a),o);return n.isGeneratorFunction(t)?r:r.next().then((function(e){return e.done?e.value:r.next()}))},k(y),p(y,u,"Generator"),p(y,s,(function(){return this})),p(y,"toString",(function(){return"[object Generator]"})),n.keys=function(e){var n=[];for(var t in e)n.push(t);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=E,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(_),!e)for(var n in this)"t"===n.charAt(0)&&o.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function t(t,i){return r.type="throw",r.arg=e,n.next=t,i&&(n.method="next",n.arg=void 0),!!i}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],r=a.completion;if("root"===a.tryLoc)return t("end");if(a.tryLoc<=this.prev){var s=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(s&&c){if(this.prev<a.catchLoc)return t(a.catchLoc,!0);if(this.prev<a.finallyLoc)return t(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return t(a.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return t(a.finallyLoc)}}}},abrupt:function(e,n){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&o.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=n&&n<=a.finallyLoc&&(a=null);var r=a?a.completion:{};return r.type=e,r.arg=n,a?(this.method="next",this.next=a.finallyLoc,d):this.complete(r)},complete:function(e,n){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&n&&(this.next=n),d},finish:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),_(t),d}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var i=t.completion;if("throw"===i.type){var a=i.arg;_(t)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,t){return this.delegate={iterator:E(e),resultName:n,nextLoc:t},"next"===this.method&&(this.arg=void 0),d}},n}e.exports=a,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n){function t(e,n,t,i,a,o,r){try{var s=e[o](r),c=s.value}catch(e){return void t(e)}s.done?n(c):Promise.resolve(c).then(i,a)}e.exports=function(e){return function(){var n=this,i=arguments;return new Promise((function(a,o){var r=e.apply(n,i);function s(e){t(r,a,o,s,c,"next",e)}function c(e){t(r,a,o,s,c,"throw",e)}s(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,n){e.exports=function(e,n){let t=e.startsWith("./")?e.substring(2):e;const i=t.lastIndexOf("/");if(-1===i)return n;i===e.length-1&&(t=e.slice(0,-1));const a=t.lastIndexOf("/");if(-1===a)return t;{const e=t.substring(0,a+1);t=n.split(e)[1]}return t}},function(e,n,t){"use strict";var i=t(13);Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1;if(0===t)throw Error("Max count can't be 0");var i=(0,a.default)({},Symbol.asyncIterator,(function(){var i=0,a=0,r=[],c=!1;return{next:function(){return new Promise((function(u,p){(0===i||i%10==0&&c)&&u((0,o.default)(e,s(s({},n),{pageOffset:a,pageLimit:10})).then((function(e){r=e.rows,a+=r.length,c=0!==r.length&&(-1===t?10===r.length:i<t)}))),u(0)})).then((function(){var e=r[i%10],n=!((-1===t?i<a:i<t)&&c);return i++,Promise.resolve({value:e,done:n})}))},return:function(){return Promise.resolve({value:i,done:!0})}}}));return i};var a=i(t(35));t(24),t(167),t(23),t(33),t(14),t(32),t(30),t(11),t(34),t(29),t(10);var o=i(t(131));function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){(0,a.default)(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}e.exports=n.default},function(e,n,t){"use strict";t(10),t(11),t(14),Object.defineProperty(n,"__esModule",{value:!0});var i=t(131);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===i[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}}))}));var a=t(205);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===a[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}}))}));var o=t(204);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===o[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}}))}));var r=t(206);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===r[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}}))}))},function(e,n,t){"use strict";t(10),t(11),t(14),Object.defineProperty(n,"__esModule",{value:!0});var i=t(201);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===i[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}}))}));var a=t(202);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===a[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}}))}));var o=t(190);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===o[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}}))}));var r=t(172);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===r[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}}))}));var s=t(129);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===s[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return s[e]}}))}));var c=t(199);Object.keys(c).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===c[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return c[e]}}))}));var u=t(200);Object.keys(u).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===u[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return u[e]}}))}));var p=t(203);Object.keys(p).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in n&&n[e]===p[e]||Object.defineProperty(n,e,{enumerable:!0,get:function(){return p[e]}}))}))}])}));
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9waW5hdGEtc2RrL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19leHBvcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtb2JqZWN0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGlkZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1odG1sLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BkLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbnRlZ2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1zYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LW1ldGhvZHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvdXRpbC92YWxpZGF0b3JzLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvdXRpbC9lcnJvclJlc3BvbnNlLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FuLWluc3RhbmNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mb3Itb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy10cmltLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyYXRvcnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy92YXJpbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24ubmFtZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmxhZ3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2lzLWlwZnMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19maXgtcmUtd2tzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191c2VyLWFnZW50LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWZvcmNlZC1wYW0uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1jb2xsZWN0aW9uLW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJzdHJlYW1cIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL2V4dGVybmFsIFwidXRpbFwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYnM1OC9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXByb3RvLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctd3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW5oZXJpdC1pZi1yZXF1aXJlZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21hdGgtc2lnbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1leHBtMS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctY29udGV4dC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmFpbHMtaXMtcmVnZXhwLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1hcnJheS1pdGVyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktZmlsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZ2V4cC1leGVjLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZHZhbmNlLXN0cmluZy1pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9jcmVhdGVFcnJvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL2V4dGVybmFsIFwiaHR0cFwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJodHRwc1wiIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJ1cmxcIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpaGFzaGVzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYWRkci9zcmMvcHJvdG9jb2xzLXRhYmxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY2lkcy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL3BpbkZpbGVUb0lQRlMudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay9leHRlcm5hbCBcInBhdGhcIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL2RhdGEvcGluTGlzdC9waW5MaXN0LnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWV4dC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2FtZS12YWx1ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYmluZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faW52b2tlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWZsb2F0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLW51bWJlci12YWx1ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1sb2cxcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1mcm91bmQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29ydC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktcmVkdWNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1jb3B5LXdpdGhpbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1zdGVwLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZXhlYy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLmZsYWdzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wZXJmb3JtLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29sbGVjdGlvbi1zdHJvbmcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnNldC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX293bi1rZXlzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGF0dGVuLWludG8tYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1wYWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLXRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21hdGgtc2NhbGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL3BpbkJ5SGFzaC50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2JpbmQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2ZvbGxvdy1yZWRpcmVjdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvY29tbW9uLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJvc1wiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2Jhc2UteC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay9leHRlcm5hbCBcImJ1ZmZlclwiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGliYXNlL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYWRkci9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWNvZGVjL3NyYy91dGlsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY2xhc3MtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL2hhc2hNZXRhZGF0YS50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvZm9ybV9kYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJmc1wiIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvbGliL2l0ZXJhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvYXN5bmMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvYWJvcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvc3RhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvdGVybWluYXRvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L3NlcmlhbE9yZGVyZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9waW5uaW5nL3BpbkZyb21GUy50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvcGluSlNPTlRvSVBGUy50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvcGluSm9icy9waW5Kb2JzLnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvY29tbWFuZHMvcGlubmluZy9waW5Kb2JzL3F1ZXJ5QnVpbGRlci50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvdW5waW4udHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9kYXRhL3Rlc3RBdXRoZW50aWNhdGlvbi50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL2RhdGEvcGluTGlzdC9xdWVyeUJ1aWxkZXIudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL3NyYy9jb21tYW5kcy9kYXRhL3VzZXJQaW5uZWREYXRhVG90YWwudHMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9iYWJlbC1wb2x5ZmlsbC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3NoaW0uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Z1bmN0aW9uLXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1rZXlzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5mcmVlemUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZXh0ZW5zaWJsZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZnVuY3Rpb24uaGFzLWluc3RhbmNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnBhcnNlLWZsb2F0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIudG8tZml4ZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1wcmVjaXNpb24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtZmluaXRlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtbmFuLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIubWF4LXNhZmUtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1pbi1zYWZlLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLnBhcnNlLWludC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hY29zaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hc2luaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hdGFuaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jYnJ0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNsejMyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNvc2guanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguZXhwbTEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguZnJvdW5kLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmh5cG90LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmltdWwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMTAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5zaWduLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpbmguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgudGFuaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50cnVuYy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJhdy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYW5jaG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYmlnLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5ib2xkLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZml4ZWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5mb250c2l6ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0YWxpY3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5saW5rLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc21hbGwuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdHJpa2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdWIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUubm93LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2RhdGUtdG8taXNvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kYXRlLXRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZnJvbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkub2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmpvaW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNsaWNlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5tYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNvbWUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmV2ZXJ5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaW5kZXgtb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmNvcHktd2l0aGluLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWxsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maW5kLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maW5kLWluZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zcGVjaWVzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5tYXRjaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnJlcGxhY2UuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2guanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5zcGxpdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1zZXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmFycmF5LWJ1ZmZlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQ4LWFycmF5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MTYtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQxNi1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQzMi1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQzMi1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5hcHBseS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5jb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5lbnVtZXJhdGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0Lmhhcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5pcy1leHRlbnNpYmxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0Lm93bi1rZXlzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmZsYXQtbWFwLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5mbGF0dGVuLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcuYXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtZW5kLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1sZWZ0LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1yaWdodC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLm1hdGNoLWFsbC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC52YWx1ZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5kZWZpbmUtZ2V0dGVyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLXNldHRlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXAudG8tanNvbi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0LnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC5vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc2V0Lm9mLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy53ZWFrLW1hcC5vZi5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1zZXQub2YuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hcC5mcm9tLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQuZnJvbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1tYXAuZnJvbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcud2Vhay1zZXQuZnJvbS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuZ2xvYmFsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zeXN0ZW0uZ2xvYmFsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5lcnJvci5pcy1lcnJvci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5jbGFtcC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5kZWctcGVyLXJhZC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5kZWdyZWVzLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmZzY2FsZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pYWRkaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pc3ViaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pbXVsaC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5yYWQtcGVyLWRlZy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5yYWRpYW5zLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnNjYWxlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnNpZ25iaXQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucHJvbWlzZS50cnkuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZGVmaW5lLW1ldGFkYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLWtleXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW1ldGFkYXRhLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QubWV0YWRhdGEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFzYXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9ic2VydmFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnRpbWVycy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuaW1tZWRpYXRlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZuL3JlZ2V4cC9lc2NhcGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvY29yZS5yZWdleHAuZXNjYXBlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZXBsYWNlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2luZGV4LnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvcy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2Nvb2tpZXMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMvaHR0cC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrL2V4dGVybmFsIFwiYXNzZXJ0XCIiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9mb2xsb3ctcmVkaXJlY3RzL2RlYnVnLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9ub2RlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvZXh0ZXJuYWwgXCJ0dHlcIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL3N1cHBvcnRzLWNvbG9yL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvaGFzLWZsYWcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay9leHRlcm5hbCBcInpsaWJcIiIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsVG9rZW4uanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpaGFzaGVzL3NyYy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy92YXJpbnQvZW5jb2RlLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvdmFyaW50L2RlY29kZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL3ZhcmludC9sZW5ndGguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWJhc2Uvc3JjL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYmFzZS9zcmMvYmFzZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYmFzZS9zcmMvYmFzZTE2LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGliYXNlL3NyYy9iYXNlMzIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWJhc2Uvc3JjL2Jhc2U2NC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL211bHRpYWRkci9zcmMvY29kZWMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWFkZHIvc3JjL2NvbnZlcnQuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9pcC9saWIvaXAuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9pcy1pcC9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2lwLXJlZ2V4L2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbXVsdGljb2RlYy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWNvZGVjL3NyYy9pbnQtdGFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWNvZGVjL3NyYy92YXJpbnQtdGFibGUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWNvZGVjL3NyYy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9tdWx0aWNvZGVjL3NyYy9wcmludC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NpZHMvc3JjL2NpZC11dGlsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvaGktYmFzZTMyL3NyYy9iYXNlMzIuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8od2VicGFjaykvYnVpbGRpbi9hbWQtb3B0aW9ucy5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL21hZm10L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2NvbWJpbmVkLXN0cmVhbS9saWIvY29tYmluZWRfc3RyZWFtLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvZGVsYXllZC1zdHJlYW0vbGliL2RlbGF5ZWRfc3RyZWFtLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvbWltZS10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL21pbWUtZGIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L3BhcmFsbGVsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvbGliL2RlZmVyLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvc2VyaWFsLmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvZm9ybS1kYXRhL2xpYi9wb3B1bGF0ZS5qcyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vcGluYXRhLXNkay8uL25vZGVfbW9kdWxlcy9iYXNlLXBhdGgtY29udmVydGVyL2luZGV4LmpzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvY29tbWFuZHMvZGF0YS9nZXRGaWxlc0J5Q291bnQvZ2V0RmlsZXNCeUNvdW50LnRzIiwid2VicGFjazovL3BpbmF0YS1zZGsvLi9zcmMvY29tbWFuZHMvZGF0YS9pbmRleC50cyIsIndlYnBhY2s6Ly9waW5hdGEtc2RrLy4vc3JjL2NvbW1hbmRzL3Bpbm5pbmcvaW5kZXgudHMiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiZ2xvYmFsIiwiY29yZSIsImhpZGUiLCJyZWRlZmluZSIsImN0eCIsIiRleHBvcnQiLCJ0eXBlIiwic291cmNlIiwib3duIiwib3V0IiwiZXhwIiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJTIiwiSVNfUFJPVE8iLCJQIiwiSVNfQklORCIsIkIiLCJ0YXJnZXQiLCJleHBQcm90byIsInVuZGVmaW5lZCIsIkZ1bmN0aW9uIiwiVSIsIlciLCJSIiwiaXNPYmplY3QiLCJpdCIsIlR5cGVFcnJvciIsIndpbmRvdyIsIk1hdGgiLCJfX2ciLCJleGVjIiwiZSIsInN0b3JlIiwidWlkIiwiVVNFX1NZTUJPTCIsInRvSW50ZWdlciIsIm1pbiIsImEiLCJhbk9iamVjdCIsIklFOF9ET01fREVGSU5FIiwidG9QcmltaXRpdmUiLCJkUCIsImYiLCJPIiwiQXR0cmlidXRlcyIsImRlZmluZWQiLCIkZm9yRWFjaCIsIlNUUklDVCIsImZvckVhY2giLCJjYWxsYmFja2ZuIiwiYXJndW1lbnRzIiwib2JqIiwidG9PYmplY3QiLCIka2V5cyIsInRvU3RyaW5nIiwiaXNBcnJheSIsInZhbCIsImlzVW5kZWZpbmVkIiwiaXNQbGFpbk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiaXNGdW5jdGlvbiIsImZuIiwibGVuZ3RoIiwiaXNBcnJheUJ1ZmZlciIsImlzQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpc0Zvcm1EYXRhIiwiRm9ybURhdGEiLCJpc0FycmF5QnVmZmVyVmlldyIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwiYnVmZmVyIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzRGF0ZSIsImlzRmlsZSIsImlzQmxvYiIsImlzU3RyZWFtIiwicGlwZSIsImlzVVJMU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiaXNTdGFuZGFyZEJyb3dzZXJFbnYiLCJuYXZpZ2F0b3IiLCJwcm9kdWN0IiwiZG9jdW1lbnQiLCJtZXJnZSIsInJlc3VsdCIsImFzc2lnblZhbHVlIiwic2xpY2UiLCJleHRlbmQiLCJiIiwidGhpc0FyZyIsInRyaW0iLCJzdHIiLCJyZXBsYWNlIiwic3RyaXBCT00iLCJjb250ZW50IiwiY2hhckNvZGVBdCIsImNyZWF0ZURlc2MiLCJoYXMiLCJTUkMiLCIkdG9TdHJpbmciLCJUUEwiLCJzcGxpdCIsImluc3BlY3RTb3VyY2UiLCJzYWZlIiwiam9pbiIsIlN0cmluZyIsImZhaWxzIiwicXVvdCIsImNyZWF0ZUhUTUwiLCJzdHJpbmciLCJ0YWciLCJhdHRyaWJ1dGUiLCJwMSIsIk5BTUUiLCJ0ZXN0IiwidG9Mb3dlckNhc2UiLCJJT2JqZWN0IiwicElFIiwidG9JT2JqZWN0IiwiZ09QRCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIklFX1BST1RPIiwiT2JqZWN0UHJvdG8iLCJjbGFzc29mIiwiREVTQ1JJUFRPUlMiLCJNRVRBIiwiS0VZIiwiJGZhaWxzIiwic2hhcmVkIiwic2V0VG9TdHJpbmdUYWciLCJ3a3MiLCJ3a3NFeHQiLCJ3a3NEZWZpbmUiLCJlbnVtS2V5cyIsIl9jcmVhdGUiLCJnT1BORXh0IiwiJEdPUEQiLCIkR09QUyIsIiREUCIsImdPUE4iLCIkU3ltYm9sIiwiJEpTT04iLCJKU09OIiwiX3N0cmluZ2lmeSIsInN0cmluZ2lmeSIsIkhJRERFTiIsIlRPX1BSSU1JVElWRSIsImlzRW51bSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiU3ltYm9sUmVnaXN0cnkiLCJBbGxTeW1ib2xzIiwiT1BTeW1ib2xzIiwiVVNFX05BVElWRSIsIlFPYmplY3QiLCJzZXR0ZXIiLCJmaW5kQ2hpbGQiLCJzZXRTeW1ib2xEZXNjIiwiRCIsInByb3RvRGVzYyIsIndyYXAiLCJzeW0iLCJfayIsImlzU3ltYm9sIiwiaXRlcmF0b3IiLCIkZGVmaW5lUHJvcGVydHkiLCIkZGVmaW5lUHJvcGVydGllcyIsImtleXMiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJFIiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIiRnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibmFtZXMiLCJwdXNoIiwiJGdldE93blByb3BlcnR5U3ltYm9scyIsIklTX09QIiwiJHNldCIsImNvbmZpZ3VyYWJsZSIsInNldCIsImVzNlN5bWJvbHMiLCJqIiwid2VsbEtub3duU3ltYm9scyIsImsiLCJrZXlGb3IiLCJ1c2VTZXR0ZXIiLCJ1c2VTaW1wbGUiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIkZBSUxTX09OX1BSSU1JVElWRVMiLCJyZXBsYWNlciIsIiRyZXBsYWNlciIsImFyZ3MiLCJhcHBseSIsInZhbHVlT2YiLCJ2ZXJzaW9uIiwiX19lIiwiYUZ1bmN0aW9uIiwidGhhdCIsImNlaWwiLCJmbG9vciIsImlzTmFOIiwibWV0aG9kIiwiYXJnIiwiJGZpbHRlciIsImZpbHRlciIsIkludGVybmFsIiwibmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5IiwiT3duUHJvbWlzZUNhcGFiaWxpdHkiLCJXcmFwcGVyIiwiTElCUkFSWSIsImFuSW5zdGFuY2UiLCJmb3JPZiIsInNwZWNpZXNDb25zdHJ1Y3RvciIsInRhc2siLCJtaWNyb3Rhc2siLCJuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSIsInBlcmZvcm0iLCJ1c2VyQWdlbnQiLCJwcm9taXNlUmVzb2x2ZSIsInByb2Nlc3MiLCJ2ZXJzaW9ucyIsInY4IiwiJFByb21pc2UiLCJpc05vZGUiLCJlbXB0eSIsIm5ld1Byb21pc2VDYXBhYmlsaXR5IiwicHJvbWlzZSIsInJlc29sdmUiLCJGYWtlUHJvbWlzZSIsIlByb21pc2VSZWplY3Rpb25FdmVudCIsInRoZW4iLCJpbmRleE9mIiwiaXNUaGVuYWJsZSIsIm5vdGlmeSIsImlzUmVqZWN0IiwiX24iLCJjaGFpbiIsIl9jIiwiX3YiLCJvayIsIl9zIiwicnVuIiwicmVhY3Rpb24iLCJleGl0ZWQiLCJoYW5kbGVyIiwiZmFpbCIsInJlamVjdCIsImRvbWFpbiIsIl9oIiwib25IYW5kbGVVbmhhbmRsZWQiLCJlbnRlciIsImV4aXQiLCJvblVuaGFuZGxlZCIsImNvbnNvbGUiLCJ1bmhhbmRsZWQiLCJpc1VuaGFuZGxlZCIsImVtaXQiLCJvbnVuaGFuZGxlZHJlamVjdGlvbiIsInJlYXNvbiIsImVycm9yIiwiX2EiLCJ2Iiwib25yZWplY3Rpb25oYW5kbGVkIiwiJHJlamVjdCIsIl9kIiwiX3ciLCIkcmVzb2x2ZSIsIndyYXBwZXIiLCJleGVjdXRvciIsImVyciIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIkMiLCJQcm9taXNlIiwiY2FwYWJpbGl0eSIsIiQkcmVqZWN0IiwieCIsIml0ZXIiLCJhbGwiLCJpdGVyYWJsZSIsInZhbHVlcyIsImluZGV4IiwicmVtYWluaW5nIiwiJGluZGV4IiwiYWxyZWFkeUNhbGxlZCIsInJhY2UiLCJvd25LZXlzIiwiY3JlYXRlUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVzYyIsImdldERlc2MiLCJ3cml0YWJsZSIsInRvTGVuZ3RoIiwiYXNjIiwiVFlQRSIsIiRjcmVhdGUiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiTk9fSE9MRVMiLCIkdGhpcyIsInJlcyIsIiR0eXBlZCIsIiRidWZmZXIiLCJwcm9wZXJ0eURlc2MiLCJyZWRlZmluZUFsbCIsInRvSW5kZXgiLCJ0b0Fic29sdXRlSW5kZXgiLCJpc0FycmF5SXRlciIsImdldEl0ZXJGbiIsImNyZWF0ZUFycmF5TWV0aG9kIiwiY3JlYXRlQXJyYXlJbmNsdWRlcyIsIkFycmF5SXRlcmF0b3JzIiwiSXRlcmF0b3JzIiwiJGl0ZXJEZXRlY3QiLCJzZXRTcGVjaWVzIiwiYXJyYXlGaWxsIiwiYXJyYXlDb3B5V2l0aGluIiwiUmFuZ2VFcnJvciIsIlVpbnQ4QXJyYXkiLCJBcnJheVByb3RvIiwiQXJyYXkiLCIkQXJyYXlCdWZmZXIiLCIkRGF0YVZpZXciLCJEYXRhVmlldyIsImFycmF5Rm9yRWFjaCIsImFycmF5RmlsdGVyIiwiYXJyYXlTb21lIiwiYXJyYXlFdmVyeSIsImFycmF5RmluZCIsImFycmF5RmluZEluZGV4IiwiYXJyYXlJbmNsdWRlcyIsImFycmF5SW5kZXhPZiIsImFycmF5VmFsdWVzIiwiYXJyYXlLZXlzIiwiYXJyYXlFbnRyaWVzIiwiZW50cmllcyIsImFycmF5TGFzdEluZGV4T2YiLCJsYXN0SW5kZXhPZiIsImFycmF5UmVkdWNlIiwicmVkdWNlIiwiYXJyYXlSZWR1Y2VSaWdodCIsInJlZHVjZVJpZ2h0IiwiYXJyYXlKb2luIiwiYXJyYXlTb3J0Iiwic29ydCIsImFycmF5U2xpY2UiLCJhcnJheVRvU3RyaW5nIiwiYXJyYXlUb0xvY2FsZVN0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwiSVRFUkFUT1IiLCJUQUciLCJUWVBFRF9DT05TVFJVQ1RPUiIsIkRFRl9DT05TVFJVQ1RPUiIsIkFMTF9DT05TVFJVQ1RPUlMiLCJDT05TVFIiLCJUWVBFRF9BUlJBWSIsIlRZUEVEIiwiVklFVyIsIiRtYXAiLCJhbGxvY2F0ZSIsIkxJVFRMRV9FTkRJQU4iLCJVaW50MTZBcnJheSIsIkZPUkNFRF9TRVQiLCJ0b09mZnNldCIsIkJZVEVTIiwib2Zmc2V0IiwidmFsaWRhdGUiLCJzcGVjaWVzRnJvbUxpc3QiLCJsaXN0IiwiZnJvbUxpc3QiLCJhZGRHZXR0ZXIiLCJpbnRlcm5hbCIsIiRmcm9tIiwic3RlcCIsImFMZW4iLCJtYXBmbiIsIm1hcHBpbmciLCJpdGVyRm4iLCJuZXh0IiwiZG9uZSIsIiRvZiIsIlRPX0xPQ0FMRV9CVUciLCIkdG9Mb2NhbGVTdHJpbmciLCJwcm90byIsImNvcHlXaXRoaW4iLCJzdGFydCIsImV2ZXJ5IiwiZmlsbCIsImZpbmQiLCJwcmVkaWNhdGUiLCJmaW5kSW5kZXgiLCJzZWFyY2hFbGVtZW50IiwiaW5jbHVkZXMiLCJzZXBhcmF0b3IiLCJtYXAiLCJyZXZlcnNlIiwibWlkZGxlIiwic29tZSIsImNvbXBhcmVmbiIsInN1YmFycmF5IiwiYmVnaW4iLCJlbmQiLCIkYmVnaW4iLCJieXRlT2Zmc2V0IiwiQllURVNfUEVSX0VMRU1FTlQiLCIkc2xpY2UiLCJhcnJheUxpa2UiLCJzcmMiLCJsZW4iLCIkaXRlcmF0b3JzIiwiaXNUQUluZGV4IiwiJGdldERlc2MiLCIkc2V0RGVzYyIsIiRUeXBlZEFycmF5UHJvdG90eXBlJCIsIkNMQU1QRUQiLCJHRVRURVIiLCJTRVRURVIiLCJUeXBlZEFycmF5IiwiQmFzZSIsIlRBQyIsIkZPUkNFRCIsIkFCViIsIlR5cGVkQXJyYXlQcm90b3R5cGUiLCJhZGRFbGVtZW50IiwiZGF0YSIsInJvdW5kIiwiJG9mZnNldCIsIiRsZW5ndGgiLCJieXRlTGVuZ3RoIiwia2xhc3MiLCIkbGVuIiwiY29uY2F0IiwiJG5hdGl2ZUl0ZXJhdG9yIiwiQ09SUkVDVF9JVEVSX05BTUUiLCIkaXRlcmF0b3IiLCJvZiIsImZyb20iLCJNYXAiLCJnZXRPckNyZWF0ZU1ldGFkYXRhTWFwIiwidGFyZ2V0S2V5IiwidGFyZ2V0TWV0YWRhdGEiLCJrZXlNZXRhZGF0YSIsIk1ldGFkYXRhS2V5IiwibWV0YWRhdGFNYXAiLCJNZXRhZGF0YVZhbHVlIiwiXyIsImNvbmZpZyIsImJvdW5kYXJ5VmFsdWUiLCJyZXF1ZXN0T3B0aW9ucyIsImNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyIsIm1heENvbnRlbnRMZW5ndGgiLCJJbmZpbml0eSIsIm1heEJvZHlMZW5ndGgiLCJoZWFkZXJzIiwicGluYXRhQXBpS2V5IiwicGluYXRhU2VjcmV0QXBpS2V5IiwiRXJyb3IiLCJtZXRhZGF0YSIsImtleXZhbHVlcyIsImtleVZhbHVlIiwib3B0aW9ucyIsImNpZFZlcnNpb24iLCJ3cmFwV2l0aERpcmVjdG9yeSIsImhvc3ROb2RlcyIsInZhbGlkYXRlSG9zdE5vZGVzIiwiY3VzdG9tUGluUG9saWN5IiwidmFsaWRhdGVQaW5Qb2xpY3lTdHJ1Y3R1cmUiLCJ3aXRoQ3JlZGVudGlhbHMiLCJwaW5hdGFfYXBpX2tleSIsInBpbmF0YV9zZWNyZXRfYXBpX2tleSIsInBpbmF0YUpXVEtleSIsIkF1dGhvcml6YXRpb24iLCJFUlJPUl9OT19DUkVERU5USUFMU19QUk9WSURFRCIsIm5vZGUiLCJpc0lQRlMiLCJwZWVyTXVsdGlhZGRyIiwicGluUG9saWN5IiwicmVnaW9ucyIsInJlZ2lvbiIsImlkIiwiZGVzaXJlZFJlcGxpY2F0aW9uQ291bnQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJyZXNwb25zZSIsInNldERlc2MiLCJpc0V4dGVuc2libGUiLCJGUkVFWkUiLCJwcmV2ZW50RXh0ZW5zaW9ucyIsInNldE1ldGEiLCJ3IiwibWV0YSIsIk5FRUQiLCJmYXN0S2V5IiwiZ2V0V2VhayIsIm9uRnJlZXplIiwiVU5TQ09QQUJMRVMiLCJiaXRtYXAiLCJweCIsInJhbmRvbSIsImVudW1CdWdLZXlzIiwibWF4IiwiZFBzIiwiRW1wdHkiLCJjcmVhdGVEaWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJpZnJhbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJhcHBlbmRDaGlsZCIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwid3JpdGUiLCJsdCIsImNsb3NlIiwiUHJvcGVydGllcyIsImhpZGRlbktleXMiLCJTUEVDSUVTIiwiQ29uc3RydWN0b3IiLCJmb3JiaWRkZW5GaWVsZCIsIkJSRUFLIiwiUkVUVVJOIiwiX3QiLCJkZWYiLCJzdGF0IiwiY29mIiwiQVJHIiwiVCIsInRyeUdldCIsImNhbGxlZSIsInNwYWNlcyIsInNwYWNlIiwibHRyaW0iLCJSZWdFeHAiLCJydHJpbSIsImV4cG9ydGVyIiwiQUxJQVMiLCJGT1JDRSIsImVuY29kZSIsImRlY29kZSIsImVuY29kaW5nTGVuZ3RoIiwiY29weXJpZ2h0IiwiRlByb3RvIiwibmFtZVJFIiwibWF0Y2giLCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwidW5pY29kZSIsInN0aWNreSIsIl90eXBlb2YiLCJiYXNlNTgiLCJtdWx0aWhhc2giLCJtdWx0aWJhc2UiLCJNdWx0aWFkZHIiLCJtYWZtdCIsIkNJRCIsInVybFBhdHRlcm4iLCJwYXRoUGF0dGVybiIsImZxZG5QYXR0ZXJuIiwiaXNDSUQiLCJoYXNoIiwiaXNNdWx0aWFkZHIiLCJpbnB1dCIsImlzSXBmcyIsInBhdHRlcm4iLCJwcm90b2NvbE1hdGNoIiwiaGFzaE1hdGNoIiwiZm9ybWF0dGVkIiwiY29udmVydFRvU3RyaW5nIiwiaXNJcG5zIiwiQnVmZmVyIiwiaXBmc1N1YmRvbWFpbiIsInVybCIsImlwbnNTdWJkb21haW4iLCJtdWx0aWFkZHIiLCJJUEZTIiwibWF0Y2hlcyIsImNpZCIsImJhc2UzMmNpZCIsImlzRW5jb2RlZCIsImlzTXVsdGliYXNlIiwic3ViZG9tYWluIiwic3ViZG9tYWluUGF0dGVybiIsImlwZnNVcmwiLCJpcG5zVXJsIiwiaXBmc1BhdGgiLCJwYXRoIiwiaXBuc1BhdGgiLCJ1cmxPclBhdGgiLCJjaWRQYXRoIiwiSVNfSU5DTFVERVMiLCJlbCIsImZyb21JbmRleCIsIlRPX1NUUklORyIsInBvcyIsImNoYXJBdCIsIk1BVENIIiwiaXNSZWdFeHAiLCJTQUZFX0NMT1NJTkciLCJyaXRlciIsInNraXBDbG9zaW5nIiwiYXJyIiwiYnVpbHRpbkV4ZWMiLCJyZWdleHBFeGVjIiwiUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMiLCJyZSIsImdyb3VwcyIsIlNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyIsIm9yaWdpbmFsRXhlYyIsIlNZTUJPTCIsIkRFTEVHQVRFU19UT19TWU1CT0wiLCJERUxFR0FURVNfVE9fRVhFQyIsImV4ZWNDYWxsZWQiLCJuYXRpdmVSZWdFeHBNZXRob2QiLCJmbnMiLCJuYXRpdmVNZXRob2QiLCJyZWdleHAiLCJhcmcyIiwiZm9yY2VTdHJpbmdNZXRob2QiLCJzdHJmbiIsInJ4Zm4iLCJpbmhlcml0SWZSZXF1aXJlZCIsIm1ldGhvZHMiLCJjb21tb24iLCJJU19XRUFLIiwiQURERVIiLCJmaXhNZXRob2QiLCJpbnN0YW5jZSIsIkhBU05UX0NIQUlOSU5HIiwiVEhST1dTX09OX1BSSU1JVElWRVMiLCJBQ0NFUFRfSVRFUkFCTEVTIiwiQlVHR1lfWkVSTyIsIiRpbnN0YW5jZSIsImNsZWFyIiwiZ2V0Q29uc3RydWN0b3IiLCJzZXRTdHJvbmciLCJUeXBlZCIsIlR5cGVkQXJyYXlDb25zdHJ1Y3RvcnMiLCJLIiwiX19kZWZpbmVTZXR0ZXJfXyIsIkNPTExFQ1RJT04iLCJBIiwiY2IiLCJtYXBGbiIsIm5leHRJdGVtIiwicmVxdWlyZSIsImJhc2V4IiwiaXMiLCJjcmVhdGVFbGVtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiY2hlY2siLCJzZXRQcm90b3R5cGVPZiIsImJ1Z2d5IiwiX19wcm90b19fIiwiJHRyaW0iLCIkTnVtYmVyIiwiQlJPS0VOX0NPRiIsIlRSSU0iLCJ0b051bWJlciIsImFyZ3VtZW50IiwidGhpcmQiLCJyYWRpeCIsIm1heENvZGUiLCJmaXJzdCIsIk5hTiIsImNvZGUiLCJkaWdpdHMiLCJwYXJzZUludCIsImNvdW50Iiwic2lnbiIsIiRleHBtMSIsImV4cG0xIiwiJGl0ZXJDcmVhdGUiLCJCVUdHWSIsInJldHVyblRoaXMiLCJERUZBVUxUIiwiSVNfU0VUIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRNZXRob2QiLCJraW5kIiwiREVGX1ZBTFVFUyIsIlZBTFVFU19CVUciLCIkbmF0aXZlIiwiJGRlZmF1bHQiLCIkZW50cmllcyIsIiRhbnlOYXRpdmUiLCJkZXNjcmlwdG9yIiwic2VhcmNoU3RyaW5nIiwiZ2V0SXRlcmF0b3JNZXRob2QiLCJvcmlnaW5hbCIsImVuZFBvcyIsImFkZFRvVW5zY29wYWJsZXMiLCJpdGVyYXRlZCIsIl9pIiwiQXJndW1lbnRzIiwicmUxIiwicmUyIiwicmVnZXhwRmxhZ3MiLCJuYXRpdmVFeGVjIiwibmF0aXZlUmVwbGFjZSIsInBhdGNoZWRFeGVjIiwiVVBEQVRFU19MQVNUX0lOREVYX1dST05HIiwiTlBDR19JTkNMVURFRCIsImxhc3RJbmRleCIsInJlQ29weSIsImF0IiwiZGVmZXIiLCJjaGFubmVsIiwicG9ydCIsImludm9rZSIsImh0bWwiLCJjZWwiLCJzZXRUYXNrIiwic2V0SW1tZWRpYXRlIiwiY2xlYXJUYXNrIiwiY2xlYXJJbW1lZGlhdGUiLCJNZXNzYWdlQ2hhbm5lbCIsIkRpc3BhdGNoIiwiY291bnRlciIsInF1ZXVlIiwibGlzdGVuZXIiLCJldmVudCIsIm5leHRUaWNrIiwibm93IiwicG9ydDIiLCJwb3J0MSIsIm9ubWVzc2FnZSIsInBvc3RNZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImltcG9ydFNjcmlwdHMiLCJyZW1vdmVDaGlsZCIsInNldFRpbWVvdXQiLCJtYWNyb3Rhc2siLCJPYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwiaGVhZCIsImxhc3QiLCJmbHVzaCIsInBhcmVudCIsInN0YW5kYWxvbmUiLCJ0b2dnbGUiLCJjcmVhdGVUZXh0Tm9kZSIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwiUHJvbWlzZUNhcGFiaWxpdHkiLCIkJHJlc29sdmUiLCJCYXNlQnVmZmVyIiwiYWJzIiwicG93IiwibG9nIiwiTE4yIiwiJEJVRkZFUiIsIiRMRU5HVEgiLCIkT0ZGU0VUIiwicGFja0lFRUU3NTQiLCJtTGVuIiwibkJ5dGVzIiwiZUxlbiIsImVNYXgiLCJlQmlhcyIsInJ0IiwidW5wYWNrSUVFRTc1NCIsIm5CaXRzIiwidW5wYWNrSTMyIiwiYnl0ZXMiLCJwYWNrSTgiLCJwYWNrSTE2IiwicGFja0kzMiIsInBhY2tGNjQiLCJwYWNrRjMyIiwidmlldyIsImlzTGl0dGxlRW5kaWFuIiwiaW50SW5kZXgiLCJfYiIsInBhY2siLCJjb252ZXJzaW9uIiwiQXJyYXlCdWZmZXJQcm90byIsIiRzZXRJbnQ4Iiwic2V0SW50OCIsImdldEludDgiLCJzZXRVaW50OCIsImJ1ZmZlckxlbmd0aCIsImdldFVpbnQ4IiwiZ2V0SW50MTYiLCJnZXRVaW50MTYiLCJnZXRJbnQzMiIsImdldFVpbnQzMiIsImdldEZsb2F0MzIiLCJnZXRGbG9hdDY0Iiwic2V0SW50MTYiLCJzZXRVaW50MTYiLCJzZXRJbnQzMiIsInNldFVpbnQzMiIsInNldEZsb2F0MzIiLCJzZXRGbG9hdDY0IiwidXRpbHMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJwYXJhbXMiLCJwYXJhbXNTZXJpYWxpemVyIiwic2VyaWFsaXplZFBhcmFtcyIsInBhcnRzIiwidG9JU09TdHJpbmciLCJoYXNobWFya0luZGV4IiwiZW5oYW5jZUVycm9yIiwibWVzc2FnZSIsInJlcXVlc3QiLCJiczU4IiwiY3MiLCJjb2RlcyIsImRlZmF1bHRMZW5ndGhzIiwidmFyaW50IiwidG9IZXhTdHJpbmciLCJmcm9tSGV4U3RyaW5nIiwidG9CNThTdHJpbmciLCJmcm9tQjU4U3RyaW5nIiwiZW5jb2RlZCIsImJ1ZiIsImlzVmFsaWRDb2RlIiwiZGlnZXN0IiwiaGFzaGZuIiwiY29lcmNlQ29kZSIsImlzQXBwQ29kZSIsInByZWZpeCIsIlByb3RvY29scyIsIlYiLCJzaXplIiwicmVzb2x2YWJsZSIsIkJvb2xlYW4iLCJsZW5ndGhQcmVmaXhlZFZhclNpemUiLCJ0YWJsZSIsInJvdyIsIm1oIiwibXVsdGljb2RlYyIsImNvZGVjcyIsIkNJRFV0aWwiLCJjb2RlYyIsIm11bHRpYmFzZU5hbWUiLCJfQ0lEIiwiYmFzZU5hbWUiLCJnZXRDb2RlYyIsInJtUHJlZml4IiwidmFsaWRhdGVDSUQiLCJmaXJzdEJ5dGUiLCJfYnVmZmVyIiwiZ2V0Q29kZVZhcmludCIsImJhc2UiLCJ0b0Jhc2VFbmNvZGVkU3RyaW5nIiwib3RoZXIiLCJlcXVhbHMiLCJlcnJvck1zZyIsImNoZWNrQ0lEQ29tcG9uZW50cyIsIndpdGhJcyIsImNsYXNzTmFtZSIsInN5bWJvbE5hbWUiLCJyZWFkU3RyZWFtIiwiTm9kZUZvcm1EYXRhIiwicGluYXRhTWV0YWRhdGEiLCJhcHBlbmQiLCJmaWxlbmFtZSIsInN0cmVhbSIsIlJlYWRhYmxlIiwidXBsb2FkVG9JUEZTIiwiZW5kcG9pbnQiLCJiYXNlVXJsIiwidmFsaWRhdGVNZXRhZGF0YSIsInBpbmF0YU9wdGlvbnMiLCJ2YWxpZGF0ZVBpbmF0YU9wdGlvbnMiLCJheGlvcyIsInBvc3QiLCJjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnNXaXRoRm9ybURhdGEiLCJnZXRCb3VuZGFyeSIsInN0YXR1cyIsImZvcm1hdHRlZEVycm9yIiwiaGFuZGxlRXJyb3IiLCJmaWx0ZXJzIiwiaW5jbHVkZUNvdW50IiwiYmFzZUVuZHBvaW50IiwiZ2V0S2V5cyIsIndpbmRvd05hbWVzIiwiZ2V0V2luZG93TmFtZXMiLCJnT1BTIiwiJGFzc2lnbiIsImFzc2lnbiIsImdldFN5bWJvbHMiLCJ5IiwiZmFjdG9yaWVzIiwiY29uc3RydWN0IiwicGFydEFyZ3MiLCJib3VuZCIsInVuIiwiJHBhcnNlSW50Iiwid3MiLCJoZXgiLCIkcGFyc2VGbG9hdCIsInBhcnNlRmxvYXQiLCJtc2ciLCJpc0Zpbml0ZSIsImxvZzFwIiwiRVBTSUxPTiIsIkVQU0lMT04zMiIsIk1BWDMyIiwiTUlOMzIiLCJmcm91bmQiLCIkYWJzIiwiJHNpZ24iLCJEYXRlIiwicmV0IiwiJHNvcnQiLCJtZW1vIiwiaXNSaWdodCIsInRvIiwiaW5jIiwiZm9yY2VkIiwiZmxhZ3MiLCJwcm9taXNlQ2FwYWJpbGl0eSIsInN0cm9uZyIsImVudHJ5IiwiZ2V0RW50cnkiLCIkaXRlckRlZmluZSIsIlNJWkUiLCJfZiIsIl9sIiwicHJldiIsImFkZCIsIkludGVybmFsTWFwIiwiZWFjaCIsIndlYWsiLCJOQVRJVkVfV0VBS19NQVAiLCJJU19JRTExIiwiQWN0aXZlWE9iamVjdCIsInVuY2F1Z2h0RnJvemVuU3RvcmUiLCJ1ZnN0b3JlIiwiJFdlYWtNYXAiLCIkaGFzIiwiVW5jYXVnaHRGcm96ZW5TdG9yZSIsImZpbmRVbmNhdWdodEZyb3plbiIsInNwbGljZSIsIm51bWJlciIsIlJlZmxlY3QiLCJJU19DT05DQVRfU1BSRUFEQUJMRSIsImZsYXR0ZW5JbnRvQXJyYXkiLCJzb3VyY2VMZW4iLCJkZXB0aCIsIm1hcHBlciIsImVsZW1lbnQiLCJzcHJlYWRhYmxlIiwidGFyZ2V0SW5kZXgiLCJzb3VyY2VJbmRleCIsInJlcGVhdCIsIm1heExlbmd0aCIsImZpbGxTdHJpbmciLCJsZWZ0Iiwic3RyaW5nTGVuZ3RoIiwiZmlsbFN0ciIsImludE1heExlbmd0aCIsImZpbGxMZW4iLCJzdHJpbmdGaWxsZXIiLCJpc0VudHJpZXMiLCJzY2FsZSIsImluTG93IiwiaW5IaWdoIiwib3V0TG93Iiwib3V0SGlnaCIsImhhc2hUb1BpbiIsImJvZHkiLCJfX0NBTkNFTF9fIiwibm9ybWFsaXplSGVhZGVyTmFtZSIsIkRFRkFVTFRfQ09OVEVOVF9UWVBFIiwic2V0Q29udGVudFR5cGVJZlVuc2V0IiwiYWRhcHRlciIsImRlZmF1bHRzIiwiWE1MSHR0cFJlcXVlc3QiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwidHJhbnNmb3JtUmVzcG9uc2UiLCJwYXJzZSIsInRpbWVvdXQiLCJ4c3JmQ29va2llTmFtZSIsInhzcmZIZWFkZXJOYW1lIiwidmFsaWRhdGVTdGF0dXMiLCJjcmVhdGVFcnJvciIsImlzQXhpb3NFcnJvciIsInRvSlNPTiIsImRlc2NyaXB0aW9uIiwiZmlsZU5hbWUiLCJsaW5lTnVtYmVyIiwiY29sdW1uTnVtYmVyIiwic3RhY2siLCJpc0Fic29sdXRlVVJMIiwiY29tYmluZVVSTHMiLCJiYXNlVVJMIiwicmVxdWVzdGVkVVJMIiwiVVJMIiwiaHR0cCIsImh0dHBzIiwiV3JpdGFibGUiLCJhc3NlcnQiLCJkZWJ1ZyIsImV2ZW50SGFuZGxlcnMiLCJhcmcxIiwiYXJnMyIsIl9yZWRpcmVjdGFibGUiLCJSZWRpcmVjdGlvbkVycm9yIiwiY3JlYXRlRXJyb3JUeXBlIiwiVG9vTWFueVJlZGlyZWN0c0Vycm9yIiwiTWF4Qm9keUxlbmd0aEV4Y2VlZGVkRXJyb3IiLCJXcml0ZUFmdGVyRW5kRXJyb3IiLCJSZWRpcmVjdGFibGVSZXF1ZXN0IiwicmVzcG9uc2VDYWxsYmFjayIsIl9zYW5pdGl6ZU9wdGlvbnMiLCJfb3B0aW9ucyIsIl9lbmRlZCIsIl9lbmRpbmciLCJfcmVkaXJlY3RDb3VudCIsIl9yZWRpcmVjdHMiLCJfcmVxdWVzdEJvZHlMZW5ndGgiLCJfcmVxdWVzdEJvZHlCdWZmZXJzIiwib24iLCJfb25OYXRpdmVSZXNwb25zZSIsIl9wcm9jZXNzUmVzcG9uc2UiLCJfcGVyZm9ybVJlcXVlc3QiLCJzdGFydFRpbWVyIiwibXNlY3MiLCJjbGVhclRpbWVvdXQiLCJfdGltZW91dCIsImNsZWFyVGltZXIiLCJwcm90b2NvbHMiLCJtYXhSZWRpcmVjdHMiLCJuYXRpdmVQcm90b2NvbHMiLCJzY2hlbWUiLCJwcm90b2NvbCIsIm5hdGl2ZVByb3RvY29sIiwid3JhcHBlZFByb3RvY29sIiwiY2FsbGJhY2siLCJ1cmxTdHIiLCJ1cmxUb09wdGlvbnMiLCJlcXVhbCIsIndyYXBwZWRSZXF1ZXN0Iiwibm9vcCIsInVybE9iamVjdCIsImhvc3RuYW1lIiwic3RhcnRzV2l0aCIsInNlYXJjaCIsInBhdGhuYW1lIiwiaHJlZiIsInJlbW92ZU1hdGNoaW5nSGVhZGVycyIsInJlZ2V4IiwibGFzdFZhbHVlIiwiaGVhZGVyIiwiZGVmYXVsdE1lc3NhZ2UiLCJDdXN0b21FcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwiZW5jb2RpbmciLCJfY3VycmVudFJlcXVlc3QiLCJhYm9ydCIsImN1cnJlbnRSZXF1ZXN0Iiwic2V0SGVhZGVyIiwicmVtb3ZlSGVhZGVyIiwib25jZSIsInNvY2tldCIsImhvc3QiLCJzZWFyY2hQb3MiLCJzdWJzdHJpbmciLCJhZ2VudHMiLCJzdWJzdHIiLCJhZ2VudCIsIl9jdXJyZW50VXJsIiwiZm9ybWF0IiwiX2lzUmVkaXJlY3QiLCJidWZmZXJzIiwid3JpdGVOZXh0IiwiZmluaXNoZWQiLCJzdGF0dXNDb2RlIiwidHJhY2tSZWRpcmVjdHMiLCJsb2NhdGlvbiIsImZvbGxvd1JlZGlyZWN0cyIsInJlbW92ZUFsbExpc3RlbmVycyIsImRlc3Ryb3kiLCJwcmV2aW91c0hvc3ROYW1lIiwicmVkaXJlY3RVcmwiLCJyZWRpcmVjdFVybFBhcnRzIiwiYmVmb3JlUmVkaXJlY3QiLCJyZXNwb25zZURldGFpbHMiLCJjYXVzZSIsInJlc3BvbnNlVXJsIiwicmVkaXJlY3RzIiwiZW52IiwiY3JlYXRlRGVidWciLCJuYW1lc3BhY2UiLCJwcmV2VGltZSIsImVuYWJsZU92ZXJyaWRlIiwiZW5hYmxlZCIsImN1cnIiLCJtcyIsImRpZmYiLCJjb2VyY2UiLCJ1bnNoaWZ0IiwiZm9ybWF0dGVyIiwiZm9ybWF0dGVycyIsImZvcm1hdEFyZ3MiLCJ1c2VDb2xvcnMiLCJjb2xvciIsInNlbGVjdENvbG9yIiwiaW5pdCIsImRlbGltaXRlciIsIm5ld0RlYnVnIiwidG9OYW1lc3BhY2UiLCJkZWZhdWx0IiwiZGlzYWJsZSIsIm5hbWVzcGFjZXMiLCJza2lwcyIsImVuYWJsZSIsInNhdmUiLCJodW1hbml6ZSIsIndhcm4iLCJjb2xvcnMiLCJsb2FkIiwiY29uZmlnMSIsImNvbmZpZzIiLCJ2YWx1ZUZyb21Db25maWcyS2V5cyIsIm1lcmdlRGVlcFByb3BlcnRpZXNLZXlzIiwiZGVmYXVsdFRvQ29uZmlnMktleXMiLCJkaXJlY3RNZXJnZUtleXMiLCJnZXRNZXJnZWRWYWx1ZSIsIm1lcmdlRGVlcFByb3BlcnRpZXMiLCJwcm9wIiwiYXhpb3NLZXlzIiwib3RoZXJLZXlzIiwiQ2FuY2VsIiwiX0J1ZmZlciIsIkFMUEhBQkVUIiwiQkFTRV9NQVAiLCJ4YyIsIkJBU0UiLCJMRUFERVIiLCJGQUNUT1IiLCJpRkFDVE9SIiwiZGVjb2RlVW5zYWZlIiwiYWxsb2MiLCJwc3oiLCJ6ZXJvZXMiLCJiMjU2IiwiY2FycnkiLCJpdDMiLCJpdDQiLCJ2Y2giLCJhbGxvY1Vuc2FmZSIsInBiZWdpbiIsInBlbmQiLCJiNTgiLCJpdDEiLCJpdDIiLCJjb25zdGFudHMiLCJuYW1lT3JDb2RlIiwiZ2V0QmFzZSIsImJ1Zk9yU3RyaW5nIiwiZnJlZXplIiwiZXJyTm90U3VwcG9ydGVkIiwiY29kZUJ1ZiIsInZhbGlkRW5jb2RlIiwiaXNJbXBsZW1lbnRlZCIsImluc3BlY3QiLCJmb3IiLCJhZGRyIiwiZnJvbUJ1ZmZlciIsImZyb21TdHJpbmciLCJwcm90b3MiLCJwcm90b0NvZGVzIiwiYnVmZmVyVG9TdHJpbmciLCJ0b09wdGlvbnMiLCJvcHRzIiwicGFyc2VkIiwiZmFtaWx5IiwidHJhbnNwb3J0Iiwic2l6ZUZvckFkZHIiLCJwcm90b05hbWVzIiwidHVwbGVzIiwiYnVmZmVyVG9UdXBsZXMiLCJzdHJpbmdUdXBsZXMiLCJ0dXBsZXNUb1N0cmluZ1R1cGxlcyIsImVuY2Fwc3VsYXRlIiwiZGVjYXBzdWxhdGUiLCJkZWNhcHN1bGF0ZUNvZGUiLCJ0dXBsZXNUb0J1ZmZlciIsImdldFBlZXJJZCIsImI1OHN0ciIsInR1cGxlIiwiaXBmcyIsInBvcCIsImdldFBhdGgiLCJub2RlQWRkcmVzcyIsImFkZHJlc3MiLCJmcm9tTm9kZUFkZHJlc3MiLCJpcCIsImlzVGhpbldhaXN0QWRkcmVzcyIsImlzTmFtZSIsImJ1ZmZlclRvTnVtYmVyIiwibnVtYmVyVG9CdWZmZXIiLCJudW0iLCJoZXhTdHJpbmciLCJ2YXJpbnRCdWZmZXJFbmNvZGUiLCJ2YXJpbnRCdWZmZXJEZWNvZGUiLCJ2YXJpbnRFbmNvZGUiLCJDbGFzcyIsInN5bWJvbCIsIkNsYXNzSXNXcmFwcGVyIiwic3VwZXIiLCJ3aXRob3V0TmV3IiwiX3RoaXMiLCJpcGZzUGluSGFzaCIsInB1dCIsIkNvbWJpbmVkU3RyZWFtIiwidXRpbCIsInBhcnNlVXJsIiwiZnMiLCJtaW1lIiwiYXN5bmNraXQiLCJwb3B1bGF0ZSIsIm9wdGlvbiIsIl9vdmVyaGVhZExlbmd0aCIsIl92YWx1ZUxlbmd0aCIsIl92YWx1ZXNUb01lYXN1cmUiLCJpbmhlcml0cyIsIkxJTkVfQlJFQUsiLCJmaWVsZCIsIl9lcnJvciIsIl9tdWx0aVBhcnRIZWFkZXIiLCJmb290ZXIiLCJfbXVsdGlQYXJ0Rm9vdGVyIiwiX3RyYWNrTGVuZ3RoIiwidmFsdWVMZW5ndGgiLCJrbm93bkxlbmd0aCIsInJlYWRhYmxlIiwiX2xlbmd0aFJldHJpZXZlciIsImZpbGVTaXplIiwicGF1c2UiLCJyZXN1bWUiLCJjb250ZW50RGlzcG9zaXRpb24iLCJfZ2V0Q29udGVudERpc3Bvc2l0aW9uIiwiY29udGVudFR5cGUiLCJfZ2V0Q29udGVudFR5cGUiLCJjb250ZW50cyIsImZpbGVwYXRoIiwibm9ybWFsaXplIiwiYmFzZW5hbWUiLCJjbGllbnQiLCJfaHR0cE1lc3NhZ2UiLCJsb29rdXAiLCJfc3RyZWFtcyIsIl9sYXN0Qm91bmRhcnkiLCJnZXRIZWFkZXJzIiwidXNlckhlYWRlcnMiLCJmb3JtSGVhZGVycyIsIl9ib3VuZGFyeSIsIl9nZW5lcmF0ZUJvdW5kYXJ5IiwiZ2V0QnVmZmVyIiwiZGF0YUJ1ZmZlciIsImJvdW5kYXJ5IiwiZ2V0TGVuZ3RoU3luYyIsImhhc0tub3duTGVuZ3RoIiwiZ2V0TGVuZ3RoIiwicGFyYWxsZWwiLCJzdWJtaXQiLCJhc3luYyIsInN0YXRlIiwiam9icyIsIml0ZW0iLCJhYm9ydGVyIiwicnVuSm9iIiwib3V0cHV0IiwicmVzdWx0cyIsImlzQXN5bmMiLCJjbGVhbiIsInNvcnRNZXRob2QiLCJpc05hbWVkTGlzdCIsImluaXRTdGF0ZSIsImtleWVkTGlzdCIsIml0ZXJhdGUiLCJ0ZXJtaW5hdG9yIiwiYXNjZW5kaW5nIiwiaXRlcmF0b3JIYW5kbGVyIiwiZGVzY2VuZGluZyIsInNvdXJjZVBhdGgiLCJwcm9taXNlcyIsImNyZWF0ZVJlYWRTdHJlYW0iLCJyZWFkZGlyIiwiZmlsZXMiLCJmaWxlIiwicmVxdWVzdEJvZHkiLCJwaW5hdGFDb250ZW50IiwibmV3VXJsIiwiZmlyc3RGaWx0ZXJBcHBsaWVkIiwiYWRkRmlsdGVyIiwibmV3RmlsdGVyIiwiaXBmc19waW5faGFzaCIsImxpbWl0IiwiaGFzaFRvVW5waW4iLCJhdXRoZW50aWNhdGVkIiwiZmlsdGVyUXVlcnkiLCJtZXRhZGF0YVF1ZXJ5IiwiaGFzaENvbnRhaW5zIiwicGluU3RhcnQiLCJ2YWxpZGF0ZUFuZFJldHVybkRhdGUiLCJwaW5FbmQiLCJ1bnBpblN0YXJ0IiwidW5waW5FbmQiLCJwaW5TaXplTWluIiwicGluU2l6ZU1heCIsInBhZ2VMaW1pdCIsInBhZ2VPZmZzZXQiLCJwcnVuZWRLZXlWYWx1ZXMiLCJvcCIsInNlY29uZFZhbHVlIiwiZGF0ZVRvVmFsaWRhdGUiLCJkYXRlUGFyc2VkIiwiX2JhYmVsUG9seWZpbGwiLCJwYWRTdGFydCIsInBhZEVuZCIsInN5bWJvbHMiLCIkZ2V0UHJvdG90eXBlT2YiLCIkZnJlZXplIiwiJHNlYWwiLCIkcHJldmVudEV4dGVuc2lvbnMiLCIkaXNGcm96ZW4iLCIkaXNTZWFsZWQiLCIkaXNFeHRlbnNpYmxlIiwiSEFTX0lOU1RBTkNFIiwiRnVuY3Rpb25Qcm90byIsImFOdW1iZXJWYWx1ZSIsIiR0b0ZpeGVkIiwidG9GaXhlZCIsIkVSUk9SIiwibXVsdGlwbHkiLCJjMiIsImRpdmlkZSIsIm51bVRvU3RyaW5nIiwiYWNjIiwiZnJhY3Rpb25EaWdpdHMiLCJ6IiwieDIiLCIkdG9QcmVjaXNpb24iLCJ0b1ByZWNpc2lvbiIsInByZWNpc2lvbiIsIl9pc0Zpbml0ZSIsImlzU2FmZUludGVnZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiTUlOX1NBRkVfSU5URUdFUiIsInNxcnQiLCIkYWNvc2giLCJhY29zaCIsIk1BWF9WQUxVRSIsIiRhc2luaCIsImFzaW5oIiwiJGF0YW5oIiwiYXRhbmgiLCJjYnJ0IiwiY2x6MzIiLCJMT0cyRSIsImNvc2giLCJoeXBvdCIsInZhbHVlMSIsInZhbHVlMiIsImRpdiIsInN1bSIsImxhcmciLCIkaW11bCIsImltdWwiLCJ4biIsInluIiwieGwiLCJ5bCIsImxvZzEwIiwiTE9HMTBFIiwibG9nMiIsInNpbmgiLCJ0YW5oIiwidHJ1bmMiLCJmcm9tQ2hhckNvZGUiLCIkZnJvbUNvZGVQb2ludCIsImZyb21Db2RlUG9pbnQiLCJyYXciLCJjYWxsU2l0ZSIsInRwbCIsIiRhdCIsInBvaW50IiwiY29kZVBvaW50QXQiLCJjb250ZXh0IiwiJGVuZHNXaXRoIiwiZW5kc1dpdGgiLCJlbmRQb3NpdGlvbiIsIiRzdGFydHNXaXRoIiwiZ2V0VGltZSIsInB2IiwiJHRvSVNPU3RyaW5nIiwibHoiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJEYXRlUHJvdG8iLCJoaW50IiwidXBUbyIsImNsb25lZCIsIiRzb21lIiwiJGV2ZXJ5IiwiJHJlZHVjZSIsIiRpbmRleE9mIiwiTkVHQVRJVkVfWkVSTyIsIiRmaW5kIiwiJGZsYWdzIiwiJFJlZ0V4cCIsIkNPUlJFQ1RfTkVXIiwidGlSRSIsInBpUkUiLCJmaVUiLCJwcm94eSIsImFkdmFuY2VTdHJpbmdJbmRleCIsInJlZ0V4cEV4ZWMiLCIkbWF0Y2giLCJtYXliZUNhbGxOYXRpdmUiLCJyeCIsImZ1bGxVbmljb2RlIiwibWF0Y2hTdHIiLCJTVUJTVElUVVRJT05fU1lNQk9MUyIsIlNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEIiwiUkVQTEFDRSIsIiRyZXBsYWNlIiwic2VhcmNoVmFsdWUiLCJyZXBsYWNlVmFsdWUiLCJmdW5jdGlvbmFsUmVwbGFjZSIsImFjY3VtdWxhdGVkUmVzdWx0IiwibmV4dFNvdXJjZVBvc2l0aW9uIiwibWF0Y2hlZCIsInBvc2l0aW9uIiwiY2FwdHVyZXMiLCJuYW1lZENhcHR1cmVzIiwicmVwbGFjZXJBcmdzIiwicmVwbGFjZW1lbnQiLCJnZXRTdWJzdGl0dXRpb24iLCJ0YWlsUG9zIiwiY2giLCJjYXB0dXJlIiwic2FtZVZhbHVlIiwiU0VBUkNIIiwiJHNlYXJjaCIsInByZXZpb3VzTGFzdEluZGV4IiwiY2FsbFJlZ0V4cEV4ZWMiLCIkbWluIiwiJHB1c2giLCJTVVBQT1JUU19ZIiwiU1BMSVQiLCIkc3BsaXQiLCJpbnRlcm5hbFNwbGl0IiwibGFzdExlbmd0aCIsImxhc3RMYXN0SW5kZXgiLCJzcGxpdExpbWl0Iiwic2VwYXJhdG9yQ29weSIsInNwbGl0dGVyIiwidW5pY29kZU1hdGNoaW5nIiwibGltIiwicSIsIiRpc1ZpZXciLCJmaW4iLCJ2aWV3UyIsInZpZXdUIiwickFwcGx5IiwiZkFwcGx5IiwidGhpc0FyZ3VtZW50IiwiYXJndW1lbnRzTGlzdCIsIkwiLCJyQ29uc3RydWN0IiwiTkVXX1RBUkdFVF9CVUciLCJBUkdTX0JVRyIsIlRhcmdldCIsIm5ld1RhcmdldCIsIiRhcmdzIiwicHJvcGVydHlLZXkiLCJhdHRyaWJ1dGVzIiwiZGVsZXRlUHJvcGVydHkiLCJFbnVtZXJhdGUiLCJlbnVtZXJhdGUiLCJyZWNlaXZlciIsImdldFByb3RvIiwiZXhpc3RpbmdEZXNjcmlwdG9yIiwib3duRGVzYyIsInNldFByb3RvIiwiJGluY2x1ZGVzIiwiYXJyYXlTcGVjaWVzQ3JlYXRlIiwiZmxhdE1hcCIsImZsYXR0ZW4iLCJkZXB0aEFyZyIsIiRwYWQiLCJXRUJLSVRfQlVHIiwiZ2V0RmxhZ3MiLCJSZWdFeHBQcm90byIsIiRSZWdFeHBTdHJpbmdJdGVyYXRvciIsIl9yIiwibWF0Y2hBbGwiLCIkdmFsdWVzIiwiX19kZWZpbmVHZXR0ZXJfXyIsIl9fbG9va3VwR2V0dGVyX18iLCJfX2xvb2t1cFNldHRlcl9fIiwiaXNFcnJvciIsImNsYW1wIiwibG93ZXIiLCJ1cHBlciIsIkRFR19QRVJfUkFEIiwiUEkiLCJSQURfUEVSX0RFRyIsImRlZ3JlZXMiLCJyYWRpYW5zIiwiZnNjYWxlIiwiaWFkZGgiLCJ4MCIsIngxIiwieTAiLCJ5MSIsIiR4MCIsIiR5MCIsImlzdWJoIiwiaW11bGgiLCJ1IiwiJHUiLCIkdiIsInUwIiwidjAiLCJ1MSIsInYxIiwidW11bGgiLCJzaWduYml0Iiwib25GaW5hbGx5IiwidG9NZXRhS2V5Iiwib3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSIsImRlZmluZU1ldGFkYXRhIiwibWV0YWRhdGFLZXkiLCJtZXRhZGF0YVZhbHVlIiwiZGVsZXRlTWV0YWRhdGEiLCJvcmRpbmFyeUhhc093bk1ldGFkYXRhIiwib3JkaW5hcnlHZXRPd25NZXRhZGF0YSIsIm9yZGluYXJ5R2V0TWV0YWRhdGEiLCJnZXRNZXRhZGF0YSIsIlNldCIsIm9yZGluYXJ5T3duTWV0YWRhdGFLZXlzIiwib3JkaW5hcnlNZXRhZGF0YUtleXMiLCJvS2V5cyIsInBLZXlzIiwiZ2V0TWV0YWRhdGFLZXlzIiwiZ2V0T3duTWV0YWRhdGEiLCJnZXRPd25NZXRhZGF0YUtleXMiLCJvcmRpbmFyeUhhc01ldGFkYXRhIiwiaGFzTWV0YWRhdGEiLCJoYXNPd25NZXRhZGF0YSIsIiRtZXRhZGF0YSIsImFzYXAiLCJPQlNFUlZBQkxFIiwiY2xlYW51cFN1YnNjcmlwdGlvbiIsInN1YnNjcmlwdGlvbiIsImNsZWFudXAiLCJzdWJzY3JpcHRpb25DbG9zZWQiLCJfbyIsImNsb3NlU3Vic2NyaXB0aW9uIiwiU3Vic2NyaXB0aW9uIiwib2JzZXJ2ZXIiLCJzdWJzY3JpYmVyIiwiU3Vic2NyaXB0aW9uT2JzZXJ2ZXIiLCJ1bnN1YnNjcmliZSIsImNvbXBsZXRlIiwiJE9ic2VydmFibGUiLCJzdWJzY3JpYmUiLCJvYnNlcnZhYmxlIiwiaXRlbXMiLCJPYnNlcnZhYmxlIiwiTVNJRSIsInRpbWUiLCJib3VuZEFyZ3MiLCJzZXRJbnRlcnZhbCIsIiR0YXNrIiwiVE9fU1RSSU5HX1RBRyIsIkFycmF5VmFsdWVzIiwiRE9NSXRlcmFibGVzIiwiQ1NTUnVsZUxpc3QiLCJDU1NTdHlsZURlY2xhcmF0aW9uIiwiQ1NTVmFsdWVMaXN0IiwiQ2xpZW50UmVjdExpc3QiLCJET01SZWN0TGlzdCIsIkRPTVN0cmluZ0xpc3QiLCJET01Ub2tlbkxpc3QiLCJEYXRhVHJhbnNmZXJJdGVtTGlzdCIsIkZpbGVMaXN0IiwiSFRNTEFsbENvbGxlY3Rpb24iLCJIVE1MQ29sbGVjdGlvbiIsIkhUTUxGb3JtRWxlbWVudCIsIkhUTUxTZWxlY3RFbGVtZW50IiwiTWVkaWFMaXN0IiwiTWltZVR5cGVBcnJheSIsIk5hbWVkTm9kZU1hcCIsIk5vZGVMaXN0IiwiUGFpbnRSZXF1ZXN0TGlzdCIsIlBsdWdpbiIsIlBsdWdpbkFycmF5IiwiU1ZHTGVuZ3RoTGlzdCIsIlNWR051bWJlckxpc3QiLCJTVkdQYXRoU2VnTGlzdCIsIlNWR1BvaW50TGlzdCIsIlNWR1N0cmluZ0xpc3QiLCJTVkdUcmFuc2Zvcm1MaXN0IiwiU291cmNlQnVmZmVyTGlzdCIsIlN0eWxlU2hlZXRMaXN0IiwiVGV4dFRyYWNrQ3VlTGlzdCIsIlRleHRUcmFja0xpc3QiLCJUb3VjaExpc3QiLCJjb2xsZWN0aW9ucyIsImV4cGxpY2l0IiwiQ29sbGVjdGlvbiIsIk9wIiwiaGFzT3duIiwiaXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwiaW5Nb2R1bGUiLCJydW50aW1lIiwicmVnZW5lcmF0b3JSdW50aW1lIiwiQ29udGludWVTZW50aW5lbCIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwiR3AiLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkdlbmVyYXRvciIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsIm1hcmsiLCJhd3JhcCIsIl9fYXdhaXQiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJBc3luY0l0ZXJhdG9yIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJ0cnlMb2NzTGlzdCIsIkNvbnRleHQiLCJyZXNldCIsInNraXBUZW1wUmVzZXQiLCJzZW50IiwiX3NlbnQiLCJkZWxlZ2F0ZSIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5Iiwic3RvcCIsInJvb3RSZWNvcmQiLCJjb21wbGV0aW9uIiwicnZhbCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwicmVjb3JkIiwidHJ5TG9jIiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWJydXB0IiwiZmluYWxseUVudHJ5IiwiYWZ0ZXJMb2MiLCJmaW5pc2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwcm90b0dlbmVyYXRvciIsImdlbmVyYXRvciIsIl9pbnZva2UiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwidHJ5Q2F0Y2giLCJtYWtlSW52b2tlTWV0aG9kIiwidW53cmFwcGVkIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJyZXR1cm4iLCJpbmZvIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsIml0ZXJhdG9yTWV0aG9kIiwiZXNjYXBlIiwiJHJlIiwicmVnRXhwIiwicGFydCIsIlBpbmF0YUNsaWVudCIsInBpbmF0YUNvbmZpZ1BhcmFtIiwicmVmYWN0b3JDb25maWciLCJzYW5pdGl6ZUNvbmZpZyIsInJlYWRhYmxlU3RyZWFtIiwibWF4Q291bnQiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiQXhpb3MiLCJtZXJnZUNvbmZpZyIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImluc3RhbmNlQ29uZmlnIiwiQ2FuY2VsVG9rZW4iLCJpc0NhbmNlbCIsInNwcmVhZCIsImJ1aWxkVVJMIiwiSW50ZXJjZXB0b3JNYW5hZ2VyIiwiZGlzcGF0Y2hSZXF1ZXN0IiwiaW50ZXJjZXB0b3JzIiwiaW50ZXJjZXB0b3IiLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsInNoaWZ0IiwiZ2V0VXJpIiwiaGFuZGxlcnMiLCJ1c2UiLCJlamVjdCIsImgiLCJ0cmFuc2Zvcm1EYXRhIiwidGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCIsImNhbmNlbFRva2VuIiwidGhyb3dJZlJlcXVlc3RlZCIsIm5vcm1hbGl6ZWROYW1lIiwidG9VcHBlckNhc2UiLCJzZXR0bGUiLCJjb29raWVzIiwiYnVpbGRGdWxsUGF0aCIsInBhcnNlSGVhZGVycyIsImlzVVJMU2FtZU9yaWdpbiIsInJlcXVlc3REYXRhIiwicmVxdWVzdEhlYWRlcnMiLCJhdXRoIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInVuZXNjYXBlIiwiYnRvYSIsImZ1bGxQYXRoIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VIZWFkZXJzIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzVGV4dCIsIm9uYWJvcnQiLCJvbmVycm9yIiwib250aW1lb3V0IiwidGltZW91dEVycm9yTWVzc2FnZSIsInhzcmZWYWx1ZSIsInJlYWQiLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25Eb3dubG9hZFByb2dyZXNzIiwib25VcGxvYWRQcm9ncmVzcyIsInVwbG9hZCIsImNhbmNlbCIsInNlbmQiLCJleHBpcmVzIiwic2VjdXJlIiwiY29va2llIiwidG9HTVRTdHJpbmciLCJkZWNvZGVVUklDb21wb25lbnQiLCJyZW1vdmUiLCJyZWxhdGl2ZVVSTCIsImlnbm9yZUR1cGxpY2F0ZU9mIiwibGluZSIsIm9yaWdpblVSTCIsIm1zaWUiLCJ1cmxQYXJzaW5nTm9kZSIsInJlc29sdmVVUkwiLCJzZXRBdHRyaWJ1dGUiLCJyZXF1ZXN0VVJMIiwiaHR0cEZvbGxvdyIsImh0dHBzRm9sbG93IiwiemxpYiIsInBrZyIsImlzSHR0cHMiLCJyZXNvbHZlUHJvbWlzZSIsInJlamVjdFByb21pc2UiLCJ1cmxBdXRoIiwiaXNIdHRwc1JlcXVlc3QiLCJodHRwc0FnZW50IiwiaHR0cEFnZW50Iiwic29ja2V0UGF0aCIsInByb3h5RW52IiwicHJveHlVcmwiLCJwYXJzZWRQcm94eVVybCIsIm5vUHJveHlFbnYiLCJub19wcm94eSIsIk5PX1BST1hZIiwic2hvdWxkUHJveHkiLCJwcm94eUVsZW1lbnQiLCJwcm94eVVybEF1dGgiLCJzZXRQcm94eSIsImJhc2U2NCIsInJlZGlyZWN0aW9uIiwiaXNIdHRwc1Byb3h5IiwicmVxIiwiYWJvcnRlZCIsImxhc3RSZXF1ZXN0IiwiZGVjb21wcmVzcyIsImNyZWF0ZVVuemlwIiwic3RhdHVzTWVzc2FnZSIsInJlc3BvbnNlQnVmZmVyIiwiY2h1bmsiLCJyZXNwb25zZURhdGEiLCJyZXNwb25zZUVuY29kaW5nIiwiYnJvd3NlciIsIl9fbndqcyIsImxhc3RDIiwic3RvcmFnZSIsInNldEl0ZW0iLCJyZW1vdmVJdGVtIiwiZ2V0SXRlbSIsIkRFQlVHIiwiV2Via2l0QXBwZWFyYW5jZSIsImZpcmVidWciLCIkMSIsImxvY2FsU3RvcmFnZSIsImxvY2Fsc3RvcmFnZSIsIndhcm5lZCIsInBsdXJhbCIsImxvbmciLCJmbXRTaG9ydCIsInR0eSIsImluc3BlY3RPcHRzIiwic3RkZXJyIiwiY29sb3JDb2RlIiwiaGlkZURhdGUiLCJnZXREYXRlIiwiaXNhdHR5IiwiZmQiLCJkZXByZWNhdGUiLCJzdXBwb3J0c0NvbG9yIiwibGV2ZWwiLCJvcyIsImhhc0ZsYWciLCJmb3JjZUNvbG9yIiwiZ2V0U3VwcG9ydExldmVsIiwiaGFzQmFzaWMiLCJoYXMyNTYiLCJoYXMxNm0iLCJ0cmFuc2xhdGVMZXZlbCIsImlzVFRZIiwicGxhdGZvcm0iLCJvc1JlbGVhc2UiLCJyZWxlYXNlIiwiQ0lfTkFNRSIsIlRFQU1DSVRZX1ZFUlNJT04iLCJDT0xPUlRFUk0iLCJURVJNX1BST0dSQU1fVkVSU0lPTiIsIlRFUk1fUFJPR1JBTSIsIlRFUk0iLCJGT1JDRV9DT0xPUiIsInN0ZG91dCIsImZsYWciLCJhcmd2IiwidGVybWluYXRvclBvcyIsInRva2VuIiwicGF5bG9hZCIsImNvcHlQcm9wcyIsImRzdCIsIlNhZmVCdWZmZXIiLCJlbmNvZGluZ09yT2Zmc2V0IiwiYWxsb2NVbnNhZmVTbG93IiwiU2xvd0J1ZmZlciIsIjAiLCJvbGRPZmZzZXQiLCJJTlQiLCJOMSIsIk4yIiwiTjMiLCJONCIsIk41IiwiTjYiLCJONyIsIk44IiwiTjkiLCJiYXNlWCIsImJhc2UxNiIsImJhc2UzMiIsInR1cHBsZSIsImltcGxlbWVudGF0aW9uIiwiYWxwaGFiZXQiLCJlbmdpbmUiLCJzdHJpbmdPckJ1ZmZlciIsImNoYXIiLCJwYWRkaW5nIiwiYml0cyIsInBhZCIsImNvbnZlcnQiLCJzdHJpbmdUb1N0cmluZ1R1cGxlcyIsIlBhcnNlRXJyb3IiLCJjbGVhblBhdGgiLCJzdHJpbmdUdXBsZXNUb1N0cmluZyIsInR1cCIsInByb3RvRnJvbVR1cGxlIiwic3RyaW5nVHVwbGVzVG9UdXBsZXMiLCJ0b0J1ZmZlciIsInN0cmluZ1RvQnVmZmVyIiwidmFsaWRhdGVCdWZmZXIiLCJpc1ZhbGlkQnVmZmVyIiwiaXNJcCIsIkNvbnZlcnQiLCJpcDJidWYiLCJpcFN0cmluZyIsInBvcnQyYnVmIiwid3JpdGVVSW50MTZCRSIsImJ1ZjJwb3J0IiwicmVhZFVJbnQxNkJFIiwiYnVmMm9uaW9uIiwiYWRkckJ5dGVzIiwicG9ydEJ5dGVzIiwiaXBCdWZmIiwiYnVmMmlwIiwiYnVmMnN0ciIsImJ1ZjJtaCIsInN0cjJidWYiLCJtaDJidWYiLCJhc0J5dGVzIiwicG9ydEJ1ZiIsIm9uaW9uMmJ1ZiIsIm9uaW9uMzJidWYiLCJidWZmIiwiaXNWNEZvcm1hdCIsImJ5dGUiLCJpc1Y2Rm9ybWF0Iiwic2VjdGlvbnMiLCJ2NEJ1ZmZlciIsIndvcmQiLCJpcHY0UmVnZXgiLCJpcHY2UmVnZXgiLCJfbm9ybWFsaXplRmFtaWx5IiwiZnJvbVByZWZpeExlbiIsInByZWZpeGxlbiIsIm1hc2siLCJjaWRyIiwiY2lkclN0cmluZyIsImNpZHJQYXJ0cyIsInN1Ym5ldCIsIm5ldHdvcmtBZGRyZXNzIiwidG9Mb25nIiwibWFza0J1ZmZlciIsIm1hc2tMZW5ndGgiLCJvY3RldCIsIm51bWJlck9mQWRkcmVzc2VzIiwiZnJvbUxvbmciLCJmaXJzdEFkZHJlc3MiLCJsYXN0QWRkcmVzcyIsImJyb2FkY2FzdEFkZHJlc3MiLCJzdWJuZXRNYXNrIiwic3VibmV0TWFza0xlbmd0aCIsIm51bUhvc3RzIiwiY29udGFpbnMiLCJjaWRyU3VibmV0Iiwibm90Iiwib3IiLCJpc0VxdWFsIiwiaXNQcml2YXRlIiwiaXNQdWJsaWMiLCJpc0xvb3BiYWNrIiwibG9vcGJhY2siLCJpbnRlcmZhY2VzIiwibmV0d29ya0ludGVyZmFjZXMiLCJkZXRhaWxzIiwibmljIiwiYWRkcmVzc2VzIiwiaXBsIiwiaXBSZWdleCIsImV4YWN0IiwidjQiLCJ2NiIsImluY2x1ZGVCb3VuZGFyaWVzIiwidjZzZWciLCJpbnRUYWJsZSIsImNvZGVjTmFtZVRvQ29kZVZhcmludCIsImFkZFByZWZpeCIsIm11bHRpY29kZWNTdHJPckNvZGUiLCJwcmVmaXhlZERhdGEiLCJjb2RlY05hbWUiLCJnZXROYW1lIiwiZ2V0TnVtYmVyIiwiZ2V0Q29kZSIsImdldFZhcmludCIsInByaW50IiwiYmFzZVRhYmxlIiwibmFtZVRhYmxlIiwiZW5jb2RpbmdOYW1lIiwidmFyaW50VGFibGUiLCJ0YWJsZUJ5Q29kZSIsIkhJX0JBU0UzMl9OT19OT0RFX0pTIiwiQ09NTU9OX0pTIiwiSElfQkFTRTMyX05PX0NPTU1PTl9KUyIsIkFNRCIsIkJBU0UzMl9FTkNPREVfQ0hBUiIsIkJBU0UzMl9ERUNPREVfQ0hBUiIsImJsb2NrcyIsInRocm93SW52YWxpZFV0ZjgiLCJwYXJ0aWFsIiwiZGVjb2RlQXNCeXRlcyIsImJhc2UzMlN0ciIsInYyIiwidjMiLCJ2NSIsInY3IiwicmVtYWluIiwiYXNjaWlPbmx5IiwiZm9sbG93aW5nQ2hhcnMiLCJ0b1V0ZjhTdHJpbmciLCJub3RTdHJpbmciLCJlbmNvZGVCeXRlcyIsImVuY29kZUFzY2lpIiwiZW5jb2RlVXRmOCIsIl9fd2VicGFja19hbWRfb3B0aW9uc19fIiwiRE5TNCIsIkROUzYiLCJETlMiLCJJUCIsIlRDUCIsImFuZCIsIlVEUCIsIlVUUCIsIldlYlNvY2tldHMiLCJXZWJTb2NrZXRzU2VjdXJlIiwiSFRUUCIsIkhUVFBTIiwiV2ViUlRDU3RhciIsIldlYlNvY2tldFN0YXIiLCJXZWJSVENEaXJlY3QiLCJSZWxpYWJsZSIsIlN0YXJkdXN0IiwiX1AyUCIsIl9DaXJjdWl0IiwiQ2lyY3VpdFJlY3Vyc2l2ZSIsIkNpcmN1aXQiLCJQMlAiLCJtYWtlTWF0Y2hlc0Z1bmN0aW9uIiwicGFydGlhbE1hdGNoIiwicG5hbWVzIiwiU3RyZWFtIiwiRGVsYXllZFN0cmVhbSIsImRhdGFTaXplIiwibWF4RGF0YVNpemUiLCJwYXVzZVN0cmVhbXMiLCJfcmVsZWFzZWQiLCJfY3VycmVudFN0cmVhbSIsIl9pbnNpZGVMb29wIiwiX3BlbmRpbmdOZXh0IiwiY29tYmluZWRTdHJlYW0iLCJpc1N0cmVhbUxpa2UiLCJuZXdTdHJlYW0iLCJwYXVzZVN0cmVhbSIsIl9jaGVja0RhdGFTaXplIiwiX2hhbmRsZUVycm9ycyIsImRlc3QiLCJfZ2V0TmV4dCIsIl9yZWFsR2V0TmV4dCIsIl9waXBlTmV4dCIsIl9lbWl0RXJyb3IiLCJfcmVzZXQiLCJfdXBkYXRlRGF0YVNpemUiLCJfbWF4RGF0YVNpemVFeGNlZWRlZCIsIl9idWZmZXJlZEV2ZW50cyIsImRlbGF5ZWRTdHJlYW0iLCJyZWFsRW1pdCIsIl9oYW5kbGVFbWl0Iiwic2V0RW5jb2RpbmciLCJfY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQiLCJleHRlbnNpb25zIiwidHlwZXMiLCJwcmVmZXJlbmNlIiwiZGIiLCJleHRuYW1lIiwiRVhUUkFDVF9UWVBFX1JFR0VYUCIsIlRFWFRfVFlQRV9SRUdFWFAiLCJjaGFyc2V0IiwiY2hhcnNldHMiLCJleHRlbnNpb24iLCJleHRzIiwic2VyaWFsIiwic2VyaWFsT3JkZXJlZCIsImFjY2lkZW50YWxTdHJpY3RNb2RlIiwiZ2xvYmFsVGhpcyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJQcm9taXNlSW1wbCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiZmlsZVBhdGgiLCJuZXdTdHJpbmciLCJsYXN0SW5kZXhPZkRpcmVjdG9yeSIsIm5ld0xhc3RJbmRleCIsInBhdGhHYXJiYWdlIiwiYXN5bmNJdGVyYWJsZSIsImNhY2hlIiwia2VlcExvb3BpbmciLCJyZXNwIiwicm93cyIsInZhbHVlVG9SZXR1cm4iXSwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxJQUNRLG1CQUFYRyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sYUFBYyxHQUFJSCxHQUNDLGlCQUFaQyxRQUNkQSxRQUFRLGNBQWdCRCxJQUV4QkQsRUFBSyxjQUFnQkMsSUFSdkIsQ0FTbUIsb0JBQVRLLEtBQXVCQSxLQUFPQyxNQUFNLFdBQzlDLE8sWUNURSxJQUFJQyxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVUixRQUduQyxJQUFJQyxFQUFTSyxFQUFpQkUsR0FBWSxDQUN6Q0MsRUFBR0QsRUFDSEUsR0FBRyxFQUNIVixRQUFTLElBVVYsT0FOQVcsRUFBUUgsR0FBVUksS0FBS1gsRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU08sR0FHL0ROLEVBQU9TLEdBQUksRUFHSlQsRUFBT0QsUUEwRGYsT0FyREFPLEVBQW9CTSxFQUFJRixFQUd4QkosRUFBb0JPLEVBQUlSLEVBR3hCQyxFQUFvQlEsRUFBSSxTQUFTZixFQUFTZ0IsRUFBTUMsR0FDM0NWLEVBQW9CVyxFQUFFbEIsRUFBU2dCLElBQ2xDRyxPQUFPQyxlQUFlcEIsRUFBU2dCLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVYsRUFBb0JnQixFQUFJLFNBQVN2QixH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USxJQUNSLEVBQVEsS0FDUixFQUFRLElBQ1IsRUFBUSxJQUNSLEVBQVEsSUFDUixFQUFRLEtBQ1IsRUFBUSxJQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLElBQ1IsRUFBUSxLQUNSLEVBQVEsSUFDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLElBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsSUFDUixFQUFRLEtBQ1IsRUFBUSxJQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxJQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLElBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFBUSxLQUNSLEVBQVEsS0FDUixFQUFRLEtBQ1IsRUFB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Q2YsYUFBZSxHQUNmLFlBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixZQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixhQUFlLE1BQ2YsYUFBZSxNQUNmLGFBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGFBQWMsTUFDZCxjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGFBQWMsTUFDZCxjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGNBQWUsTUFDZixjQUFlLE1BQ2YsY0FBZSxNQUNmLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGVBQWdCLE1BQ2hCLGNBQWUsTUFDZixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixlQUFnQixNQUNoQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLEtBQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsZ0JBQWlCLE1BQ2pCLGdCQUFpQixNQUNqQixnQkFBaUIsTUFDakIsaUJBQWtCLE1BQ2xCLGlCQUFrQixNQUNsQixpQkFBa0IsTUFDbEIsaUJBQWtCLFFBR3BCcnJDLEVBQVEwMUIsTUFBUXYwQixPQUFPa3FDLE9BQU8sQ0FDNUI4c0IsRUFBSyxXQUdMLEdBQU0sT0FDTixHQUFNLFdBQ04sR0FBTSxXQUNOLEdBQU0sZUFDTixHQUFNLFdBQ04sR0FBTSxXQUNOLEdBQU0sV0FDTixHQUFNLFdBQ04sR0FBTSxZQUNOLEdBQU0sWUFDTixHQUFNLGFBQ04sR0FBTSxhQUNOLEdBQU0sYUFDTixHQUFNLGFBRU4sR0FBTSxjQUNOLEdBQU0sYUFHTixNQUFRLFlBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxZQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxhQUNSLE1BQVEsYUFDUixNQUFRLGFBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FHUixNQUFRLGFBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsYUFDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsY0FDUixNQUFRLGNBQ1IsTUFBUSxjQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGNBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGVBQ1IsTUFBUSxlQUNSLE1BQVEsZUFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLEtBQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsZ0JBQ1IsTUFBUSxnQkFDUixNQUFRLGdCQUNSLE1BQVEsaUJBQ1IsTUFBUSxpQkFDUixNQUFRLGlCQUNSLE1BQVEsbUJBR1ZuNEQsRUFBUTIxQixlQUFpQngwQixPQUFPa3FDLE9BQU8sQ0FDckMsR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBQ04sR0FBTSxHQUNOLEdBQU0sR0FDTixHQUFNLEdBRU4sTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxFQUNSLE1BQVEsRUFDUixNQUFRLEVBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdBQ1IsTUFBUSxHQUNSLE1BQVEsR0FDUixNQUFRLEdB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bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJwaW5hdGEtc2RrXCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBpbmF0YS1zZGtcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wicGluYXRhLXNka1wiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjA3KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIHx8IChnbG9iYWxbbmFtZV0gPSB7fSkgOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV0gfHwgKGV4cG9ydHNbUFJPVE9UWVBFXSA9IHt9KTtcbiAgdmFyIGtleSwgb3duLCBvdXQsIGV4cDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IChvd24gPyB0YXJnZXQgOiBzb3VyY2UpW2tleV07XG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBleHAgPSBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgaWYgKHRhcmdldCkgcmVkZWZpbmUodGFyZ2V0LCBrZXksIG91dCwgdHlwZSAmICRleHBvcnQuVSk7XG4gICAgLy8gZXhwb3J0XG4gICAgaWYgKGV4cG9ydHNba2V5XSAhPSBvdXQpIGhpZGUoZXhwb3J0cywga2V5LCBleHApO1xuICAgIGlmIChJU19QUk9UTyAmJiBleHBQcm90b1trZXldICE9IG91dCkgZXhwUHJvdG9ba2V5XSA9IG91dDtcbiAgfVxufTtcbmdsb2JhbC5jb3JlID0gY29yZTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApO1xudmFyIFNUUklDVCA9IHJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5mb3JFYWNoLCB0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhU1RSSUNULCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xMCAvIDE1LjQuNC4xOCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICBcImRlZmF1bHRcIjogb2JqXG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLypnbG9iYWwgdG9TdHJpbmc6dHJ1ZSovXG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh2YWwpIHtcbiAgcmV0dXJuICh0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnKSAmJiAodmFsIGluc3RhbmNlb2YgRm9ybURhdGEpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmICh2YWwuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKHRvU3RyaW5nLmNhbGwodmFsKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyovLCAnJykucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2UocmVzdWx0W2tleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZChhLCBiLCB0aGlzQXJnKSB7XG4gIGZvckVhY2goYiwgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAodGhpc0FyZyAmJiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB3aXRoIEJPTVxuICogQHJldHVybiB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmZ1bmN0aW9uIHN0cmlwQk9NKGNvbnRlbnQpIHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT01cbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBTUkMgPSByZXF1aXJlKCcuL191aWQnKSgnc3JjJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi9fZnVuY3Rpb24tdG8tc3RyaW5nJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBUUEwgPSAoJycgKyAkdG9TdHJpbmcpLnNwbGl0KFRPX1NUUklORyk7XG5cbnJlcXVpcmUoJy4vX2NvcmUnKS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiAkdG9TdHJpbmcuY2FsbChpdCk7XG59O1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWwsIHNhZmUpIHtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgdmFsID09ICdmdW5jdGlvbic7XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCAnbmFtZScpIHx8IGhpZGUodmFsLCAnbmFtZScsIGtleSk7XG4gIGlmIChPW2tleV0gPT09IHZhbCkgcmV0dXJuO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgU1JDKSB8fCBoaWRlKHZhbCwgU1JDLCBPW2tleV0gPyAnJyArIE9ba2V5XSA6IFRQTC5qb2luKFN0cmluZyhrZXkpKSk7XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSBpZiAoIXNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9IGVsc2UgaWYgKE9ba2V5XSkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIHtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfVxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nICYmIHRoaXNbU1JDXSB8fCAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbn0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBxdW90ID0gL1wiL2c7XG4vLyBCLjIuMy4yLjEgQ3JlYXRlSFRNTChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSlcbnZhciBjcmVhdGVIVE1MID0gZnVuY3Rpb24gKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQoc3RyaW5nKSk7XG4gIHZhciBwMSA9ICc8JyArIHRhZztcbiAgaWYgKGF0dHJpYnV0ZSAhPT0gJycpIHAxICs9ICcgJyArIGF0dHJpYnV0ZSArICc9XCInICsgU3RyaW5nKHZhbHVlKS5yZXBsYWNlKHF1b3QsICcmcXVvdDsnKSArICdcIic7XG4gIHJldHVybiBwMSArICc+JyArIFMgKyAnPC8nICsgdGFnICsgJz4nO1xufTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIGV4ZWMpIHtcbiAgdmFyIE8gPSB7fTtcbiAgT1tOQU1FXSA9IGV4ZWMoY3JlYXRlSFRNTCk7XG4gICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ZXN0ID0gJydbTkFNRV0oJ1wiJyk7XG4gICAgcmV0dXJuIHRlc3QgIT09IHRlc3QudG9Mb3dlckNhc2UoKSB8fCB0ZXN0LnNwbGl0KCdcIicpLmxlbmd0aCA+IDM7XG4gIH0pLCAnU3RyaW5nJywgTyk7XG59O1xuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCJ2YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QRCA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0lPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBnT1BEKE8sIFApO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZURlc2MoIXBJRS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciB0ZXN0ID0ge307XG50ZXN0W3JlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpXSA9ICd6JztcbmlmICh0ZXN0ICsgJycgIT0gJ1tvYmplY3Qgel0nKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoT2JqZWN0LnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xuICB9LCB0cnVlKTtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBNRVRBID0gcmVxdWlyZSgnLi9fbWV0YScpLktFWTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgd2tzRGVmaW5lID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpO1xudmFyIGVudW1LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1rZXlzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBfY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdPUE5FeHQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKTtcbnZhciAkR09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgJEdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BEID0gJEdPUEQuZjtcbnZhciBkUCA9ICREUC5mO1xudmFyIGdPUE4gPSBnT1BORXh0LmY7XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJEpTT04gPSBnbG9iYWwuSlNPTjtcbnZhciBfc3RyaW5naWZ5ID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEhJRERFTiA9IHdrcygnX2hpZGRlbicpO1xudmFyIFRPX1BSSU1JVElWRSA9IHdrcygndG9QcmltaXRpdmUnKTtcbnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgVVNFX05BVElWRSA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbicgJiYgISEkR09QUy5mO1xudmFyIFFPYmplY3QgPSBnbG9iYWwuUU9iamVjdDtcbi8vIERvbid0IHVzZSBzZXR0ZXJzIGluIFF0IFNjcmlwdCwgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzE3M1xudmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gX2NyZWF0ZShkUCh7fSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBkUCh0aGlzLCAnYScsIHsgdmFsdWU6IDcgfSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbiAoaXQsIGtleSwgRCkge1xuICB2YXIgcHJvdG9EZXNjID0gZ09QRChPYmplY3RQcm90bywga2V5KTtcbiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZiAocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bykgZFAoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcbn0gOiBkUDtcblxudmFyIHdyYXAgPSBmdW5jdGlvbiAodGFnKSB7XG4gIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7XG4gIHN5bS5fayA9IHRhZztcbiAgcmV0dXJuIHN5bTtcbn07XG5cbnZhciBpc1N5bWJvbCA9IFVTRV9OQVRJVkUgJiYgdHlwZW9mICRTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCcgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0IGluc3RhbmNlb2YgJFN5bWJvbDtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKSB7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7XG4gIGFuT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgYW5PYmplY3QoRCk7XG4gIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSkge1xuICAgIGlmICghRC5lbnVtZXJhYmxlKSB7XG4gICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuICAgICAgRCA9IF9jcmVhdGUoRCwgeyBlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKSB9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKSB7XG4gIGFuT2JqZWN0KGl0KTtcbiAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuICB2YXIga2V5O1xuICB3aGlsZSAobCA+IGkpICRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApIHtcbiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xufTtcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpIHtcbiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTtcbiAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV0gPyBFIDogdHJ1ZTtcbn07XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KSB7XG4gIGl0ID0gdG9JT2JqZWN0KGl0KTtcbiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7XG4gIHJldHVybiBEO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgdmFyIG5hbWVzID0gZ09QTih0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gIHZhciBJU19PUCA9IGl0ID09PSBPYmplY3RQcm90bztcbiAgdmFyIG5hbWVzID0gZ09QTihJU19PUCA/IE9QU3ltYm9scyA6IHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIChJU19PUCA/IGhhcyhPYmplY3RQcm90bywga2V5KSA6IHRydWUpKSByZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmICghVVNFX05BVElWRSkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhJyk7XG4gICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gICAgdmFyICRzZXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90bykgJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7XG4gICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2s7XG4gIH0pO1xuXG4gICRHT1BELmYgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAkRFAuZiA9ICRkZWZpbmVQcm9wZXJ0eTtcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mID0gZ09QTkV4dC5mID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICAkR09QUy5mID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSkge1xuICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuICB9XG5cbiAgd2tzRXh0LmYgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH07XG59XG5cbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIHsgU3ltYm9sOiAkU3ltYm9sIH0pO1xuXG5mb3IgKHZhciBlczZTeW1ib2xzID0gKFxuICAvLyAxOS40LjIuMiwgMTkuNC4yLjMsIDE5LjQuMi40LCAxOS40LjIuNiwgMTkuNC4yLjgsIDE5LjQuMi45LCAxOS40LjIuMTAsIDE5LjQuMi4xMSwgMTkuNC4yLjEyLCAxOS40LjIuMTMsIDE5LjQuMi4xNFxuICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG4pLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pO1xuXG5mb3IgKHZhciB3ZWxsS25vd25TeW1ib2xzID0gJGtleXMod2tzLnN0b3JlKSwgayA9IDA7IHdlbGxLbm93blN5bWJvbHMubGVuZ3RoID4gazspIHdrc0RlZmluZSh3ZWxsS25vd25TeW1ib2xzW2srK10pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnU3ltYm9sJywge1xuICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcbiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkge1xuICAgIGlmICghaXNTeW1ib2woc3ltKSkgdGhyb3cgVHlwZUVycm9yKHN5bSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICAgIGZvciAodmFyIGtleSBpbiBTeW1ib2xSZWdpc3RyeSkgaWYgKFN5bWJvbFJlZ2lzdHJ5W2tleV0gPT09IHN5bSkgcmV0dXJuIGtleTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSBmYWxzZTsgfVxufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdPYmplY3QnLCB7XG4gIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiAgY3JlYXRlOiAkY3JlYXRlLFxuICAvLyAxOS4xLjIuNCBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcbn0pO1xuXG4vLyBDaHJvbWUgMzggYW5kIDM5IGBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzYCBmYWlscyBvbiBwcmltaXRpdmVzXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNDQzXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9ICRmYWlscyhmdW5jdGlvbiAoKSB7ICRHT1BTLmYoMSk7IH0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIEZBSUxTX09OX1BSSU1JVElWRVMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5U3ltYm9sczogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7XG4gICAgcmV0dXJuICRHT1BTLmYodG9PYmplY3QoaXQpKTtcbiAgfVxufSk7XG5cbi8vIDI0LjMuMiBKU09OLnN0cmluZ2lmeSh2YWx1ZSBbLCByZXBsYWNlciBbLCBzcGFjZV1dKVxuJEpTT04gJiYgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoIVVTRV9OQVRJVkUgfHwgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoeyBhOiBTIH0pICE9ICd7fScgfHwgX3N0cmluZ2lmeShPYmplY3QoUykpICE9ICd7fSc7XG59KSksICdKU09OJywge1xuICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkge1xuICAgIHZhciBhcmdzID0gW2l0XTtcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgICRyZXBsYWNlciA9IHJlcGxhY2VyID0gYXJnc1sxXTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgaWYgKCFpc0FycmF5KHJlcGxhY2VyKSkgcmVwbGFjZXIgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiAkcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykgdmFsdWUgPSAkcmVwbGFjZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuIiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNi4xMScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMyAvIDE1LjIuMy43IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0aWVzOiByZXF1aXJlKCcuL19vYmplY3QtZHBzJykgfSk7XG4iLCIvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0b0lPYmplY3QoaXQpLCBrZXkpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGxcbiAgICBhcmcgPyBtZXRob2QuY2FsbChudWxsLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIDEpIDogbWV0aG9kLmNhbGwobnVsbCk7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgyKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmZpbHRlciwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjcgLyAxNS40LjQuMjAgQXJyYXkucHJvdG90eXBlLmZpbHRlcihjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52OCB8fCAnJztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpXG4gICAgICAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2VcbiAgICAgIC8vIHY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgICAgLy8gd2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgICAgICYmIHY4LmluZGV4T2YoJzYuNicpICE9PSAwXG4gICAgICAmJiB1c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lLzY2JykgPT09IC0xO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgICB2YXIgZ2V0RGVzYyA9IGdPUEQuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5LCBkZXNjO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGkpIHtcbiAgICAgIGRlc2MgPSBnZXREZXNjKE8sIGtleSA9IGtleXNbaSsrXSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGtleSwgZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG4iLCIvLyAwIC0+IEFycmF5I2ZvckVhY2hcbi8vIDEgLT4gQXJyYXkjbWFwXG4vLyAyIC0+IEFycmF5I2ZpbHRlclxuLy8gMyAtPiBBcnJheSNzb21lXG4vLyA0IC0+IEFycmF5I2V2ZXJ5XG4vLyA1IC0+IEFycmF5I2ZpbmRcbi8vIDYgLT4gQXJyYXkjZmluZEluZGV4XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYXNjID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRZUEUsICRjcmVhdGUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICB2YXIgY3JlYXRlID0gJGNyZWF0ZSB8fCBhc2M7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IElPYmplY3QoTyk7XG4gICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciByZXN1bHQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWwsIHJlcztcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbCA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzID0gZih2YWwsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHJlc3VsdFtpbmRleF0gPSByZXM7ICAgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlcykgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbDsgICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHJlc3VsdC5wdXNoKHZhbCk7ICAgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmIChJU19FVkVSWSkgcmV0dXJuIGZhbHNlOyAvLyBldmVyeVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogcmVzdWx0O1xuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBiYXNlVXJsID0gJ2h0dHBzOi8vYXBpLnBpbmF0YS5jbG91ZCc7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9OT19DUkVERU5USUFMU19QUk9WSURFRCA9XG4gICAgJ05vIGNyZWRlbnRpYWxzIHByb3ZpZGVkISBQbGVhc2UgcHJvdmlkZSB5b3VyIHBpbmF0YSBhcGkga2V5IGFuZCBwaW5hdGEgc2VjcmV0IGFwaSBrZXkgb3IgeW91ciBwaW5hdGEgSldUIGtleSBhcyBhbiBhcmd1bWVudCB3aGVuIHlvdSBzdGFydCB0aGlzIHNjcmlwdCc7XG4iLCIndXNlIHN0cmljdCc7XG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSkge1xuICB2YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbiAgdmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xuICB2YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xuICB2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuICB2YXIgJHR5cGVkID0gcmVxdWlyZSgnLi9fdHlwZWQnKTtcbiAgdmFyICRidWZmZXIgPSByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKTtcbiAgdmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xuICB2YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG4gIHZhciBwcm9wZXJ0eURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG4gIHZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xuICB2YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbiAgdmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbiAgdmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG4gIHZhciB0b0luZGV4ID0gcmVxdWlyZSgnLi9fdG8taW5kZXgnKTtcbiAgdmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG4gIHZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xuICB2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG4gIHZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xuICB2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbiAgdmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG4gIHZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbiAgdmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbiAgdmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xuICB2YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbiAgdmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG4gIHZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbiAgdmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xuICB2YXIgY3JlYXRlQXJyYXlNZXRob2QgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJyk7XG4gIHZhciBjcmVhdGVBcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKTtcbiAgdmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbiAgdmFyIEFycmF5SXRlcmF0b3JzID0gcmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbiAgdmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xuICB2YXIgJGl0ZXJEZXRlY3QgPSByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpO1xuICB2YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJyk7XG4gIHZhciBhcnJheUZpbGwgPSByZXF1aXJlKCcuL19hcnJheS1maWxsJyk7XG4gIHZhciBhcnJheUNvcHlXaXRoaW4gPSByZXF1aXJlKCcuL19hcnJheS1jb3B5LXdpdGhpbicpO1xuICB2YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG4gIHZhciAkR09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG4gIHZhciBkUCA9ICREUC5mO1xuICB2YXIgZ09QRCA9ICRHT1BELmY7XG4gIHZhciBSYW5nZUVycm9yID0gZ2xvYmFsLlJhbmdlRXJyb3I7XG4gIHZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuICB2YXIgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xuICB2YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcbiAgdmFyIFNIQVJFRF9CVUZGRVIgPSAnU2hhcmVkJyArIEFSUkFZX0JVRkZFUjtcbiAgdmFyIEJZVEVTX1BFUl9FTEVNRU5UID0gJ0JZVEVTX1BFUl9FTEVNRU5UJztcbiAgdmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuICB2YXIgQXJyYXlQcm90byA9IEFycmF5W1BST1RPVFlQRV07XG4gIHZhciAkQXJyYXlCdWZmZXIgPSAkYnVmZmVyLkFycmF5QnVmZmVyO1xuICB2YXIgJERhdGFWaWV3ID0gJGJ1ZmZlci5EYXRhVmlldztcbiAgdmFyIGFycmF5Rm9yRWFjaCA9IGNyZWF0ZUFycmF5TWV0aG9kKDApO1xuICB2YXIgYXJyYXlGaWx0ZXIgPSBjcmVhdGVBcnJheU1ldGhvZCgyKTtcbiAgdmFyIGFycmF5U29tZSA9IGNyZWF0ZUFycmF5TWV0aG9kKDMpO1xuICB2YXIgYXJyYXlFdmVyeSA9IGNyZWF0ZUFycmF5TWV0aG9kKDQpO1xuICB2YXIgYXJyYXlGaW5kID0gY3JlYXRlQXJyYXlNZXRob2QoNSk7XG4gIHZhciBhcnJheUZpbmRJbmRleCA9IGNyZWF0ZUFycmF5TWV0aG9kKDYpO1xuICB2YXIgYXJyYXlJbmNsdWRlcyA9IGNyZWF0ZUFycmF5SW5jbHVkZXModHJ1ZSk7XG4gIHZhciBhcnJheUluZGV4T2YgPSBjcmVhdGVBcnJheUluY2x1ZGVzKGZhbHNlKTtcbiAgdmFyIGFycmF5VmFsdWVzID0gQXJyYXlJdGVyYXRvcnMudmFsdWVzO1xuICB2YXIgYXJyYXlLZXlzID0gQXJyYXlJdGVyYXRvcnMua2V5cztcbiAgdmFyIGFycmF5RW50cmllcyA9IEFycmF5SXRlcmF0b3JzLmVudHJpZXM7XG4gIHZhciBhcnJheUxhc3RJbmRleE9mID0gQXJyYXlQcm90by5sYXN0SW5kZXhPZjtcbiAgdmFyIGFycmF5UmVkdWNlID0gQXJyYXlQcm90by5yZWR1Y2U7XG4gIHZhciBhcnJheVJlZHVjZVJpZ2h0ID0gQXJyYXlQcm90by5yZWR1Y2VSaWdodDtcbiAgdmFyIGFycmF5Sm9pbiA9IEFycmF5UHJvdG8uam9pbjtcbiAgdmFyIGFycmF5U29ydCA9IEFycmF5UHJvdG8uc29ydDtcbiAgdmFyIGFycmF5U2xpY2UgPSBBcnJheVByb3RvLnNsaWNlO1xuICB2YXIgYXJyYXlUb1N0cmluZyA9IEFycmF5UHJvdG8udG9TdHJpbmc7XG4gIHZhciBhcnJheVRvTG9jYWxlU3RyaW5nID0gQXJyYXlQcm90by50b0xvY2FsZVN0cmluZztcbiAgdmFyIElURVJBVE9SID0gd2tzKCdpdGVyYXRvcicpO1xuICB2YXIgVEFHID0gd2tzKCd0b1N0cmluZ1RhZycpO1xuICB2YXIgVFlQRURfQ09OU1RSVUNUT1IgPSB1aWQoJ3R5cGVkX2NvbnN0cnVjdG9yJyk7XG4gIHZhciBERUZfQ09OU1RSVUNUT1IgPSB1aWQoJ2RlZl9jb25zdHJ1Y3RvcicpO1xuICB2YXIgQUxMX0NPTlNUUlVDVE9SUyA9ICR0eXBlZC5DT05TVFI7XG4gIHZhciBUWVBFRF9BUlJBWSA9ICR0eXBlZC5UWVBFRDtcbiAgdmFyIFZJRVcgPSAkdHlwZWQuVklFVztcbiAgdmFyIFdST05HX0xFTkdUSCA9ICdXcm9uZyBsZW5ndGghJztcblxuICB2YXIgJG1hcCA9IGNyZWF0ZUFycmF5TWV0aG9kKDEsIGZ1bmN0aW9uIChPLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gYWxsb2NhdGUoc3BlY2llc0NvbnN0cnVjdG9yKE8sIE9bREVGX0NPTlNUUlVDVE9SXSksIGxlbmd0aCk7XG4gIH0pO1xuXG4gIHZhciBMSVRUTEVfRU5ESUFOID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHJldHVybiBuZXcgVWludDhBcnJheShuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdID09PSAxO1xuICB9KTtcblxuICB2YXIgRk9SQ0VEX1NFVCA9ICEhVWludDhBcnJheSAmJiAhIVVpbnQ4QXJyYXlbUFJPVE9UWVBFXS5zZXQgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBVaW50OEFycmF5KDEpLnNldCh7fSk7XG4gIH0pO1xuXG4gIHZhciB0b09mZnNldCA9IGZ1bmN0aW9uIChpdCwgQllURVMpIHtcbiAgICB2YXIgb2Zmc2V0ID0gdG9JbnRlZ2VyKGl0KTtcbiAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0IScpO1xuICAgIHJldHVybiBvZmZzZXQ7XG4gIH07XG5cbiAgdmFyIHZhbGlkYXRlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgaWYgKGlzT2JqZWN0KGl0KSAmJiBUWVBFRF9BUlJBWSBpbiBpdCkgcmV0dXJuIGl0O1xuICAgIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgdHlwZWQgYXJyYXkhJyk7XG4gIH07XG5cbiAgdmFyIGFsbG9jYXRlID0gZnVuY3Rpb24gKEMsIGxlbmd0aCkge1xuICAgIGlmICghKGlzT2JqZWN0KEMpICYmIFRZUEVEX0NPTlNUUlVDVE9SIGluIEMpKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0l0IGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIScpO1xuICAgIH0gcmV0dXJuIG5ldyBDKGxlbmd0aCk7XG4gIH07XG5cbiAgdmFyIHNwZWNpZXNGcm9tTGlzdCA9IGZ1bmN0aW9uIChPLCBsaXN0KSB7XG4gICAgcmV0dXJuIGZyb21MaXN0KHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pLCBsaXN0KTtcbiAgfTtcblxuICB2YXIgZnJvbUxpc3QgPSBmdW5jdGlvbiAoQywgbGlzdCkge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSBhbGxvY2F0ZShDLCBsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGxpc3RbaW5kZXgrK107XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB2YXIgYWRkR2V0dGVyID0gZnVuY3Rpb24gKGl0LCBrZXksIGludGVybmFsKSB7XG4gICAgZFAoaXQsIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RbaW50ZXJuYWxdOyB9IH0pO1xuICB9O1xuXG4gIHZhciAkZnJvbSA9IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwZm4sIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHNvdXJjZSk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKE8pO1xuICAgIHZhciBpLCBsZW5ndGgsIHZhbHVlcywgcmVzdWx0LCBzdGVwLCBpdGVyYXRvcjtcbiAgICBpZiAoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhaXNBcnJheUl0ZXIoaXRlckZuKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCB2YWx1ZXMgPSBbXSwgaSA9IDA7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaSsrKSB7XG4gICAgICAgIHZhbHVlcy5wdXNoKHN0ZXAudmFsdWUpO1xuICAgICAgfSBPID0gdmFsdWVzO1xuICAgIH1cbiAgICBpZiAobWFwcGluZyAmJiBhTGVuID4gMikgbWFwZm4gPSBjdHgobWFwZm4sIGFyZ3VtZW50c1syXSwgMik7XG4gICAgZm9yIChpID0gMCwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpLCByZXN1bHQgPSBhbGxvY2F0ZSh0aGlzLCBsZW5ndGgpOyBsZW5ndGggPiBpOyBpKyspIHtcbiAgICAgIHJlc3VsdFtpXSA9IG1hcHBpbmcgPyBtYXBmbihPW2ldLCBpKSA6IE9baV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgdmFyICRvZiA9IGZ1bmN0aW9uIG9mKC8qIC4uLml0ZW1zICovKSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gYWxsb2NhdGUodGhpcywgbGVuZ3RoKTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHJlc3VsdFtpbmRleF0gPSBhcmd1bWVudHNbaW5kZXgrK107XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBpT1MgU2FmYXJpIDYueCBmYWlscyBoZXJlXG4gIHZhciBUT19MT0NBTEVfQlVHID0gISFVaW50OEFycmF5ICYmIGZhaWxzKGZ1bmN0aW9uICgpIHsgYXJyYXlUb0xvY2FsZVN0cmluZy5jYWxsKG5ldyBVaW50OEFycmF5KDEpKTsgfSk7XG5cbiAgdmFyICR0b0xvY2FsZVN0cmluZyA9IGZ1bmN0aW9uIHRvTG9jYWxlU3RyaW5nKCkge1xuICAgIHJldHVybiBhcnJheVRvTG9jYWxlU3RyaW5nLmFwcGx5KFRPX0xPQ0FMRV9CVUcgPyBhcnJheVNsaWNlLmNhbGwodmFsaWRhdGUodGhpcykpIDogdmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gIH07XG5cbiAgdmFyIHByb3RvID0ge1xuICAgIGNvcHlXaXRoaW46IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCAvKiAsIGVuZCAqLykge1xuICAgICAgcmV0dXJuIGFycmF5Q29weVdpdGhpbi5jYWxsKHZhbGlkYXRlKHRoaXMpLCB0YXJnZXQsIHN0YXJ0LCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBldmVyeTogZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUV2ZXJ5KHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmaWxsOiBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQsIGVuZCAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlGaWxsLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBzcGVjaWVzRnJvbUxpc3QodGhpcywgYXJyYXlGaWx0ZXIodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sXG4gICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKSk7XG4gICAgfSxcbiAgICBmaW5kOiBmdW5jdGlvbiBmaW5kKHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUZpbmQodmFsaWRhdGUodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZmluZEluZGV4OiBmdW5jdGlvbiBmaW5kSW5kZXgocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5RmluZEluZGV4KHZhbGlkYXRlKHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIGFycmF5Rm9yRWFjaCh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlJbmRleE9mKHZhbGlkYXRlKHRoaXMpLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXModmFsaWRhdGUodGhpcyksIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUpvaW4uYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBsYXN0SW5kZXhPZjogZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlMYXN0SW5kZXhPZi5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIG1hcDogZnVuY3Rpb24gbWFwKG1hcGZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuICRtYXAodmFsaWRhdGUodGhpcyksIG1hcGZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheVJlZHVjZS5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheVJlZHVjZVJpZ2h0LmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgcmV2ZXJzZTogZnVuY3Rpb24gcmV2ZXJzZSgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZSh0aGF0KS5sZW5ndGg7XG4gICAgICB2YXIgbWlkZGxlID0gTWF0aC5mbG9vcihsZW5ndGggLyAyKTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgdmFsdWU7XG4gICAgICB3aGlsZSAoaW5kZXggPCBtaWRkbGUpIHtcbiAgICAgICAgdmFsdWUgPSB0aGF0W2luZGV4XTtcbiAgICAgICAgdGhhdFtpbmRleCsrXSA9IHRoYXRbLS1sZW5ndGhdO1xuICAgICAgICB0aGF0W2xlbmd0aF0gPSB2YWx1ZTtcbiAgICAgIH0gcmV0dXJuIHRoYXQ7XG4gICAgfSxcbiAgICBzb21lOiBmdW5jdGlvbiBzb21lKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlTb21lKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBzb3J0OiBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICAgICAgcmV0dXJuIGFycmF5U29ydC5jYWxsKHZhbGlkYXRlKHRoaXMpLCBjb21wYXJlZm4pO1xuICAgIH0sXG4gICAgc3ViYXJyYXk6IGZ1bmN0aW9uIHN1YmFycmF5KGJlZ2luLCBlbmQpIHtcbiAgICAgIHZhciBPID0gdmFsaWRhdGUodGhpcyk7XG4gICAgICB2YXIgbGVuZ3RoID0gTy5sZW5ndGg7XG4gICAgICB2YXIgJGJlZ2luID0gdG9BYnNvbHV0ZUluZGV4KGJlZ2luLCBsZW5ndGgpO1xuICAgICAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKE8sIE9bREVGX0NPTlNUUlVDVE9SXSkpKFxuICAgICAgICBPLmJ1ZmZlcixcbiAgICAgICAgTy5ieXRlT2Zmc2V0ICsgJGJlZ2luICogTy5CWVRFU19QRVJfRUxFTUVOVCxcbiAgICAgICAgdG9MZW5ndGgoKGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuZ3RoKSkgLSAkYmVnaW4pXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICB2YXIgJHNsaWNlID0gZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBzcGVjaWVzRnJvbUxpc3QodGhpcywgYXJyYXlTbGljZS5jYWxsKHZhbGlkYXRlKHRoaXMpLCBzdGFydCwgZW5kKSk7XG4gIH07XG5cbiAgdmFyICRzZXQgPSBmdW5jdGlvbiBzZXQoYXJyYXlMaWtlIC8qICwgb2Zmc2V0ICovKSB7XG4gICAgdmFsaWRhdGUodGhpcyk7XG4gICAgdmFyIG9mZnNldCA9IHRvT2Zmc2V0KGFyZ3VtZW50c1sxXSwgMSk7XG4gICAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIHZhciBzcmMgPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBsZW4gPSB0b0xlbmd0aChzcmMubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGlmIChsZW4gKyBvZmZzZXQgPiBsZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICB3aGlsZSAoaW5kZXggPCBsZW4pIHRoaXNbb2Zmc2V0ICsgaW5kZXhdID0gc3JjW2luZGV4KytdO1xuICB9O1xuXG4gIHZhciAkaXRlcmF0b3JzID0ge1xuICAgIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlFbnRyaWVzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH0sXG4gICAga2V5czogZnVuY3Rpb24ga2V5cygpIHtcbiAgICAgIHJldHVybiBhcnJheUtleXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfSxcbiAgICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcygpIHtcbiAgICAgIHJldHVybiBhcnJheVZhbHVlcy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGlzVEFJbmRleCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHJldHVybiBpc09iamVjdCh0YXJnZXQpXG4gICAgICAmJiB0YXJnZXRbVFlQRURfQVJSQVldXG4gICAgICAmJiB0eXBlb2Yga2V5ICE9ICdzeW1ib2wnXG4gICAgICAmJiBrZXkgaW4gdGFyZ2V0XG4gICAgICAmJiBTdHJpbmcoK2tleSkgPT0gU3RyaW5nKGtleSk7XG4gIH07XG4gIHZhciAkZ2V0RGVzYyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkge1xuICAgIHJldHVybiBpc1RBSW5kZXgodGFyZ2V0LCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKVxuICAgICAgPyBwcm9wZXJ0eURlc2MoMiwgdGFyZ2V0W2tleV0pXG4gICAgICA6IGdPUEQodGFyZ2V0LCBrZXkpO1xuICB9O1xuICB2YXIgJHNldERlc2MgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzYykge1xuICAgIGlmIChpc1RBSW5kZXgodGFyZ2V0LCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKVxuICAgICAgJiYgaXNPYmplY3QoZGVzYylcbiAgICAgICYmIGhhcyhkZXNjLCAndmFsdWUnKVxuICAgICAgJiYgIWhhcyhkZXNjLCAnZ2V0JylcbiAgICAgICYmICFoYXMoZGVzYywgJ3NldCcpXG4gICAgICAvLyBUT0RPOiBhZGQgdmFsaWRhdGlvbiBkZXNjcmlwdG9yIHcvbyBjYWxsaW5nIGFjY2Vzc29yc1xuICAgICAgJiYgIWRlc2MuY29uZmlndXJhYmxlXG4gICAgICAmJiAoIWhhcyhkZXNjLCAnd3JpdGFibGUnKSB8fCBkZXNjLndyaXRhYmxlKVxuICAgICAgJiYgKCFoYXMoZGVzYywgJ2VudW1lcmFibGUnKSB8fCBkZXNjLmVudW1lcmFibGUpXG4gICAgKSB7XG4gICAgICB0YXJnZXRba2V5XSA9IGRlc2MudmFsdWU7XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH0gcmV0dXJuIGRQKHRhcmdldCwga2V5LCBkZXNjKTtcbiAgfTtcblxuICBpZiAoIUFMTF9DT05TVFJVQ1RPUlMpIHtcbiAgICAkR09QRC5mID0gJGdldERlc2M7XG4gICAgJERQLmYgPSAkc2V0RGVzYztcbiAgfVxuXG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIUFMTF9DT05TVFJVQ1RPUlMsICdPYmplY3QnLCB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0RGVzYyxcbiAgICBkZWZpbmVQcm9wZXJ0eTogJHNldERlc2NcbiAgfSk7XG5cbiAgaWYgKGZhaWxzKGZ1bmN0aW9uICgpIHsgYXJyYXlUb1N0cmluZy5jYWxsKHt9KTsgfSkpIHtcbiAgICBhcnJheVRvU3RyaW5nID0gYXJyYXlUb0xvY2FsZVN0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRoaXMpO1xuICAgIH07XG4gIH1cblxuICB2YXIgJFR5cGVkQXJyYXlQcm90b3R5cGUkID0gcmVkZWZpbmVBbGwoe30sIHByb3RvKTtcbiAgcmVkZWZpbmVBbGwoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAkaXRlcmF0b3JzKTtcbiAgaGlkZSgkVHlwZWRBcnJheVByb3RvdHlwZSQsIElURVJBVE9SLCAkaXRlcmF0b3JzLnZhbHVlcyk7XG4gIHJlZGVmaW5lQWxsKCRUeXBlZEFycmF5UHJvdG90eXBlJCwge1xuICAgIHNsaWNlOiAkc2xpY2UsXG4gICAgc2V0OiAkc2V0LFxuICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7IC8qIG5vb3AgKi8gfSxcbiAgICB0b1N0cmluZzogYXJyYXlUb1N0cmluZyxcbiAgICB0b0xvY2FsZVN0cmluZzogJHRvTG9jYWxlU3RyaW5nXG4gIH0pO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnYnVmZmVyJywgJ2InKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J5dGVPZmZzZXQnLCAnbycpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnYnl0ZUxlbmd0aCcsICdsJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdsZW5ndGgnLCAnZScpO1xuICBkUCgkVHlwZWRBcnJheVByb3RvdHlwZSQsIFRBRywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpc1tUWVBFRF9BUlJBWV07IH1cbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgQllURVMsIHdyYXBwZXIsIENMQU1QRUQpIHtcbiAgICBDTEFNUEVEID0gISFDTEFNUEVEO1xuICAgIHZhciBOQU1FID0gS0VZICsgKENMQU1QRUQgPyAnQ2xhbXBlZCcgOiAnJykgKyAnQXJyYXknO1xuICAgIHZhciBHRVRURVIgPSAnZ2V0JyArIEtFWTtcbiAgICB2YXIgU0VUVEVSID0gJ3NldCcgKyBLRVk7XG4gICAgdmFyIFR5cGVkQXJyYXkgPSBnbG9iYWxbTkFNRV07XG4gICAgdmFyIEJhc2UgPSBUeXBlZEFycmF5IHx8IHt9O1xuICAgIHZhciBUQUMgPSBUeXBlZEFycmF5ICYmIGdldFByb3RvdHlwZU9mKFR5cGVkQXJyYXkpO1xuICAgIHZhciBGT1JDRUQgPSAhVHlwZWRBcnJheSB8fCAhJHR5cGVkLkFCVjtcbiAgICB2YXIgTyA9IHt9O1xuICAgIHZhciBUeXBlZEFycmF5UHJvdG90eXBlID0gVHlwZWRBcnJheSAmJiBUeXBlZEFycmF5W1BST1RPVFlQRV07XG4gICAgdmFyIGdldHRlciA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCkge1xuICAgICAgdmFyIGRhdGEgPSB0aGF0Ll9kO1xuICAgICAgcmV0dXJuIGRhdGEudltHRVRURVJdKGluZGV4ICogQllURVMgKyBkYXRhLm8sIExJVFRMRV9FTkRJQU4pO1xuICAgIH07XG4gICAgdmFyIHNldHRlciA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhhdC5fZDtcbiAgICAgIGlmIChDTEFNUEVEKSB2YWx1ZSA9ICh2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUpKSA8IDAgPyAwIDogdmFsdWUgPiAweGZmID8gMHhmZiA6IHZhbHVlICYgMHhmZjtcbiAgICAgIGRhdGEudltTRVRURVJdKGluZGV4ICogQllURVMgKyBkYXRhLm8sIHZhbHVlLCBMSVRUTEVfRU5ESUFOKTtcbiAgICB9O1xuICAgIHZhciBhZGRFbGVtZW50ID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICBkUCh0aGF0LCBpbmRleCwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0dGVyKHRoaXMsIGluZGV4KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0dGVyKHRoaXMsIGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkge1xuICAgICAgVHlwZWRBcnJheSA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGRhdGEsICRvZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0aGF0LCBUeXBlZEFycmF5LCBOQU1FLCAnX2QnKTtcbiAgICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgICAgdmFyIG9mZnNldCA9IDA7XG4gICAgICAgIHZhciBidWZmZXIsIGJ5dGVMZW5ndGgsIGxlbmd0aCwga2xhc3M7XG4gICAgICAgIGlmICghaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgICAgICBsZW5ndGggPSB0b0luZGV4KGRhdGEpO1xuICAgICAgICAgIGJ5dGVMZW5ndGggPSBsZW5ndGggKiBCWVRFUztcbiAgICAgICAgICBidWZmZXIgPSBuZXcgJEFycmF5QnVmZmVyKGJ5dGVMZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiAkQXJyYXlCdWZmZXIgfHwgKGtsYXNzID0gY2xhc3NvZihkYXRhKSkgPT0gQVJSQVlfQlVGRkVSIHx8IGtsYXNzID09IFNIQVJFRF9CVUZGRVIpIHtcbiAgICAgICAgICBidWZmZXIgPSBkYXRhO1xuICAgICAgICAgIG9mZnNldCA9IHRvT2Zmc2V0KCRvZmZzZXQsIEJZVEVTKTtcbiAgICAgICAgICB2YXIgJGxlbiA9IGRhdGEuYnl0ZUxlbmd0aDtcbiAgICAgICAgICBpZiAoJGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoJGxlbiAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgICBieXRlTGVuZ3RoID0gJGxlbiAtIG9mZnNldDtcbiAgICAgICAgICAgIGlmIChieXRlTGVuZ3RoIDwgMCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBieXRlTGVuZ3RoID0gdG9MZW5ndGgoJGxlbmd0aCkgKiBCWVRFUztcbiAgICAgICAgICAgIGlmIChieXRlTGVuZ3RoICsgb2Zmc2V0ID4gJGxlbikgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZW5ndGggPSBieXRlTGVuZ3RoIC8gQllURVM7XG4gICAgICAgIH0gZWxzZSBpZiAoVFlQRURfQVJSQVkgaW4gZGF0YSkge1xuICAgICAgICAgIHJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gJGZyb20uY2FsbChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBoaWRlKHRoYXQsICdfZCcsIHtcbiAgICAgICAgICBiOiBidWZmZXIsXG4gICAgICAgICAgbzogb2Zmc2V0LFxuICAgICAgICAgIGw6IGJ5dGVMZW5ndGgsXG4gICAgICAgICAgZTogbGVuZ3RoLFxuICAgICAgICAgIHY6IG5ldyAkRGF0YVZpZXcoYnVmZmVyKVxuICAgICAgICB9KTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSBhZGRFbGVtZW50KHRoYXQsIGluZGV4KyspO1xuICAgICAgfSk7XG4gICAgICBUeXBlZEFycmF5UHJvdG90eXBlID0gVHlwZWRBcnJheVtQUk9UT1RZUEVdID0gY3JlYXRlKCRUeXBlZEFycmF5UHJvdG90eXBlJCk7XG4gICAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsICdjb25zdHJ1Y3RvcicsIFR5cGVkQXJyYXkpO1xuICAgIH0gZWxzZSBpZiAoIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIFR5cGVkQXJyYXkoMSk7XG4gICAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5ldyBUeXBlZEFycmF5KC0xKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICB9KSB8fCAhJGl0ZXJEZXRlY3QoZnVuY3Rpb24gKGl0ZXIpIHtcbiAgICAgIG5ldyBUeXBlZEFycmF5KCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVHlwZWRBcnJheShudWxsKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIG5ldyBUeXBlZEFycmF5KDEuNSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVHlwZWRBcnJheShpdGVyKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICB9LCB0cnVlKSkge1xuICAgICAgVHlwZWRBcnJheSA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGRhdGEsICRvZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0aGF0LCBUeXBlZEFycmF5LCBOQU1FKTtcbiAgICAgICAgdmFyIGtsYXNzO1xuICAgICAgICAvLyBgd3NgIG1vZHVsZSBidWcsIHRlbXBvcmFyaWx5IHJlbW92ZSB2YWxpZGF0aW9uIGxlbmd0aCBmb3IgVWludDhBcnJheVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cy9wdWxsLzY0NVxuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSByZXR1cm4gbmV3IEJhc2UodG9JbmRleChkYXRhKSk7XG4gICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgJEFycmF5QnVmZmVyIHx8IChrbGFzcyA9IGNsYXNzb2YoZGF0YSkpID09IEFSUkFZX0JVRkZFUiB8fCBrbGFzcyA9PSBTSEFSRURfQlVGRkVSKSB7XG4gICAgICAgICAgcmV0dXJuICRsZW5ndGggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgQmFzZShkYXRhLCB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUyksICRsZW5ndGgpXG4gICAgICAgICAgICA6ICRvZmZzZXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IG5ldyBCYXNlKGRhdGEsIHRvT2Zmc2V0KCRvZmZzZXQsIEJZVEVTKSlcbiAgICAgICAgICAgICAgOiBuZXcgQmFzZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVFlQRURfQVJSQVkgaW4gZGF0YSkgcmV0dXJuIGZyb21MaXN0KFR5cGVkQXJyYXksIGRhdGEpO1xuICAgICAgICByZXR1cm4gJGZyb20uY2FsbChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgIH0pO1xuICAgICAgYXJyYXlGb3JFYWNoKFRBQyAhPT0gRnVuY3Rpb24ucHJvdG90eXBlID8gZ09QTihCYXNlKS5jb25jYXQoZ09QTihUQUMpKSA6IGdPUE4oQmFzZSksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIFR5cGVkQXJyYXkpKSBoaWRlKFR5cGVkQXJyYXksIGtleSwgQmFzZVtrZXldKTtcbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheVtQUk9UT1RZUEVdID0gVHlwZWRBcnJheVByb3RvdHlwZTtcbiAgICAgIGlmICghTElCUkFSWSkgVHlwZWRBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFR5cGVkQXJyYXk7XG4gICAgfVxuICAgIHZhciAkbmF0aXZlSXRlcmF0b3IgPSBUeXBlZEFycmF5UHJvdG90eXBlW0lURVJBVE9SXTtcbiAgICB2YXIgQ09SUkVDVF9JVEVSX05BTUUgPSAhISRuYXRpdmVJdGVyYXRvclxuICAgICAgJiYgKCRuYXRpdmVJdGVyYXRvci5uYW1lID09ICd2YWx1ZXMnIHx8ICRuYXRpdmVJdGVyYXRvci5uYW1lID09IHVuZGVmaW5lZCk7XG4gICAgdmFyICRpdGVyYXRvciA9ICRpdGVyYXRvcnMudmFsdWVzO1xuICAgIGhpZGUoVHlwZWRBcnJheSwgVFlQRURfQ09OU1RSVUNUT1IsIHRydWUpO1xuICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgVFlQRURfQVJSQVksIE5BTUUpO1xuICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgVklFVywgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBERUZfQ09OU1RSVUNUT1IsIFR5cGVkQXJyYXkpO1xuXG4gICAgaWYgKENMQU1QRUQgPyBuZXcgVHlwZWRBcnJheSgxKVtUQUddICE9IE5BTUUgOiAhKFRBRyBpbiBUeXBlZEFycmF5UHJvdG90eXBlKSkge1xuICAgICAgZFAoVHlwZWRBcnJheVByb3RvdHlwZSwgVEFHLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTkFNRTsgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgT1tOQU1FXSA9IFR5cGVkQXJyYXk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChUeXBlZEFycmF5ICE9IEJhc2UpLCBPKTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5TLCBOQU1FLCB7XG4gICAgICBCWVRFU19QRVJfRUxFTUVOVDogQllURVNcbiAgICB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBCYXNlLm9mLmNhbGwoVHlwZWRBcnJheSwgMSk7IH0pLCBOQU1FLCB7XG4gICAgICBmcm9tOiAkZnJvbSxcbiAgICAgIG9mOiAkb2ZcbiAgICB9KTtcblxuICAgIGlmICghKEJZVEVTX1BFUl9FTEVNRU5UIGluIFR5cGVkQXJyYXlQcm90b3R5cGUpKSBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIEJZVEVTX1BFUl9FTEVNRU5ULCBCWVRFUyk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCwgTkFNRSwgcHJvdG8pO1xuXG4gICAgc2V0U3BlY2llcyhOQU1FKTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogRk9SQ0VEX1NFVCwgTkFNRSwgeyBzZXQ6ICRzZXQgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFDT1JSRUNUX0lURVJfTkFNRSwgTkFNRSwgJGl0ZXJhdG9ycyk7XG5cbiAgICBpZiAoIUxJQlJBUlkgJiYgVHlwZWRBcnJheVByb3RvdHlwZS50b1N0cmluZyAhPSBhcnJheVRvU3RyaW5nKSBUeXBlZEFycmF5UHJvdG90eXBlLnRvU3RyaW5nID0gYXJyYXlUb1N0cmluZztcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgbmV3IFR5cGVkQXJyYXkoMSkuc2xpY2UoKTtcbiAgICB9KSwgTkFNRSwgeyBzbGljZTogJHNsaWNlIH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFsxLCAyXS50b0xvY2FsZVN0cmluZygpICE9IG5ldyBUeXBlZEFycmF5KFsxLCAyXSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZS50b0xvY2FsZVN0cmluZy5jYWxsKFsxLCAyXSk7XG4gICAgfSkpLCBOQU1FLCB7IHRvTG9jYWxlU3RyaW5nOiAkdG9Mb2NhbGVTdHJpbmcgfSk7XG5cbiAgICBJdGVyYXRvcnNbTkFNRV0gPSBDT1JSRUNUX0lURVJfTkFNRSA/ICRuYXRpdmVJdGVyYXRvciA6ICRpdGVyYXRvcjtcbiAgICBpZiAoIUxJQlJBUlkgJiYgIUNPUlJFQ1RfSVRFUl9OQU1FKSBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIElURVJBVE9SLCAkaXRlcmF0b3IpO1xuICB9O1xufSBlbHNlIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vZXM2Lm1hcCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnbWV0YWRhdGEnKTtcbnZhciBzdG9yZSA9IHNoYXJlZC5zdG9yZSB8fCAoc2hhcmVkLnN0b3JlID0gbmV3IChyZXF1aXJlKCcuL2VzNi53ZWFrLW1hcCcpKSgpKTtcblxudmFyIGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAgPSBmdW5jdGlvbiAodGFyZ2V0LCB0YXJnZXRLZXksIGNyZWF0ZSkge1xuICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBzdG9yZS5nZXQodGFyZ2V0KTtcbiAgaWYgKCF0YXJnZXRNZXRhZGF0YSkge1xuICAgIGlmICghY3JlYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHN0b3JlLnNldCh0YXJnZXQsIHRhcmdldE1ldGFkYXRhID0gbmV3IE1hcCgpKTtcbiAgfVxuICB2YXIga2V5TWV0YWRhdGEgPSB0YXJnZXRNZXRhZGF0YS5nZXQodGFyZ2V0S2V5KTtcbiAgaWYgKCFrZXlNZXRhZGF0YSkge1xuICAgIGlmICghY3JlYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHRhcmdldE1ldGFkYXRhLnNldCh0YXJnZXRLZXksIGtleU1ldGFkYXRhID0gbmV3IE1hcCgpKTtcbiAgfSByZXR1cm4ga2V5TWV0YWRhdGE7XG59O1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCBmYWxzZSk7XG4gIHJldHVybiBtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBtZXRhZGF0YU1hcC5oYXMoTWV0YWRhdGFLZXkpO1xufTtcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gZnVuY3Rpb24gKE1ldGFkYXRhS2V5LCBPLCBQKSB7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG1ldGFkYXRhTWFwLmdldChNZXRhZGF0YUtleSk7XG59O1xudmFyIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUsIE8sIFApIHtcbiAgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCB0cnVlKS5zZXQoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUpO1xufTtcbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSkge1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKHRhcmdldCwgdGFyZ2V0S2V5LCBmYWxzZSk7XG4gIHZhciBrZXlzID0gW107XG4gIGlmIChtZXRhZGF0YU1hcCkgbWV0YWRhdGFNYXAuZm9yRWFjaChmdW5jdGlvbiAoXywga2V5KSB7IGtleXMucHVzaChrZXkpOyB9KTtcbiAgcmV0dXJuIGtleXM7XG59O1xudmFyIHRvTWV0YUtleSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xudmFyIGV4cCA9IGZ1bmN0aW9uIChPKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIE8pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN0b3JlOiBzdG9yZSxcbiAgbWFwOiBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwLFxuICBoYXM6IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEsXG4gIGdldDogb3JkaW5hcnlHZXRPd25NZXRhZGF0YSxcbiAgc2V0OiBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhLFxuICBrZXlzOiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyxcbiAga2V5OiB0b01ldGFLZXksXG4gIGV4cDogZXhwXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyIsImltcG9ydCBpc0lQRlMgZnJvbSAnaXMtaXBmcyc7XG5pbXBvcnQgeyBQaW5hdGFDb25maWcgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBFUlJPUl9OT19DUkVERU5USUFMU19QUk9WSURFRH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBheGlvc0hlYWRlcnNcbiAgICB7IG1heENvbnRlbnRMZW5ndGg6IG51bWJlcjtcbiAgICAgICAgbWF4Qm9keUxlbmd0aDogbnVtYmVyO1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgICAgICAgfTtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFwaUtleXMocGluYXRhQXBpS2V5Pzogc3RyaW5nLCBwaW5hdGFTZWNyZXRBcGlLZXk/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXBpbmF0YUFwaUtleSB8fCBwaW5hdGFBcGlLZXkgPT09ICcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdObyBwaW5hdGFBcGlLZXkgcHJvdmlkZWQhIFBsZWFzZSBwcm92aWRlIHlvdXIgcGluYXRhIGFwaSBrZXkgYXMgYW4gYXJndW1lbnQgd2hlbiB5b3Ugc3RhcnQgdGhpcyBzY3JpcHQnXG4gICAgICAgICk7XG4gICAgfVxuICAgIGlmICghcGluYXRhU2VjcmV0QXBpS2V5IHx8IHBpbmF0YVNlY3JldEFwaUtleSA9PT0gJycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ05vIHBpbmF0YVNlY3JldEFwaUtleSBwcm92aWRlZCEgUGxlYXNlIHByb3ZpZGUgeW91ciBwaW5hdGEgc2VjcmV0IGFwaSBrZXkgYXMgYW4gYXJndW1lbnQgd2hlbiB5b3Ugc3RhcnQgdGhpcyBzY3JpcHQnXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzKGNvbmZpZzogUGluYXRhQ29uZmlnKSB7XG4gICAgaWYgKFxuICAgICAgICBjb25maWcucGluYXRhQXBpS2V5ICYmIGNvbmZpZy5waW5hdGFBcGlLZXkubGVuZ3RoID4gMCAmJlxuICAgICAgICBjb25maWcucGluYXRhU2VjcmV0QXBpS2V5ICYmIGNvbmZpZy5waW5hdGFTZWNyZXRBcGlLZXkubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIHBpbmF0YV9hcGlfa2V5OiBjb25maWcucGluYXRhQXBpS2V5LFxuICAgICAgICAgICAgICAgIHBpbmF0YV9zZWNyZXRfYXBpX2tleTogY29uZmlnLnBpbmF0YVNlY3JldEFwaUtleVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlmIChjb25maWcucGluYXRhSldUS2V5ICYmIGNvbmZpZy5waW5hdGFKV1RLZXkubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjb25maWcucGluYXRhSldUS2V5fWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTk9fQ1JFREVOVElBTFNfUFJPVklERUQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzV2l0aEZvcm1EYXRhKGNvbmZpZzogUGluYXRhQ29uZmlnLCBib3VuZGFyeVZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogYXhpb3NIZWFkZXJzID0ge1xuICAgICAgICAuLi5jcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMoY29uZmlnKSxcbiAgICAgICAgbWF4Q29udGVudExlbmd0aDogSW5maW5pdHksIC8vdGhpcyBpcyBuZWVkZWQgdG8gcHJldmVudCBheGlvcyBmcm9tIGVycm9yaW5nIG91dCB3aXRoIGxhcmdlIGZpbGVzXG4gICAgICAgIG1heEJvZHlMZW5ndGg6IEluZmluaXR5XG4gICAgfTtcblxuICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtdHlwZSddID0gYG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSR7Ym91bmRhcnlWYWx1ZX1gO1xuICAgIHJldHVybiByZXF1ZXN0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlSG9zdE5vZGVzKGhvc3ROb2RlczogYW55KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGhvc3ROb2RlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdob3N0X25vZGVzIHZhbHVlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICB9XG4gICAgaG9zdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKCFpc0lQRlMucGVlck11bHRpYWRkcihub2RlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBob3N0X25vZGUgYXJyYXkgZW50cnk6ICR7bm9kZX0gaXMgbm90IGEgdmFsaWQgcGVlciBtdWx0aWFkZHJgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU1ldGFkYXRhKG1ldGFkYXRhOiBhbnkpIHtcbiAgICBpZiAobWV0YWRhdGEubmFtZSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBtZXRhZGF0YS5uYW1lID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUgaW5zdGFuY2VvZiBTdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21ldGFkYXRhIG5hbWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmtleXZhbHVlcykge1xuICAgICAgICBpZiAoISh0eXBlb2YgbWV0YWRhdGEua2V5dmFsdWVzID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWV0YXRhZGF0YSBrZXl2YWx1ZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpID0gMDtcblxuICAgICAgICBPYmplY3QuZW50cmllcyhtZXRhZGF0YS5rZXl2YWx1ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleVZhbHVlOiBhbnkpIHtcbiAgICAgICAgICAgIGlmIChpID4gOSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ05vIG1vcmUgdGhhbiAxMCBrZXl2YWx1ZXMgY2FuIGJlIHByb3ZpZGVkIGZvciBtZXRhZGF0YSBlbnRyaWVzJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5wdXQgaXMgYSBzdHJpbmcsIGEgYm9vbGVhbiwgb3IgYSBudW1iZXIsIHNvIHdlIGRvbid0IGdldCBhbiBvYmplY3QgcGFzc2VkIGluIGJ5IGFjY2lkZW50XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGtleVZhbHVlWzFdID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2Yga2V5VmFsdWVbMV0gPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgICAgICAgICAgICAhaXNOYU4oa2V5VmFsdWVbMV0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAnTWV0YWRhdGEga2V5dmFsdWUgdmFsdWVzIG11c3QgYmUgc3RyaW5ncywgYm9vbGVhbnMsIG9yIG51bWJlcnMnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQaW5Qb2xpY3lTdHJ1Y3R1cmUocGluUG9saWN5OiB7IHJlZ2lvbnM6IGFueVtdOyB9KSB7XG4gICAgLy90aGlzIGZ1bmN0aW9uIHRha2VzIGluIGEgcGluIHBvbGljeSBhbmQgY2hlY2tzIHRoZSBKU09OIHN0cnVjdHVyZSB0byBtYWtlIHN1cmUgaXQncyB2YWxpZFxuICAgIGlmICghcGluUG9saWN5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcGluIHBvbGljeSBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghcGluUG9saWN5LnJlZ2lvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWdpb25zIHByb3ZpZGVkIGluIHBpbiBwb2xpY3knKTtcbiAgICB9XG4gICAgaWYgKHBpblBvbGljeS5yZWdpb25zLmxlbmd0aCkge1xuICAgICAgICBwaW5Qb2xpY3kucmVnaW9ucy5mb3JFYWNoKChyZWdpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhcmVnaW9uLmlkIHx8XG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHJlZ2lvbi5pZCkgPT09XG4gICAgICAgICAgICAgICAgICAgICdbb2JqZWN0IFN0cmluZ10nXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWdpb24gaWQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uLmRlc2lyZWRSZXBsaWNhdGlvbkNvdW50IHx8XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5kZXNpcmVkUmVwbGljYXRpb25Db3VudCA9PT0gMFxuICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihyZWdpb24uZGVzaXJlZFJlcGxpY2F0aW9uQ291bnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlc2lyZWRSZXBsaWNhdGlvbkNvdW50IG11c3QgYmUgYW4gaW50ZWdlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBpbmF0YU9wdGlvbnMob3B0aW9uczogeyBjaWRWZXJzaW9uPzogbnVtYmVyOyB3cmFwV2l0aERpcmVjdG9yeT86IGJvb2xlYW47IGhvc3ROb2Rlcz86IGFueTsgY3VzdG9tUGluUG9saWN5PzogYW55OyB9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jaWRWZXJzaW9uKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgaWYgKG9wdGlvbnMuY2lkVmVyc2lvbiAhPSAwICYmIG9wdGlvbnMuY2lkVmVyc2lvbiAhPSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIG9yIGludmFsaWQgY2lkVmVyc2lvbicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLndyYXBXaXRoRGlyZWN0b3J5KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgb3B0aW9ucy53cmFwV2l0aERpcmVjdG9yeSAhPT0gdHJ1ZSAmJlxuICAgICAgICAgICAgb3B0aW9ucy53cmFwV2l0aERpcmVjdG9yeSAhPT0gZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ3dyYXBXaXRoRGlyZWN0b3J5IG11c3QgYmUgYSBib29sZWFuIHZhbHVlIG9mIHRydWUgb3IgZmFsc2UnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaG9zdE5vZGVzKSB7XG4gICAgICAgIHZhbGlkYXRlSG9zdE5vZGVzKG9wdGlvbnMuaG9zdE5vZGVzKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jdXN0b21QaW5Qb2xpY3kpIHtcbiAgICAgICAgdmFsaWRhdGVQaW5Qb2xpY3lTdHJ1Y3R1cmUob3B0aW9ucy5jdXN0b21QaW5Qb2xpY3kpO1xuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBoYW5kbGVFcnJvciA9IChlcnJvciA6IGFueSkgPT4ge1xuICBpZiAoZXJyb3IgJiYgZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UuZGF0YSAmJiBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3I7XG4gIH0gZWxzZSBpZiAoZXJyb3IuZGF0YSAmJiBlcnJvci5kYXRhLmVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yLmRhdGEuZXJyb3I7XG4gIH0gZWxzZSBpZiAoZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UuZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IucmVzcG9uc2UuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG4iLCIvLyAyMi4xLjMuMzEgQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG52YXIgVU5TQ09QQUJMRVMgPSByZXF1aXJlKCcuL193a3MnKSgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuaWYgKEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkgcmVxdWlyZSgnLi9faGlkZScpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b1tVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuIiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuIiwiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikgfHwgKGZvcmJpZGRlbkZpZWxkICE9PSB1bmRlZmluZWQgJiYgZm9yYmlkZGVuRmllbGQgaW4gaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBCUkVBSyA9IHt9O1xudmFyIFJFVFVSTiA9IHt9O1xudmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQsIElURVJBVE9SKSB7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXJhYmxlOyB9IDogZ2V0SXRlckZuKGl0ZXJhYmxlKTtcbiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yLCByZXN1bHQ7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3JcbiAgaWYgKGlzQXJyYXlJdGVyKGl0ZXJGbikpIGZvciAobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7KSB7XG4gICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5leHBvcnRzLkJSRUFLID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjtcbiIsInZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgc2FmZSkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSByZWRlZmluZSh0YXJnZXQsIGtleSwgc3JjW2tleV0sIHNhZmUpO1xuICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRZUEUpIHtcbiAgaWYgKCFpc09iamVjdChpdCkgfHwgaXQuX3QgIT09IFRZUEUpIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc3BhY2VzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgc3BhY2UgPSAnWycgKyBzcGFjZXMgKyAnXSc7XG52YXIgbm9uID0gJ1xcdTIwMGJcXHUwMDg1JztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyBzcGFjZSArIHNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEFMSUFTKSB7XG4gIHZhciBleHAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXNwYWNlc1tLRVldKCkgfHwgbm9uW0tFWV0oKSAhPSBub247XG4gIH0pO1xuICB2YXIgZm4gPSBleHBbS0VZXSA9IEZPUkNFID8gZXhlYyh0cmltKSA6IHNwYWNlc1tLRVldO1xuICBpZiAoQUxJQVMpIGV4cFtBTElBU10gPSBmbjtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRSwgJ1N0cmluZycsIGV4cCk7XG59O1xuXG4vLyAxIC0+IFN0cmluZyN0cmltTGVmdFxuLy8gMiAtPiBTdHJpbmcjdHJpbVJpZ2h0XG4vLyAzIC0+IFN0cmluZyN0cmltXG52YXIgdHJpbSA9IGV4cG9ydGVyLnRyaW0gPSBmdW5jdGlvbiAoc3RyaW5nLCBUWVBFKSB7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZXI7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZW5jb2RlOiByZXF1aXJlKCcuL2VuY29kZS5qcycpXG4gICwgZGVjb2RlOiByZXF1aXJlKCcuL2RlY29kZS5qcycpXG4gICwgZW5jb2RpbmdMZW5ndGg6IHJlcXVpcmUoJy4vbGVuZ3RoLmpzJylcbn1cbiIsInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcbiIsImV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBGUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgbmFtZVJFID0gL15cXHMqZnVuY3Rpb24gKFteIChdKikvO1xudmFyIE5BTUUgPSAnbmFtZSc7XG5cbi8vIDE5LjIuNC4yIG5hbWVcbk5BTUUgaW4gRlByb3RvIHx8IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgZFAoRlByb3RvLCBOQU1FLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoJycgKyB0aGlzKS5tYXRjaChuYW1lUkUpWzFdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMi41LjMgZ2V0IFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIEQpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07XG4iLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvYmopO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGJhc2U1OCA9IHJlcXVpcmUoJ2JzNTgnKVxuY29uc3QgbXVsdGloYXNoID0gcmVxdWlyZSgnbXVsdGloYXNoZXMnKVxuY29uc3QgbXVsdGliYXNlID0gcmVxdWlyZSgnbXVsdGliYXNlJylcbmNvbnN0IE11bHRpYWRkciA9IHJlcXVpcmUoJ211bHRpYWRkcicpXG5jb25zdCBtYWZtdCA9IHJlcXVpcmUoJ21hZm10JylcbmNvbnN0IENJRCA9IHJlcXVpcmUoJ2NpZHMnKVxuXG5jb25zdCB1cmxQYXR0ZXJuID0gL15odHRwcz86XFwvXFwvW14vXStcXC8oaXAoZnxuKXMpXFwvKChcXHcrKS4qKS9cbmNvbnN0IHBhdGhQYXR0ZXJuID0gL15cXC8oaXAoZnxuKXMpXFwvKChcXHcrKS4qKS9cbmNvbnN0IGRlZmF1bHRQcm90b2NvbE1hdGNoID0gMVxuY29uc3QgZGVmYXVsdEhhc2hNYXRoID0gNFxuXG5jb25zdCBmcWRuUGF0dGVybiA9IC9eaHR0cHM/OlxcL1xcLyhbXi9dKylcXC4oaXAoPzpmfG4pcylcXC5bXi9dKy9cbmNvbnN0IGZxZG5IYXNoTWF0Y2ggPSAxXG5jb25zdCBmcWRuUHJvdG9jb2xNYXRjaCA9IDJcblxuZnVuY3Rpb24gaXNNdWx0aWhhc2ggKGhhc2gpIHtcbiAgY29uc3QgZm9ybWF0dGVkID0gY29udmVydFRvU3RyaW5nKGhhc2gpXG4gIHRyeSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTU4LmRlY29kZShmb3JtYXR0ZWQpKVxuICAgIG11bHRpaGFzaC5kZWNvZGUoYnVmZmVyKVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBpc011bHRpYmFzZSAoaGFzaCkge1xuICB0cnkge1xuICAgIHJldHVybiBtdWx0aWJhc2UuaXNFbmNvZGVkKGhhc2gpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NJRCAoaGFzaCkge1xuICB0cnkge1xuICAgIG5ldyBDSUQoaGFzaCkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNNdWx0aWFkZHIgKGlucHV0KSB7XG4gIGlmICghaW5wdXQpIHJldHVybiBmYWxzZVxuICBpZiAoTXVsdGlhZGRyLmlzTXVsdGlhZGRyKGlucHV0KSkgcmV0dXJuIHRydWVcbiAgdHJ5IHtcbiAgICBuZXcgTXVsdGlhZGRyKGlucHV0KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1BlZXJNdWx0aWFkZHIgKGlucHV0KSB7XG4gIHJldHVybiBpc011bHRpYWRkcihpbnB1dCkgJiYgbWFmbXQuSVBGUy5tYXRjaGVzKGlucHV0KVxufVxuXG5mdW5jdGlvbiBpc0lwZnMgKGlucHV0LCBwYXR0ZXJuLCBwcm90b2NvbE1hdGNoID0gZGVmYXVsdFByb3RvY29sTWF0Y2gsIGhhc2hNYXRjaCA9IGRlZmF1bHRIYXNoTWF0aCkge1xuICBjb25zdCBmb3JtYXR0ZWQgPSBjb252ZXJ0VG9TdHJpbmcoaW5wdXQpXG4gIGlmICghZm9ybWF0dGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGZvcm1hdHRlZC5tYXRjaChwYXR0ZXJuKVxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAobWF0Y2hbcHJvdG9jb2xNYXRjaF0gIT09ICdpcGZzJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgbGV0IGhhc2ggPSBtYXRjaFtoYXNoTWF0Y2hdXG5cbiAgaWYgKGhhc2ggJiYgcGF0dGVybiA9PT0gZnFkblBhdHRlcm4pIHtcbiAgICAvLyB3aGVuIGRvaW5nIGNoZWNrcyBmb3Igc3ViZG9tYWluIGNvbnRleHRcbiAgICAvLyBlbnN1cmUgaGFzaCBpcyBjYXNlLWluc2Vuc2l0aXZlXG4gICAgLy8gKGJyb3dzZXJzIGZvcmNlLWxvd2VyY2FzZSBhdXRob3JpdHkgY29tcG90ZW50IGFueXdheSlcbiAgICBoYXNoID0gaGFzaC50b0xvd2VyQ2FzZSgpXG4gIH1cblxuICByZXR1cm4gaXNDSUQoaGFzaClcbn1cblxuZnVuY3Rpb24gaXNJcG5zIChpbnB1dCwgcGF0dGVybiwgcHJvdG9jb2xNYXRjaCA9IGRlZmF1bHRQcm90b2NvbE1hdGNoLCBoYXNoTWF0Y2gpIHtcbiAgY29uc3QgZm9ybWF0dGVkID0gY29udmVydFRvU3RyaW5nKGlucHV0KVxuICBpZiAoIWZvcm1hdHRlZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IG1hdGNoID0gZm9ybWF0dGVkLm1hdGNoKHBhdHRlcm4pXG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChtYXRjaFtwcm90b2NvbE1hdGNoXSAhPT0gJ2lwbnMnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAoaGFzaE1hdGNoICYmIHBhdHRlcm4gPT09IGZxZG5QYXR0ZXJuKSB7XG4gICAgbGV0IGhhc2ggPSBtYXRjaFtoYXNoTWF0Y2hdXG4gICAgLy8gd2hlbiBkb2luZyBjaGVja3MgZm9yIHN1YmRvbWFpbiBjb250ZXh0XG4gICAgLy8gZW5zdXJlIGhhc2ggaXMgY2FzZS1pbnNlbnNpdGl2ZVxuICAgIC8vIChicm93c2VycyBmb3JjZS1sb3dlcmNhc2UgYXV0aG9yaXR5IGNvbXBvdGVudCBhbnl3YXkpXG4gICAgaGFzaCA9IGhhc2gudG9Mb3dlckNhc2UoKVxuICAgIHJldHVybiBpc0NJRChoYXNoKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcgKGlucHV0KSB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyAoaW5wdXQpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihpbnB1dCkpIHtcbiAgICByZXR1cm4gYmFzZTU4LmVuY29kZShpbnB1dClcbiAgfVxuXG4gIGlmIChpc1N0cmluZyhpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXRcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpcGZzU3ViZG9tYWluID0gKHVybCkgPT4gaXNJcGZzKHVybCwgZnFkblBhdHRlcm4sIGZxZG5Qcm90b2NvbE1hdGNoLCBmcWRuSGFzaE1hdGNoKVxuY29uc3QgaXBuc1N1YmRvbWFpbiA9ICh1cmwpID0+IGlzSXBucyh1cmwsIGZxZG5QYXR0ZXJuLCBmcWRuUHJvdG9jb2xNYXRjaCwgZnFkbkhhc2hNYXRjaClcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG11bHRpaGFzaDogaXNNdWx0aWhhc2gsXG4gIG11bHRpYWRkcjogaXNNdWx0aWFkZHIsXG4gIHBlZXJNdWx0aWFkZHI6IGlzUGVlck11bHRpYWRkcixcbiAgY2lkOiBpc0NJRCxcbiAgYmFzZTMyY2lkOiAoY2lkKSA9PiAoaXNNdWx0aWJhc2UoY2lkKSA9PT0gJ2Jhc2UzMicgJiYgaXNDSUQoY2lkKSksXG4gIGlwZnNTdWJkb21haW46IGlwZnNTdWJkb21haW4sXG4gIGlwbnNTdWJkb21haW46IGlwbnNTdWJkb21haW4sXG4gIHN1YmRvbWFpbjogKHVybCkgPT4gKGlwZnNTdWJkb21haW4odXJsKSB8fCBpcG5zU3ViZG9tYWluKHVybCkpLFxuICBzdWJkb21haW5QYXR0ZXJuOiBmcWRuUGF0dGVybixcbiAgaXBmc1VybDogKHVybCkgPT4gaXNJcGZzKHVybCwgdXJsUGF0dGVybiksXG4gIGlwbnNVcmw6ICh1cmwpID0+IGlzSXBucyh1cmwsIHVybFBhdHRlcm4pLFxuICB1cmw6ICh1cmwpID0+IChpc0lwZnModXJsLCB1cmxQYXR0ZXJuKSB8fCBpc0lwbnModXJsLCB1cmxQYXR0ZXJuKSksXG4gIHVybFBhdHRlcm46IHVybFBhdHRlcm4sXG4gIGlwZnNQYXRoOiAocGF0aCkgPT4gaXNJcGZzKHBhdGgsIHBhdGhQYXR0ZXJuKSxcbiAgaXBuc1BhdGg6IChwYXRoKSA9PiBpc0lwbnMocGF0aCwgcGF0aFBhdHRlcm4pLFxuICBwYXRoOiAocGF0aCkgPT4gKGlzSXBmcyhwYXRoLCBwYXRoUGF0dGVybikgfHwgaXNJcG5zKHBhdGgsIHBhdGhQYXR0ZXJuKSksXG4gIHBhdGhQYXR0ZXJuOiBwYXRoUGF0dGVybixcbiAgdXJsT3JQYXRoOiAoeCkgPT4gKGlzSXBmcyh4LCB1cmxQYXR0ZXJuKSB8fCBpc0lwbnMoeCwgdXJsUGF0dGVybikgfHwgaXNJcGZzKHgsIHBhdGhQYXR0ZXJuKSB8fCBpc0lwbnMoeCwgcGF0aFBhdHRlcm4pKSxcbiAgY2lkUGF0aDogcGF0aCA9PiBpc1N0cmluZyhwYXRoKSAmJiAhaXNDSUQocGF0aCkgJiYgaXNJcGZzKGAvaXBmcy8ke3BhdGh9YCwgcGF0aFBhdHRlcm4pXG59XG4iLCIvLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcbiIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG4iLCIvLyA3LjIuOCBJc1JlZ0V4cChhcmd1bWVudClcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCJ2YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIHJpdGVyID0gWzddW0lURVJBVE9SXSgpO1xuICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbiAoKSB7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgc2tpcENsb3NpbmcpIHtcbiAgaWYgKCFza2lwQ2xvc2luZyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzYWZlID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IFs3XTtcbiAgICB2YXIgaXRlciA9IGFycltJVEVSQVRPUl0oKTtcbiAgICBpdGVyLm5leHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7IGRvbmU6IHNhZmUgPSB0cnVlIH07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXI7IH07XG4gICAgZXhlYyhhcnIpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIHNhZmU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBidWlsdGluRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcblxuIC8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWx0aW5FeGVjLmNhbGwoUiwgUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi9lczYucmVnZXhwLmV4ZWMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi9fcmVnZXhwLWV4ZWMnKTtcblxudmFyIFNQRUNJRVMgPSB3a3MoJ3NwZWNpZXMnKTtcblxudmFyIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gI3JlcGxhY2UgbmVlZHMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgbmFtZWQgZ3JvdXBzLlxuICAvLyAjbWF0Y2ggd29ya3MgZmluZSBiZWNhdXNlIGl0IGp1c3QgcmV0dXJuIHRoZSBleGVjIHJlc3VsdHMsIGV2ZW4gaWYgaXQgaGFzXG4gIC8vIGEgXCJncm9wc1wiIHByb3BlcnR5LlxuICB2YXIgcmUgPSAvLi87XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdC5ncm91cHMgPSB7IGE6ICc3JyB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHJldHVybiAnJy5yZXBsYWNlKHJlLCAnJDxhPicpICE9PSAnNyc7XG59KTtcblxudmFyIFNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuICB2YXIgcmUgPSAvKD86KS87XG4gIHZhciBvcmlnaW5hbEV4ZWMgPSByZS5leGVjO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH07XG4gIHZhciByZXN1bHQgPSAnYWInLnNwbGl0KHJlKTtcbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDIgJiYgcmVzdWx0WzBdID09PSAnYScgJiYgcmVzdWx0WzFdID09PSAnYic7XG59KSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYykge1xuICB2YXIgU1lNQk9MID0gd2tzKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCA/ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG4gICAgaWYgKEtFWSA9PT0gJ3NwbGl0Jykge1xuICAgICAgLy8gUmVnRXhwW0BAc3BsaXRdIGRvZXNuJ3QgY2FsbCB0aGUgcmVnZXgncyBleGVjIG1ldGhvZCwgYnV0IGZpcnN0IGNyZWF0ZXNcbiAgICAgIC8vIGEgbmV3IG9uZS4gV2UgbmVlZCB0byByZXR1cm4gdGhlIHBhdGNoZWQgcmVnZXggd2hlbiBjcmVhdGluZyB0aGUgbmV3IG9uZS5cbiAgICAgIHJlLmNvbnN0cnVjdG9yID0ge307XG4gICAgICByZS5jb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlOyB9O1xuICAgIH1cbiAgICByZVtTWU1CT0xdKCcnKTtcbiAgICByZXR1cm4gIWV4ZWNDYWxsZWQ7XG4gIH0pIDogdW5kZWZpbmVkO1xuXG4gIGlmIChcbiAgICAhREVMRUdBVEVTX1RPX1NZTUJPTCB8fFxuICAgICFERUxFR0FURVNfVE9fRVhFQyB8fFxuICAgIChLRVkgPT09ICdyZXBsYWNlJyAmJiAhUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMpIHx8XG4gICAgKEtFWSA9PT0gJ3NwbGl0JyAmJiAhU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDKVxuICApIHtcbiAgICB2YXIgbmF0aXZlUmVnRXhwTWV0aG9kID0gLy4vW1NZTUJPTF07XG4gICAgdmFyIGZucyA9IGV4ZWMoXG4gICAgICBkZWZpbmVkLFxuICAgICAgU1lNQk9MLFxuICAgICAgJydbS0VZXSxcbiAgICAgIGZ1bmN0aW9uIG1heWJlQ2FsbE5hdGl2ZShuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICBpZiAocmVnZXhwLmV4ZWMgPT09IHJlZ2V4cEV4ZWMpIHtcbiAgICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgICAgLy8gcG9seWZpbGxlZCBmdW5jdGlvbiksIGxlYXNpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAgICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlIH07XG4gICAgICB9XG4gICAgKTtcbiAgICB2YXIgc3RyZm4gPSBmbnNbMF07XG4gICAgdmFyIHJ4Zm4gPSBmbnNbMV07XG5cbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmZuKTtcbiAgICBoaWRlKFJlZ0V4cC5wcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcnhmbi5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMpOyB9XG4gICAgKTtcbiAgfVxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBuYXZpZ2F0b3IgPSBnbG9iYWwubmF2aWdhdG9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50IHx8ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgJGl0ZXJEZXRlY3QgPSByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSwgd3JhcHBlciwgbWV0aG9kcywgY29tbW9uLCBJU19NQVAsIElTX1dFQUspIHtcbiAgdmFyIEJhc2UgPSBnbG9iYWxbTkFNRV07XG4gIHZhciBDID0gQmFzZTtcbiAgdmFyIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJztcbiAgdmFyIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZTtcbiAgdmFyIE8gPSB7fTtcbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgICB2YXIgZm4gPSBwcm90b1tLRVldO1xuICAgIHJlZGVmaW5lKHByb3RvLCBLRVksXG4gICAgICBLRVkgPT0gJ2RlbGV0ZScgPyBmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2hhcycgPyBmdW5jdGlvbiBoYXMoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyBmYWxzZSA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2dldCcgPyBmdW5jdGlvbiBnZXQoYSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyB1bmRlZmluZWQgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdhZGQnID8gZnVuY3Rpb24gYWRkKGEpIHsgZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpOyByZXR1cm4gdGhpczsgfVxuICAgICAgICA6IGZ1bmN0aW9uIHNldChhLCBiKSB7IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhLCBiKTsgcmV0dXJuIHRoaXM7IH1cbiAgICApO1xuICB9O1xuICBpZiAodHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBDKCkuZW50cmllcygpLm5leHQoKTtcbiAgfSkpKSB7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgLy8gZWFybHkgaW1wbGVtZW50YXRpb25zIG5vdCBzdXBwb3J0cyBjaGFpbmluZ1xuICAgIHZhciBIQVNOVF9DSEFJTklORyA9IGluc3RhbmNlW0FEREVSXShJU19XRUFLID8ge30gOiAtMCwgMSkgIT0gaW5zdGFuY2U7XG4gICAgLy8gVjggfiAgQ2hyb21pdW0gNDAtIHdlYWstY29sbGVjdGlvbnMgdGhyb3dzIG9uIHByaW1pdGl2ZXMsIGJ1dCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgdmFyIFRIUk9XU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5oYXMoMSk7IH0pO1xuICAgIC8vIG1vc3QgZWFybHkgaW1wbGVtZW50YXRpb25zIGRvZXNuJ3Qgc3VwcG9ydHMgaXRlcmFibGVzLCBtb3N0IG1vZGVybiAtIG5vdCBjbG9zZSBpdCBjb3JyZWN0bHlcbiAgICB2YXIgQUNDRVBUX0lURVJBQkxFUyA9ICRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7IG5ldyBDKGl0ZXIpOyB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAvLyBmb3IgZWFybHkgaW1wbGVtZW50YXRpb25zIC0wIGFuZCArMCBub3QgdGhlIHNhbWVcbiAgICB2YXIgQlVHR1lfWkVSTyA9ICFJU19XRUFLICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFY4IH4gQ2hyb21pdW0gNDItIGZhaWxzIG9ubHkgd2l0aCA1KyBlbGVtZW50c1xuICAgICAgdmFyICRpbnN0YW5jZSA9IG5ldyBDKCk7XG4gICAgICB2YXIgaW5kZXggPSA1O1xuICAgICAgd2hpbGUgKGluZGV4LS0pICRpbnN0YW5jZVtBRERFUl0oaW5kZXgsIGluZGV4KTtcbiAgICAgIHJldHVybiAhJGluc3RhbmNlLmhhcygtMCk7XG4gICAgfSk7XG4gICAgaWYgKCFBQ0NFUFRfSVRFUkFCTEVTKSB7XG4gICAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkge1xuICAgICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSk7XG4gICAgICAgIHZhciB0aGF0ID0gaW5oZXJpdElmUmVxdWlyZWQobmV3IEJhc2UoKSwgdGFyZ2V0LCBDKTtcbiAgICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgICAgICByZXR1cm4gdGhhdDtcbiAgICAgIH0pO1xuICAgICAgQy5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgIHByb3RvLmNvbnN0cnVjdG9yID0gQztcbiAgICB9XG4gICAgaWYgKFRIUk9XU19PTl9QUklNSVRJVkVTIHx8IEJVR0dZX1pFUk8pIHtcbiAgICAgIGZpeE1ldGhvZCgnZGVsZXRlJyk7XG4gICAgICBmaXhNZXRob2QoJ2hhcycpO1xuICAgICAgSVNfTUFQICYmIGZpeE1ldGhvZCgnZ2V0Jyk7XG4gICAgfVxuICAgIGlmIChCVUdHWV9aRVJPIHx8IEhBU05UX0NIQUlOSU5HKSBmaXhNZXRob2QoQURERVIpO1xuICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgc2hvdWxkIG5vdCBjb250YWlucyAuY2xlYXIgbWV0aG9kXG4gICAgaWYgKElTX1dFQUsgJiYgcHJvdG8uY2xlYXIpIGRlbGV0ZSBwcm90by5jbGVhcjtcbiAgfVxuXG4gIHNldFRvU3RyaW5nVGFnKEMsIE5BTUUpO1xuXG4gIE9bTkFNRV0gPSBDO1xuICAkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChDICE9IEJhc2UpLCBPKTtcblxuICBpZiAoIUlTX1dFQUspIGNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBUWVBFRCA9IHVpZCgndHlwZWRfYXJyYXknKTtcbnZhciBWSUVXID0gdWlkKCd2aWV3Jyk7XG52YXIgQUJWID0gISEoZ2xvYmFsLkFycmF5QnVmZmVyICYmIGdsb2JhbC5EYXRhVmlldyk7XG52YXIgQ09OU1RSID0gQUJWO1xudmFyIGkgPSAwO1xudmFyIGwgPSA5O1xudmFyIFR5cGVkO1xuXG52YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9ycyA9IChcbiAgJ0ludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5J1xuKS5zcGxpdCgnLCcpO1xuXG53aGlsZSAoaSA8IGwpIHtcbiAgaWYgKFR5cGVkID0gZ2xvYmFsW1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbaSsrXV0pIHtcbiAgICBoaWRlKFR5cGVkLnByb3RvdHlwZSwgVFlQRUQsIHRydWUpO1xuICAgIGhpZGUoVHlwZWQucHJvdG90eXBlLCBWSUVXLCB0cnVlKTtcbiAgfSBlbHNlIENPTlNUUiA9IGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQUJWOiBBQlYsXG4gIENPTlNUUjogQ09OU1RSLFxuICBUWVBFRDogVFlQRUQsXG4gIFZJRVc6IFZJRVdcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBGb3JjZWQgcmVwbGFjZW1lbnQgcHJvdG90eXBlIGFjY2Vzc29ycyBtZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKSB8fCAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBLID0gTWF0aC5yYW5kb20oKTtcbiAgLy8gSW4gRkYgdGhyb3dzIG9ubHkgZGVmaW5lIG1ldGhvZHNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmLCBuby11c2VsZXNzLWNhbGxcbiAgX19kZWZpbmVTZXR0ZXJfXy5jYWxsKG51bGwsIEssIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG4gIGRlbGV0ZSByZXF1aXJlKCcuL19nbG9iYWwnKVtLXTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikge1xuICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBvZjogZnVuY3Rpb24gb2YoKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIEEgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIEFbbGVuZ3RoXSA9IGFyZ3VtZW50c1tsZW5ndGhdO1xuICAgIHJldHVybiBuZXcgdGhpcyhBKTtcbiAgfSB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IGZyb206IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHNbMV07XG4gICAgdmFyIG1hcHBpbmcsIEEsIG4sIGNiO1xuICAgIGFGdW5jdGlvbih0aGlzKTtcbiAgICBtYXBwaW5nID0gbWFwRm4gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAobWFwcGluZykgYUZ1bmN0aW9uKG1hcEZuKTtcbiAgICBpZiAoc291cmNlID09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyB0aGlzKCk7XG4gICAgQSA9IFtdO1xuICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICBuID0gMDtcbiAgICAgIGNiID0gY3R4KG1hcEZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgZnVuY3Rpb24gKG5leHRJdGVtKSB7XG4gICAgICAgIEEucHVzaChjYihuZXh0SXRlbSwgbisrKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgQS5wdXNoLCBBKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInN0cmVhbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpOyIsInZhciBiYXNleCA9IHJlcXVpcmUoJ2Jhc2UteCcpXG52YXIgQUxQSEFCRVQgPSAnMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5eidcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNleChBTFBIQUJFVClcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZiAobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSkgZGVmaW5lUHJvcGVydHkoJFN5bWJvbCwgbmFtZSwgeyB2YWx1ZTogd2tzRXh0LmYobmFtZSkgfSk7XG59O1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICdcXHgwOVxceDBBXFx4MEJcXHgwQ1xceDBEXFx4MjBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwMycgK1xuICAnXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuL19pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4vX3N0cmluZy10cmltJykudHJpbTtcbnZhciBOVU1CRVIgPSAnTnVtYmVyJztcbnZhciAkTnVtYmVyID0gZ2xvYmFsW05VTUJFUl07XG52YXIgQmFzZSA9ICROdW1iZXI7XG52YXIgcHJvdG8gPSAkTnVtYmVyLnByb3RvdHlwZTtcbi8vIE9wZXJhIH4xMiBoYXMgYnJva2VuIE9iamVjdCN0b1N0cmluZ1xudmFyIEJST0tFTl9DT0YgPSBjb2YocmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpKHByb3RvKSkgPT0gTlVNQkVSO1xudmFyIFRSSU0gPSAndHJpbScgaW4gU3RyaW5nLnByb3RvdHlwZTtcblxuLy8gNy4xLjMgVG9OdW1iZXIoYXJndW1lbnQpXG52YXIgdG9OdW1iZXIgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGl0ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsIGZhbHNlKTtcbiAgaWYgKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyAmJiBpdC5sZW5ndGggPiAyKSB7XG4gICAgaXQgPSBUUklNID8gaXQudHJpbSgpIDogJHRyaW0oaXQsIDMpO1xuICAgIHZhciBmaXJzdCA9IGl0LmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIHRoaXJkLCByYWRpeCwgbWF4Q29kZTtcbiAgICBpZiAoZmlyc3QgPT09IDQzIHx8IGZpcnN0ID09PSA0NSkge1xuICAgICAgdGhpcmQgPSBpdC5jaGFyQ29kZUF0KDIpO1xuICAgICAgaWYgKHRoaXJkID09PSA4OCB8fCB0aGlyZCA9PT0gMTIwKSByZXR1cm4gTmFOOyAvLyBOdW1iZXIoJysweDEnKSBzaG91bGQgYmUgTmFOLCBvbGQgVjggZml4XG4gICAgfSBlbHNlIGlmIChmaXJzdCA9PT0gNDgpIHtcbiAgICAgIHN3aXRjaCAoaXQuY2hhckNvZGVBdCgxKSkge1xuICAgICAgICBjYXNlIDY2OiBjYXNlIDk4OiByYWRpeCA9IDI7IG1heENvZGUgPSA0OTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wYlswMV0rJC9pXG4gICAgICAgIGNhc2UgNzk6IGNhc2UgMTExOiByYWRpeCA9IDg7IG1heENvZGUgPSA1NTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wb1swLTddKyQvaVxuICAgICAgICBkZWZhdWx0OiByZXR1cm4gK2l0O1xuICAgICAgfVxuICAgICAgZm9yICh2YXIgZGlnaXRzID0gaXQuc2xpY2UoMiksIGkgPSAwLCBsID0gZGlnaXRzLmxlbmd0aCwgY29kZTsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb2RlID0gZGlnaXRzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIC8vIHBhcnNlSW50IHBhcnNlcyBhIHN0cmluZyB0byBhIGZpcnN0IHVuYXZhaWxhYmxlIHN5bWJvbFxuICAgICAgICAvLyBidXQgVG9OdW1iZXIgc2hvdWxkIHJldHVybiBOYU4gaWYgYSBzdHJpbmcgY29udGFpbnMgdW5hdmFpbGFibGUgc3ltYm9sc1xuICAgICAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiBtYXhDb2RlKSByZXR1cm4gTmFOO1xuICAgICAgfSByZXR1cm4gcGFyc2VJbnQoZGlnaXRzLCByYWRpeCk7XG4gICAgfVxuICB9IHJldHVybiAraXQ7XG59O1xuXG5pZiAoISROdW1iZXIoJyAwbzEnKSB8fCAhJE51bWJlcignMGIxJykgfHwgJE51bWJlcignKzB4MScpKSB7XG4gICROdW1iZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpIHtcbiAgICB2YXIgaXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMSA/IDAgOiB2YWx1ZTtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIHRoYXQgaW5zdGFuY2VvZiAkTnVtYmVyXG4gICAgICAvLyBjaGVjayBvbiAxLi5jb25zdHJ1Y3Rvcihmb28pIGNhc2VcbiAgICAgICYmIChCUk9LRU5fQ09GID8gZmFpbHMoZnVuY3Rpb24gKCkgeyBwcm90by52YWx1ZU9mLmNhbGwodGhhdCk7IH0pIDogY29mKHRoYXQpICE9IE5VTUJFUilcbiAgICAgICAgPyBpbmhlcml0SWZSZXF1aXJlZChuZXcgQmFzZSh0b051bWJlcihpdCkpLCB0aGF0LCAkTnVtYmVyKSA6IHRvTnVtYmVyKGl0KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BOKEJhc2UpIDogKFxuICAgIC8vIEVTMzpcbiAgICAnTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksJyArXG4gICAgLy8gRVM2IChpbiBjYXNlLCBpZiBtb2R1bGVzIHdpdGggRVM2IE51bWJlciBzdGF0aWNzIHJlcXVpcmVkIGJlZm9yZSk6XG4gICAgJ0VQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUiwnICtcbiAgICAnTUlOX1NBRkVfSU5URUdFUixwYXJzZUZsb2F0LHBhcnNlSW50LGlzSW50ZWdlcidcbiAgKS5zcGxpdCgnLCcpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7IGorKykge1xuICAgIGlmIChoYXMoQmFzZSwga2V5ID0ga2V5c1tqXSkgJiYgIWhhcygkTnVtYmVyLCBrZXkpKSB7XG4gICAgICBkUCgkTnVtYmVyLCBrZXksIGdPUEQoQmFzZSwga2V5KSk7XG4gICAgfVxuICB9XG4gICROdW1iZXIucHJvdG90eXBlID0gcHJvdG87XG4gIHByb3RvLmNvbnN0cnVjdG9yID0gJE51bWJlcjtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShnbG9iYWwsIE5VTUJFUiwgJE51bWJlcik7XG59XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX3NldC1wcm90bycpLnNldDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRoYXQsIHRhcmdldCwgQykge1xuICB2YXIgUyA9IHRhcmdldC5jb25zdHJ1Y3RvcjtcbiAgdmFyIFA7XG4gIGlmIChTICE9PSBDICYmIHR5cGVvZiBTID09ICdmdW5jdGlvbicgJiYgKFAgPSBTLnByb3RvdHlwZSkgIT09IEMucHJvdG90eXBlICYmIGlzT2JqZWN0KFApICYmIHNldFByb3RvdHlwZU9mKSB7XG4gICAgc2V0UHJvdG90eXBlT2YodGhhdCwgUCk7XG4gIH0gcmV0dXJuIHRoYXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJlcGVhdChjb3VudCkge1xuICB2YXIgc3RyID0gU3RyaW5nKGRlZmluZWQodGhpcykpO1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBuID0gdG9JbnRlZ2VyKGNvdW50KTtcbiAgaWYgKG4gPCAwIHx8IG4gPT0gSW5maW5pdHkpIHRocm93IFJhbmdlRXJyb3IoXCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZVwiKTtcbiAgZm9yICg7biA+IDA7IChuID4+Pj0gMSkgJiYgKHN0ciArPSBzdHIpKSBpZiAobiAmIDEpIHJlcyArPSBzdHI7XG4gIHJldHVybiByZXM7XG59O1xuIiwiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgaXNJbnRlZ2VyOiByZXF1aXJlKCcuL19pcy1pbnRlZ2VyJykgfSk7XG4iLCIvLyAyMC4yLjIuMjggTWF0aC5zaWduKHgpXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbiBzaWduKHgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICByZXR1cm4gKHggPSAreCkgPT0gMCB8fCB4ICE9IHggPyB4IDogeCA8IDAgPyAtMSA6IDE7XG59O1xuIiwiLy8gMjAuMi4yLjE0IE1hdGguZXhwbTEoeClcbnZhciAkZXhwbTEgPSBNYXRoLmV4cG0xO1xubW9kdWxlLmV4cG9ydHMgPSAoISRleHBtMVxuICAvLyBPbGQgRkYgYnVnXG4gIHx8ICRleHBtMSgxMCkgPiAyMjAyNS40NjU3OTQ4MDY3MTkgfHwgJGV4cG0xKDEwKSA8IDIyMDI1LjQ2NTc5NDgwNjcxNjUxNjhcbiAgLy8gVG9yIEJyb3dzZXIgYnVnXG4gIHx8ICRleHBtMSgtMmUtMTcpICE9IC0yZS0xN1xuKSA/IGZ1bmN0aW9uIGV4cG0xKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID09IDAgPyB4IDogeCA+IC0xZS02ICYmIHggPCAxZS02ID8geCArIHggKiB4IC8gMiA6IE1hdGguZXhwKHgpIC0gMTtcbn0gOiAkZXhwbTE7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG4iLCIvLyBoZWxwZXIgZm9yIFN0cmluZyN7c3RhcnRzV2l0aCwgZW5kc1dpdGgsIGluY2x1ZGVzfVxudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgc2VhcmNoU3RyaW5nLCBOQU1FKSB7XG4gIGlmIChpc1JlZ0V4cChzZWFyY2hTdHJpbmcpKSB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZyMnICsgTkFNRSArIFwiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4IVwiKTtcbiAgcmV0dXJuIFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbn07XG4iLCJ2YXIgTUFUQ0ggPSByZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgcmUgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbS0VZXShyZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gIScvLi8nW0tFWV0ocmUpO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiB0cnVlO1xufTtcbiIsIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbCwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbCkpKGxlbmd0aCk7XG59O1xuIiwiLy8gMjIuMS4zLjYgQXJyYXkucHJvdG90eXBlLmZpbGwodmFsdWUsIHN0YXJ0ID0gMCwgZW5kID0gdGhpcy5sZW5ndGgpXG4ndXNlIHN0cmljdCc7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCA9IDAsIGVuZCA9IEBsZW5ndGggKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGxlbmd0aCk7XG4gIHZhciBlbmQgPSBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGVuZFBvcyA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuZ3RoKTtcbiAgd2hpbGUgKGVuZFBvcyA+IGluZGV4KSBPW2luZGV4KytdID0gdmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWdleHBGbGFncyA9IHJlcXVpcmUoJy4vX2ZsYWdzJyk7XG5cbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xuLy8gVGhpcyBhbHdheXMgcmVmZXJzIHRvIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb24sIGJlY2F1c2UgdGhlXG4vLyBTdHJpbmcjcmVwbGFjZSBwb2x5ZmlsbCB1c2VzIC4vZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qcyxcbi8vIHdoaWNoIGxvYWRzIHRoaXMgZmlsZSBiZWZvcmUgcGF0Y2hpbmcgdGhlIG1ldGhvZC5cbnZhciBuYXRpdmVSZXBsYWNlID0gU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlO1xuXG52YXIgcGF0Y2hlZEV4ZWMgPSBuYXRpdmVFeGVjO1xuXG52YXIgTEFTVF9JTkRFWCA9ICdsYXN0SW5kZXgnO1xuXG52YXIgVVBEQVRFU19MQVNUX0lOREVYX1dST05HID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlMSA9IC9hLyxcbiAgICAgIHJlMiA9IC9iKi9nO1xuICBuYXRpdmVFeGVjLmNhbGwocmUxLCAnYScpO1xuICBuYXRpdmVFeGVjLmNhbGwocmUyLCAnYScpO1xuICByZXR1cm4gcmUxW0xBU1RfSU5ERVhdICE9PSAwIHx8IHJlMltMQVNUX0lOREVYXSAhPT0gMDtcbn0pKCk7XG5cbi8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwLCBjb3BpZWQgZnJvbSBlczUtc2hpbSdzIFN0cmluZyNzcGxpdCBwYXRjaC5cbnZhciBOUENHX0lOQ0xVREVEID0gLygpPz8vLmV4ZWMoJycpWzFdICE9PSB1bmRlZmluZWQ7XG5cbnZhciBQQVRDSCA9IFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyB8fCBOUENHX0lOQ0xVREVEO1xuXG5pZiAoUEFUQ0gpIHtcbiAgcGF0Y2hlZEV4ZWMgPSBmdW5jdGlvbiBleGVjKHN0cikge1xuICAgIHZhciByZSA9IHRoaXM7XG4gICAgdmFyIGxhc3RJbmRleCwgcmVDb3B5LCBtYXRjaCwgaTtcblxuICAgIGlmIChOUENHX0lOQ0xVREVEKSB7XG4gICAgICByZUNvcHkgPSBuZXcgUmVnRXhwKCdeJyArIHJlLnNvdXJjZSArICckKD8hXFxcXHMpJywgcmVnZXhwRmxhZ3MuY2FsbChyZSkpO1xuICAgIH1cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HKSBsYXN0SW5kZXggPSByZVtMQVNUX0lOREVYXTtcblxuICAgIG1hdGNoID0gbmF0aXZlRXhlYy5jYWxsKHJlLCBzdHIpO1xuXG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyAmJiBtYXRjaCkge1xuICAgICAgcmVbTEFTVF9JTkRFWF0gPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuIC8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG4iLCJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBPYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhlYWQsIGxhc3QsIG5vdGlmeTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICBmbiA9IGhlYWQuZm47XG4gICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIE5vZGUuanNcbiAgaWYgKGlzTm9kZSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyBTYWZhcmkgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIH0gZWxzZSBpZiAoT2JzZXJ2ZXIgJiYgIShnbG9iYWwubmF2aWdhdG9yICYmIGdsb2JhbC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZSkpIHtcbiAgICB2YXIgdG9nZ2xlID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xuXG5mdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4vX3RvLWluZGV4Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xudmFyIERBVEFfVklFVyA9ICdEYXRhVmlldyc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCEnO1xudmFyIFdST05HX0lOREVYID0gJ1dyb25nIGluZGV4ISc7XG52YXIgJEFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG52YXIgJERhdGFWaWV3ID0gZ2xvYmFsW0RBVEFfVklFV107XG52YXIgTWF0aCA9IGdsb2JhbC5NYXRoO1xudmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3ctcmVzdHJpY3RlZC1uYW1lc1xudmFyIEluZmluaXR5ID0gZ2xvYmFsLkluZmluaXR5O1xudmFyIEJhc2VCdWZmZXIgPSAkQXJyYXlCdWZmZXI7XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIExOMiA9IE1hdGguTE4yO1xudmFyIEJVRkZFUiA9ICdidWZmZXInO1xudmFyIEJZVEVfTEVOR1RIID0gJ2J5dGVMZW5ndGgnO1xudmFyIEJZVEVfT0ZGU0VUID0gJ2J5dGVPZmZzZXQnO1xudmFyICRCVUZGRVIgPSBERVNDUklQVE9SUyA/ICdfYicgOiBCVUZGRVI7XG52YXIgJExFTkdUSCA9IERFU0NSSVBUT1JTID8gJ19sJyA6IEJZVEVfTEVOR1RIO1xudmFyICRPRkZTRVQgPSBERVNDUklQVE9SUyA/ICdfbycgOiBCWVRFX09GRlNFVDtcblxuLy8gSUVFRTc1NCBjb252ZXJzaW9ucyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2llZWU3NTRcbmZ1bmN0aW9uIHBhY2tJRUVFNzU0KHZhbHVlLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShuQnl0ZXMpO1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIHJ0ID0gbUxlbiA9PT0gMjMgPyBwb3coMiwgLTI0KSAtIHBvdygyLCAtNzcpIDogMDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCB2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwID8gMSA6IDA7XG4gIHZhciBlLCBtLCBjO1xuICB2YWx1ZSA9IGFicyh2YWx1ZSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgaWYgKHZhbHVlICE9IHZhbHVlIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBtID0gdmFsdWUgIT0gdmFsdWUgPyAxIDogMDtcbiAgICBlID0gZU1heDtcbiAgfSBlbHNlIHtcbiAgICBlID0gZmxvb3IobG9nKHZhbHVlKSAvIExOMik7XG4gICAgaWYgKHZhbHVlICogKGMgPSBwb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLTtcbiAgICAgIGMgKj0gMjtcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogcG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrO1xuICAgICAgYyAvPSAyO1xuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwO1xuICAgICAgZSA9IGVNYXg7XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIHBvdygyLCBtTGVuKTtcbiAgICAgIGUgPSBlICsgZUJpYXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIHBvdygyLCBlQmlhcyAtIDEpICogcG93KDIsIG1MZW4pO1xuICAgICAgZSA9IDA7XG4gICAgfVxuICB9XG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltpKytdID0gbSAmIDI1NSwgbSAvPSAyNTYsIG1MZW4gLT0gOCk7XG4gIGUgPSBlIDw8IG1MZW4gfCBtO1xuICBlTGVuICs9IG1MZW47XG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW2krK10gPSBlICYgMjU1LCBlIC89IDI1NiwgZUxlbiAtPSA4KTtcbiAgYnVmZmVyWy0taV0gfD0gcyAqIDEyODtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cbmZ1bmN0aW9uIHVucGFja0lFRUU3NTQoYnVmZmVyLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDE7XG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBuQml0cyA9IGVMZW4gLSA3O1xuICB2YXIgaSA9IG5CeXRlcyAtIDE7XG4gIHZhciBzID0gYnVmZmVyW2ktLV07XG4gIHZhciBlID0gcyAmIDEyNztcbiAgdmFyIG07XG4gIHMgPj49IDc7XG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBtID0gZSAmICgxIDw8IC1uQml0cykgLSAxO1xuICBlID4+PSAtbkJpdHM7XG4gIG5CaXRzICs9IG1MZW47XG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXM7XG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogcyA/IC1JbmZpbml0eSA6IEluZmluaXR5O1xuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgcG93KDIsIG1MZW4pO1xuICAgIGUgPSBlIC0gZUJpYXM7XG4gIH0gcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBwb3coMiwgZSAtIG1MZW4pO1xufVxuXG5mdW5jdGlvbiB1bnBhY2tJMzIoYnl0ZXMpIHtcbiAgcmV0dXJuIGJ5dGVzWzNdIDw8IDI0IHwgYnl0ZXNbMl0gPDwgMTYgfCBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG59XG5mdW5jdGlvbiBwYWNrSTgoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0kxNihpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZiwgaXQgPj4gOCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0kzMihpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZiwgaXQgPj4gOCAmIDB4ZmYsIGl0ID4+IDE2ICYgMHhmZiwgaXQgPj4gMjQgJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tGNjQoaXQpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KGl0LCA1MiwgOCk7XG59XG5mdW5jdGlvbiBwYWNrRjMyKGl0KSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChpdCwgMjMsIDQpO1xufVxuXG5mdW5jdGlvbiBhZGRHZXR0ZXIoQywga2V5LCBpbnRlcm5hbCkge1xuICBkUChDW1BST1RPVFlQRV0sIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXNbaW50ZXJuYWxdOyB9IH0pO1xufVxuXG5mdW5jdGlvbiBnZXQodmlldywgYnl0ZXMsIGluZGV4LCBpc0xpdHRsZUVuZGlhbikge1xuICB2YXIgbnVtSW5kZXggPSAraW5kZXg7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgobnVtSW5kZXgpO1xuICBpZiAoaW50SW5kZXggKyBieXRlcyA+IHZpZXdbJExFTkdUSF0pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgc3RvcmUgPSB2aWV3WyRCVUZGRVJdLl9iO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF07XG4gIHZhciBwYWNrID0gc3RvcmUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgYnl0ZXMpO1xuICByZXR1cm4gaXNMaXR0bGVFbmRpYW4gPyBwYWNrIDogcGFjay5yZXZlcnNlKCk7XG59XG5mdW5jdGlvbiBzZXQodmlldywgYnl0ZXMsIGluZGV4LCBjb252ZXJzaW9uLCB2YWx1ZSwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4O1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KG51bUluZGV4KTtcbiAgaWYgKGludEluZGV4ICsgYnl0ZXMgPiB2aWV3WyRMRU5HVEhdKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYjtcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyB2aWV3WyRPRkZTRVRdO1xuICB2YXIgcGFjayA9IGNvbnZlcnNpb24oK3ZhbHVlKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlczsgaSsrKSBzdG9yZVtzdGFydCArIGldID0gcGFja1tpc0xpdHRsZUVuZGlhbiA/IGkgOiBieXRlcyAtIGkgLSAxXTtcbn1cblxuaWYgKCEkdHlwZWQuQUJWKSB7XG4gICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuICAgIHZhciBieXRlTGVuZ3RoID0gdG9JbmRleChsZW5ndGgpO1xuICAgIHRoaXMuX2IgPSBhcnJheUZpbGwuY2FsbChuZXcgQXJyYXkoYnl0ZUxlbmd0aCksIDApO1xuICAgIHRoaXNbJExFTkdUSF0gPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gICREYXRhVmlldyA9IGZ1bmN0aW9uIERhdGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuICAgIGFuSW5zdGFuY2UoYnVmZmVyLCAkQXJyYXlCdWZmZXIsIERBVEFfVklFVyk7XG4gICAgdmFyIGJ1ZmZlckxlbmd0aCA9IGJ1ZmZlclskTEVOR1RIXTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9JbnRlZ2VyKGJ5dGVPZmZzZXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0IScpO1xuICAgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgPyBidWZmZXJMZW5ndGggLSBvZmZzZXQgOiB0b0xlbmd0aChieXRlTGVuZ3RoKTtcbiAgICBpZiAob2Zmc2V0ICsgYnl0ZUxlbmd0aCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHRoaXNbJEJVRkZFUl0gPSBidWZmZXI7XG4gICAgdGhpc1skT0ZGU0VUXSA9IG9mZnNldDtcbiAgICB0aGlzWyRMRU5HVEhdID0gYnl0ZUxlbmd0aDtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICBhZGRHZXR0ZXIoJEFycmF5QnVmZmVyLCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQlVGRkVSLCAnX2InKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQllURV9PRkZTRVQsICdfbycpO1xuICB9XG5cbiAgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBnZXRJbnQ4OiBmdW5jdGlvbiBnZXRJbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF0gPDwgMjQgPj4gMjQ7XG4gICAgfSxcbiAgICBnZXRVaW50ODogZnVuY3Rpb24gZ2V0VWludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXTtcbiAgICB9LFxuICAgIGdldEludDE2OiBmdW5jdGlvbiBnZXRJbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKTtcbiAgICAgIHJldHVybiAoYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdKSA8PCAxNiA+PiAxNjtcbiAgICB9LFxuICAgIGdldFVpbnQxNjogZnVuY3Rpb24gZ2V0VWludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbiAgICB9LFxuICAgIGdldEludDMyOiBmdW5jdGlvbiBnZXRJbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSTMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pKTtcbiAgICB9LFxuICAgIGdldFVpbnQzMjogZnVuY3Rpb24gZ2V0VWludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJMzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSkpID4+PiAwO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQzMjogZnVuY3Rpb24gZ2V0RmxvYXQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgMjMsIDQpO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQ2NDogZnVuY3Rpb24gZ2V0RmxvYXQ2NChieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgNTIsIDgpO1xuICAgIH0sXG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJOCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0k4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRJbnQxNjogZnVuY3Rpb24gc2V0SW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSTE2LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQxNjogZnVuY3Rpb24gc2V0VWludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0kxNiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRJbnQzMjogZnVuY3Rpb24gc2V0SW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSTMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQzMjogZnVuY3Rpb24gc2V0VWludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0kzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDMyOiBmdW5jdGlvbiBzZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0YzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDY0OiBmdW5jdGlvbiBzZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgcGFja0Y2NCwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICRBcnJheUJ1ZmZlcigxKTtcbiAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgJEFycmF5QnVmZmVyKC0xKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgfSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBuZXcgJEFycmF5QnVmZmVyKDEuNSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbmV3ICRBcnJheUJ1ZmZlcihOYU4pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIHJldHVybiAkQXJyYXlCdWZmZXIubmFtZSAhPSBBUlJBWV9CVUZGRVI7XG4gIH0pKSB7XG4gICAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlcik7XG4gICAgICByZXR1cm4gbmV3IEJhc2VCdWZmZXIodG9JbmRleChsZW5ndGgpKTtcbiAgICB9O1xuICAgIHZhciBBcnJheUJ1ZmZlclByb3RvID0gJEFycmF5QnVmZmVyW1BST1RPVFlQRV0gPSBCYXNlQnVmZmVyW1BST1RPVFlQRV07XG4gICAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZUJ1ZmZlciksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajspIHtcbiAgICAgIGlmICghKChrZXkgPSBrZXlzW2orK10pIGluICRBcnJheUJ1ZmZlcikpIGhpZGUoJEFycmF5QnVmZmVyLCBrZXksIEJhc2VCdWZmZXJba2V5XSk7XG4gICAgfVxuICAgIGlmICghTElCUkFSWSkgQXJyYXlCdWZmZXJQcm90by5jb25zdHJ1Y3RvciA9ICRBcnJheUJ1ZmZlcjtcbiAgfVxuICAvLyBpT1MgU2FmYXJpIDcueCBidWdcbiAgdmFyIHZpZXcgPSBuZXcgJERhdGFWaWV3KG5ldyAkQXJyYXlCdWZmZXIoMikpO1xuICB2YXIgJHNldEludDggPSAkRGF0YVZpZXdbUFJPVE9UWVBFXS5zZXRJbnQ4O1xuICB2aWV3LnNldEludDgoMCwgMjE0NzQ4MzY0OCk7XG4gIHZpZXcuc2V0SW50OCgxLCAyMTQ3NDgzNjQ5KTtcbiAgaWYgKHZpZXcuZ2V0SW50OCgwKSB8fCAhdmlldy5nZXRJbnQ4KDEpKSByZWRlZmluZUFsbCgkRGF0YVZpZXdbUFJPVE9UWVBFXSwge1xuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9XG4gIH0sIHRydWUpO1xufVxuc2V0VG9TdHJpbmdUYWcoJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuc2V0VG9TdHJpbmdUYWcoJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuaGlkZSgkRGF0YVZpZXdbUFJPVE9UWVBFXSwgJHR5cGVkLlZJRVcsIHRydWUpO1xuZXhwb3J0c1tBUlJBWV9CVUZGRVJdID0gJEFycmF5QnVmZmVyO1xuZXhwb3J0c1tEQVRBX1ZJRVddID0gJERhdGFWaWV3O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRlbnRyaWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKGl0KSB7XG4gICAgcmV0dXJuICRlbnRyaWVzKGl0KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9lbmhhbmNlRXJyb3InKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRXJyb3IobWVzc2FnZSwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImh0dHBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaHR0cHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXJsXCIpOyIsIi8qKlxuICogTXVsdGloYXNoIGltcGxlbWVudGF0aW9uIGluIEphdmFTY3JpcHQuXG4gKlxuICogQG1vZHVsZSBtdWx0aWhhc2hcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGJzNTggPSByZXF1aXJlKCdiczU4JylcblxuY29uc3QgY3MgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpXG5cbmV4cG9ydHMubmFtZXMgPSBjcy5uYW1lc1xuZXhwb3J0cy5jb2RlcyA9IGNzLmNvZGVzXG5leHBvcnRzLmRlZmF1bHRMZW5ndGhzID0gY3MuZGVmYXVsdExlbmd0aHNcblxuY29uc3QgdmFyaW50ID0gcmVxdWlyZSgndmFyaW50JylcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBtdWx0aWhhc2ggdG8gYSBoZXggZW5jb2RlZCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGhhc2hcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMudG9IZXhTdHJpbmcgPSBmdW5jdGlvbiB0b0hleFN0cmluZyAoaGFzaCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihoYXNoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbXVzdCBiZSBwYXNzZWQgYSBidWZmZXInKVxuICB9XG5cbiAgcmV0dXJuIGhhc2gudG9TdHJpbmcoJ2hleCcpXG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgZ2l2ZW4gaGV4IGVuY29kZWQgc3RyaW5nIHRvIGEgbXVsdGloYXNoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICovXG5leHBvcnRzLmZyb21IZXhTdHJpbmcgPSBmdW5jdGlvbiBmcm9tSGV4U3RyaW5nIChoYXNoKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShoYXNoLCAnaGV4Jylcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBtdWx0aWhhc2ggdG8gYSBiYXNlNTggZW5jb2RlZCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGhhc2hcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMudG9CNThTdHJpbmcgPSBmdW5jdGlvbiB0b0I1OFN0cmluZyAoaGFzaCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihoYXNoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbXVzdCBiZSBwYXNzZWQgYSBidWZmZXInKVxuICB9XG5cbiAgcmV0dXJuIGJzNTguZW5jb2RlKGhhc2gpXG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgZ2l2ZW4gYmFzZTU4IGVuY29kZWQgc3RyaW5nIHRvIGEgbXVsdGloYXNoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcn0gaGFzaFxuICogQHJldHVybnMge0J1ZmZlcn1cbiAqL1xuZXhwb3J0cy5mcm9tQjU4U3RyaW5nID0gZnVuY3Rpb24gZnJvbUI1OFN0cmluZyAoaGFzaCkge1xuICBsZXQgZW5jb2RlZCA9IGhhc2hcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihoYXNoKSkge1xuICAgIGVuY29kZWQgPSBoYXNoLnRvU3RyaW5nKClcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShiczU4LmRlY29kZShlbmNvZGVkKSlcbn1cblxuLyoqXG4gKiBEZWNvZGUgYSBoYXNoIGZyb20gdGhlIGdpdmVuIG11bHRpaGFzaC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmXG4gKiBAcmV0dXJucyB7e2NvZGU6IG51bWJlciwgbmFtZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlciwgZGlnZXN0OiBCdWZmZXJ9fSByZXN1bHRcbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUgKGJ1Zikge1xuICBpZiAoIShCdWZmZXIuaXNCdWZmZXIoYnVmKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpaGFzaCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgfVxuXG4gIGlmIChidWYubGVuZ3RoIDwgMykge1xuICAgIHRocm93IG5ldyBFcnJvcignbXVsdGloYXNoIHRvbyBzaG9ydC4gbXVzdCBiZSA+IDMgYnl0ZXMuJylcbiAgfVxuXG4gIGNvbnN0IGNvZGUgPSB2YXJpbnQuZGVjb2RlKGJ1ZilcbiAgaWYgKCFleHBvcnRzLmlzVmFsaWRDb2RlKGNvZGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdWx0aWhhc2ggdW5rbm93biBmdW5jdGlvbiBjb2RlOiAweCR7Y29kZS50b1N0cmluZygxNil9YClcbiAgfVxuICBidWYgPSBidWYuc2xpY2UodmFyaW50LmRlY29kZS5ieXRlcylcblxuICBjb25zdCBsZW4gPSB2YXJpbnQuZGVjb2RlKGJ1ZilcbiAgaWYgKGxlbiA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG11bHRpaGFzaCBpbnZhbGlkIGxlbmd0aDogMHgke2xlbi50b1N0cmluZygxNil9YClcbiAgfVxuICBidWYgPSBidWYuc2xpY2UodmFyaW50LmRlY29kZS5ieXRlcylcblxuICBpZiAoYnVmLmxlbmd0aCAhPT0gbGVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdWx0aWhhc2ggbGVuZ3RoIGluY29uc2lzdGVudDogMHgke2J1Zi50b1N0cmluZygnaGV4Jyl9YClcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29kZTogY29kZSxcbiAgICBuYW1lOiBjcy5jb2Rlc1tjb2RlXSxcbiAgICBsZW5ndGg6IGxlbixcbiAgICBkaWdlc3Q6IGJ1ZlxuICB9XG59XG5cbi8qKlxuICogIEVuY29kZSBhIGhhc2ggZGlnZXN0IGFsb25nIHdpdGggdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBjb2RlLlxuICpcbiAqID4gKipOb3RlOioqIHRoZSBsZW5ndGggaXMgZGVyaXZlZCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGRpZ2VzdCBpdHNlbGYuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGRpZ2VzdFxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBjb2RlXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aF1cbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlIChkaWdlc3QsIGNvZGUsIGxlbmd0aCkge1xuICBpZiAoIWRpZ2VzdCB8fCBjb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpaGFzaCBlbmNvZGUgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIGFyZ3M6IGRpZ2VzdCwgY29kZScpXG4gIH1cblxuICAvLyBlbnN1cmUgaXQncyBhIGhhc2hmdW5jdGlvbiBjb2RlLlxuICBjb25zdCBoYXNoZm4gPSBleHBvcnRzLmNvZXJjZUNvZGUoY29kZSlcblxuICBpZiAoIShCdWZmZXIuaXNCdWZmZXIoZGlnZXN0KSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RpZ2VzdCBzaG91bGQgYmUgYSBCdWZmZXInKVxuICB9XG5cbiAgaWYgKGxlbmd0aCA9PSBudWxsKSB7XG4gICAgbGVuZ3RoID0gZGlnZXN0Lmxlbmd0aFxuICB9XG5cbiAgaWYgKGxlbmd0aCAmJiBkaWdlc3QubGVuZ3RoICE9PSBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RpZ2VzdCBsZW5ndGggc2hvdWxkIGJlIGVxdWFsIHRvIHNwZWNpZmllZCBsZW5ndGguJylcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtcbiAgICBCdWZmZXIuZnJvbSh2YXJpbnQuZW5jb2RlKGhhc2hmbikpLFxuICAgIEJ1ZmZlci5mcm9tKHZhcmludC5lbmNvZGUobGVuZ3RoKSksXG4gICAgZGlnZXN0XG4gIF0pXG59XG5cbi8qKlxuICogQ29udmVydHMgYSBoYXNoIGZ1bmN0aW9uIG5hbWUgaW50byB0aGUgbWF0Y2hpbmcgY29kZS5cbiAqIElmIHBhc3NlZCBhIG51bWJlciBpdCB3aWxsIHJldHVybiB0aGUgbnVtYmVyIGlmIGl0J3MgYSB2YWxpZCBjb2RlLlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBuYW1lXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnRzLmNvZXJjZUNvZGUgPSBmdW5jdGlvbiBjb2VyY2VDb2RlIChuYW1lKSB7XG4gIGxldCBjb2RlID0gbmFtZVxuXG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoY3MubmFtZXNbbmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmdW5jdGlvbiBuYW1lZDogJHtuYW1lfWApXG4gICAgfVxuICAgIGNvZGUgPSBjcy5uYW1lc1tuYW1lXVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb2RlICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSGFzaCBmdW5jdGlvbiBjb2RlIHNob3VsZCBiZSBhIG51bWJlci4gR290OiAke2NvZGV9YClcbiAgfVxuXG4gIGlmIChjcy5jb2Rlc1tjb2RlXSA9PT0gdW5kZWZpbmVkICYmICFleHBvcnRzLmlzQXBwQ29kZShjb2RlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGZ1bmN0aW9uIGNvZGU6ICR7Y29kZX1gKVxuICB9XG5cbiAgcmV0dXJuIGNvZGVcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2V0aGVyIGEgY29kZSBpcyBwYXJ0IG9mIHRoZSBhcHAgcmFuZ2VcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydHMuaXNBcHBDb2RlID0gZnVuY3Rpb24gYXBwQ29kZSAoY29kZSkge1xuICByZXR1cm4gY29kZSA+IDAgJiYgY29kZSA8IDB4MTBcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG11bHRpaGFzaCBjb2RlIGlzIHZhbGlkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0cy5pc1ZhbGlkQ29kZSA9IGZ1bmN0aW9uIHZhbGlkQ29kZSAoY29kZSkge1xuICBpZiAoZXhwb3J0cy5pc0FwcENvZGUoY29kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKGNzLmNvZGVzW2NvZGVdKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSB2YWxpZCBtdWx0aWhhc2guIFRocm93cyBhbiBlcnJvciBpZiBpdCBpcyBub3QgdmFsaWQuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IG11bHRpaGFzaFxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZSAobXVsdGloYXNoKSB7XG4gIGV4cG9ydHMuZGVjb2RlKG11bHRpaGFzaCkgLy8gdGhyb3dzIGlmIGJhZC5cbn1cbmV4cG9ydHMudmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4vKipcbiAqIFJldHVybnMgYSBwcmVmaXggZnJvbSBhIHZhbGlkIG11bHRpaGFzaC4gVGhyb3dzIGFuIGVycm9yIGlmIGl0IGlzIG5vdCB2YWxpZC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gbXVsdGloYXNoXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydHMucHJlZml4ID0gZnVuY3Rpb24gcHJlZml4IChtdWx0aWhhc2gpIHtcbiAgdmFsaWRhdGUobXVsdGloYXNoKVxuXG4gIHJldHVybiBtdWx0aWhhc2guc2xpY2UoMCwgMilcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBQcm90b2NvbHMgKHByb3RvKSB7XG4gIGlmICh0eXBlb2YgKHByb3RvKSA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAoUHJvdG9jb2xzLmNvZGVzW3Byb3RvXSkge1xuICAgICAgcmV0dXJuIFByb3RvY29scy5jb2Rlc1twcm90b11cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIHByb3RvY29sIHdpdGggY29kZTogJyArIHByb3RvKVxuICB9IGVsc2UgaWYgKHR5cGVvZiAocHJvdG8pID09PSAnc3RyaW5nJyB8fCBwcm90byBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgIGlmIChQcm90b2NvbHMubmFtZXNbcHJvdG9dKSB7XG4gICAgICByZXR1cm4gUHJvdG9jb2xzLm5hbWVzW3Byb3RvXVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignbm8gcHJvdG9jb2wgd2l0aCBuYW1lOiAnICsgcHJvdG8pXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcHJvdG9jb2wgaWQgdHlwZTogJyArIHByb3RvKVxufVxuXG5jb25zdCBWID0gLTFcblByb3RvY29scy5sZW5ndGhQcmVmaXhlZFZhclNpemUgPSBWXG5Qcm90b2NvbHMuViA9IFZcblxuUHJvdG9jb2xzLnRhYmxlID0gW1xuICBbNCwgMzIsICdpcDQnXSxcbiAgWzYsIDE2LCAndGNwJ10sXG4gIFszMywgMTYsICdkY2NwJ10sXG4gIFs0MSwgMTI4LCAnaXA2J10sXG4gIFs0MiwgViwgJ2lwNnpvbmUnXSxcbiAgWzUzLCBWLCAnZG5zJywgJ3Jlc29sdmFibGUnXSxcbiAgWzU0LCBWLCAnZG5zNCcsICdyZXNvbHZhYmxlJ10sXG4gIFs1NSwgViwgJ2RuczYnLCAncmVzb2x2YWJsZSddLFxuICBbNTYsIFYsICdkbnNhZGRyJywgJ3Jlc29sdmFibGUnXSxcbiAgWzEzMiwgMTYsICdzY3RwJ10sXG4gIFsyNzMsIDE2LCAndWRwJ10sXG4gIFsyNzUsIDAsICdwMnAtd2VicnRjLXN0YXInXSxcbiAgWzI3NiwgMCwgJ3AycC13ZWJydGMtZGlyZWN0J10sXG4gIFsyNzcsIDAsICdwMnAtc3RhcmR1c3QnXSxcbiAgWzI5MCwgMCwgJ3AycC1jaXJjdWl0J10sXG4gIFszMDEsIDAsICd1ZHQnXSxcbiAgWzMwMiwgMCwgJ3V0cCddLFxuICBbNDAwLCBWLCAndW5peCcsIGZhbHNlLCAncGF0aCddLFxuICAvLyBgaXBmc2AgaXMgYWRkZWQgYmVmb3JlIGBwMnBgIGZvciBsZWdhY3kgc3VwcG9ydC5cbiAgLy8gQWxsIHRleHQgcmVwcmVzZW50YXRpb25zIHdpbGwgZGVmYXVsdCB0byBgcDJwYCwgYnV0IGBpcGZzYCB3aWxsXG4gIC8vIHN0aWxsIGJlIHN1cHBvcnRlZFxuICBbNDIxLCBWLCAnaXBmcyddLFxuICAvLyBgcDJwYCBpcyB0aGUgcHJlZmVycmVkIG5hbWUgZm9yIDQyMSwgYW5kIGlzIG5vdyB0aGUgZGVmYXVsdFxuICBbNDIxLCBWLCAncDJwJ10sXG4gIFs0NDMsIDAsICdodHRwcyddLFxuICBbNDQ0LCA5NiwgJ29uaW9uJ10sXG4gIFs0NDUsIDI5NiwgJ29uaW9uMyddLFxuICBbNDQ2LCBWLCAnZ2FybGljNjQnXSxcbiAgWzQ2MCwgMCwgJ3F1aWMnXSxcbiAgWzQ3NywgMCwgJ3dzJ10sXG4gIFs0NzgsIDAsICd3c3MnXSxcbiAgWzQ3OSwgMCwgJ3AycC13ZWJzb2NrZXQtc3RhciddLFxuICBbNDgwLCAwLCAnaHR0cCddXG5dXG5cblByb3RvY29scy5uYW1lcyA9IHt9XG5Qcm90b2NvbHMuY29kZXMgPSB7fVxuXG4vLyBwb3B1bGF0ZSB0YWJsZXNcblByb3RvY29scy50YWJsZS5tYXAocm93ID0+IHtcbiAgY29uc3QgcHJvdG8gPSBwLmFwcGx5KG51bGwsIHJvdylcbiAgUHJvdG9jb2xzLmNvZGVzW3Byb3RvLmNvZGVdID0gcHJvdG9cbiAgUHJvdG9jb2xzLm5hbWVzW3Byb3RvLm5hbWVdID0gcHJvdG9cbn0pXG5cblByb3RvY29scy5vYmplY3QgPSBwXG5cbmZ1bmN0aW9uIHAgKGNvZGUsIHNpemUsIG5hbWUsIHJlc29sdmFibGUsIHBhdGgpIHtcbiAgcmV0dXJuIHtcbiAgICBjb2RlOiBjb2RlLFxuICAgIHNpemU6IHNpemUsXG4gICAgbmFtZTogbmFtZSxcbiAgICByZXNvbHZhYmxlOiBCb29sZWFuKHJlc29sdmFibGUpLFxuICAgIHBhdGg6IEJvb2xlYW4ocGF0aClcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb3RvY29sc1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IG1oID0gcmVxdWlyZSgnbXVsdGloYXNoZXMnKVxuY29uc3QgbXVsdGliYXNlID0gcmVxdWlyZSgnbXVsdGliYXNlJylcbmNvbnN0IG11bHRpY29kZWMgPSByZXF1aXJlKCdtdWx0aWNvZGVjJylcbmNvbnN0IGNvZGVjcyA9IHJlcXVpcmUoJ211bHRpY29kZWMvc3JjL2Jhc2UtdGFibGUuanNvbicpXG5jb25zdCBDSURVdGlsID0gcmVxdWlyZSgnLi9jaWQtdXRpbCcpXG5jb25zdCB3aXRoSXMgPSByZXF1aXJlKCdjbGFzcy1pcycpXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2VyaWFsaXplZENJRFxuICogQHBhcmFtIHtzdHJpbmd9IGNvZGVjXG4gKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvblxuICogQHBhcmFtIHtCdWZmZXJ9IG11bHRpaGFzaFxuICovXG5cbi8qKlxuICogVGVzdCBpZiB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSBDSUQuXG4gKiBAZnVuY3Rpb24gaXNDSURcbiAqIEBtZW1iZXJvZiBDSURcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7YW55fSBvdGhlclxuICogQHJldHVybnMge2Jvb2x9XG4gKi9cblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgYSBDSUQgYDxtYmFzZT48dmVyc2lvbj48bWNvZGVjPjxtaGFzaD5gXG4gKiAsIGFzIGRlZmluZWQgaW4gW2lwbGQvY2lkXShodHRwczovL2dpdGh1Yi5jb20vbXVsdGlmb3JtYXRzL2NpZCkuXG4gKiBAY2xhc3MgQ0lEXG4gKi9cbmNsYXNzIENJRCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgQ0lELlxuICAgKlxuICAgKiBUaGUgYWxnb3JpdGhtIGZvciBhcmd1bWVudCBpbnB1dCBpcyByb3VnaGx5OlxuICAgKiBgYGBcbiAgICogaWYgKGNpZClcbiAgICogICAtPiBjcmVhdGUgYSBjb3B5XG4gICAqIGVsc2UgaWYgKHN0cilcbiAgICogICBpZiAoMXN0IGNoYXIgaXMgb24gbXVsdGliYXNlIHRhYmxlKSAtPiBDSUQgU3RyaW5nXG4gICAqICAgZWxzZSAtPiBiczU4IGVuY29kZWQgbXVsdGloYXNoXG4gICAqIGVsc2UgaWYgKEJ1ZmZlcilcbiAgICogICBpZiAoMXN0IGJ5dGUgaXMgMCBvciAxKSAtPiBDSURcbiAgICogICBlbHNlIC0+IG11bHRpaGFzaFxuICAgKiBlbHNlIGlmIChOdW1iZXIpXG4gICAqICAgLT4gY29uc3RydWN0IENJRCBieSBwYXJ0c1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfENJRH0gdmVyc2lvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVjXVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gW211bHRpaGFzaF1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFttdWx0aWJhc2VOYW1lXVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBuZXcgQ0lEKDx2ZXJzaW9uPiwgPGNvZGVjPiwgPG11bHRpaGFzaD4sIDxtdWx0aWJhc2VOYW1lPilcbiAgICogbmV3IENJRCg8Y2lkU3RyPilcbiAgICogbmV3IENJRCg8Y2lkLmJ1ZmZlcj4pXG4gICAqIG5ldyBDSUQoPG11bHRpaGFzaD4pXG4gICAqIG5ldyBDSUQoPGJzNTggZW5jb2RlZCBtdWx0aWhhc2g+KVxuICAgKiBuZXcgQ0lEKDxjaWQ+KVxuICAgKi9cbiAgY29uc3RydWN0b3IgKHZlcnNpb24sIGNvZGVjLCBtdWx0aWhhc2gsIG11bHRpYmFzZU5hbWUpIHtcbiAgICBpZiAoX0NJRC5pc0NJRCh2ZXJzaW9uKSkge1xuICAgICAgLy8gdmVyc2lvbiBpcyBhbiBleGlzaW5nIENJRCBpbnN0YW5jZVxuICAgICAgY29uc3QgY2lkID0gdmVyc2lvblxuICAgICAgdGhpcy52ZXJzaW9uID0gY2lkLnZlcnNpb25cbiAgICAgIHRoaXMuY29kZWMgPSBjaWQuY29kZWNcbiAgICAgIHRoaXMubXVsdGloYXNoID0gQnVmZmVyLmZyb20oY2lkLm11bHRpaGFzaClcbiAgICAgIC8vIERlZmF1bHQgZ3VhcmQgZm9yIHdoZW4gYSBDSUQgPCAwLjcgaXMgcGFzc2VkIHdpdGggbm8gbXVsdGliYXNlTmFtZVxuICAgICAgdGhpcy5tdWx0aWJhc2VOYW1lID0gY2lkLm11bHRpYmFzZU5hbWUgfHwgKGNpZC52ZXJzaW9uID09PSAwID8gJ2Jhc2U1OGJ0YycgOiAnYmFzZTMyJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIGUuZy4gJ2Jhc2UzMicgb3IgZmFsc2VcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gbXVsdGliYXNlLmlzRW5jb2RlZCh2ZXJzaW9uKVxuICAgICAgaWYgKGJhc2VOYW1lKSB7XG4gICAgICAgIC8vIHZlcnNpb24gaXMgYSBDSUQgU3RyaW5nIGVuY29kZWQgd2l0aCBtdWx0aWJhc2UsIHNvIHYxXG4gICAgICAgIGNvbnN0IGNpZCA9IG11bHRpYmFzZS5kZWNvZGUodmVyc2lvbilcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gcGFyc2VJbnQoY2lkLnNsaWNlKDAsIDEpLnRvU3RyaW5nKCdoZXgnKSwgMTYpXG4gICAgICAgIHRoaXMuY29kZWMgPSBtdWx0aWNvZGVjLmdldENvZGVjKGNpZC5zbGljZSgxKSlcbiAgICAgICAgdGhpcy5tdWx0aWhhc2ggPSBtdWx0aWNvZGVjLnJtUHJlZml4KGNpZC5zbGljZSgxKSlcbiAgICAgICAgdGhpcy5tdWx0aWJhc2VOYW1lID0gYmFzZU5hbWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHZlcnNpb24gaXMgYSBiYXNlNThidGMgc3RyaW5nIG11bHRpaGFzaCwgc28gdjBcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gMFxuICAgICAgICB0aGlzLmNvZGVjID0gJ2RhZy1wYidcbiAgICAgICAgdGhpcy5tdWx0aWhhc2ggPSBtaC5mcm9tQjU4U3RyaW5nKHZlcnNpb24pXG4gICAgICAgIHRoaXMubXVsdGliYXNlTmFtZSA9ICdiYXNlNThidGMnXG4gICAgICB9XG4gICAgICBDSUQudmFsaWRhdGVDSUQodGhpcylcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RyaW5nJywgeyB2YWx1ZTogdmVyc2lvbiB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2ZXJzaW9uKSkge1xuICAgICAgY29uc3QgZmlyc3RCeXRlID0gdmVyc2lvbi5zbGljZSgwLCAxKVxuICAgICAgY29uc3QgdiA9IHBhcnNlSW50KGZpcnN0Qnl0ZS50b1N0cmluZygnaGV4JyksIDE2KVxuICAgICAgaWYgKHYgPT09IDEpIHtcbiAgICAgICAgLy8gdmVyc2lvbiBpcyBhIENJRCBidWZmZXJcbiAgICAgICAgY29uc3QgY2lkID0gdmVyc2lvblxuICAgICAgICB0aGlzLnZlcnNpb24gPSB2XG4gICAgICAgIHRoaXMuY29kZWMgPSBtdWx0aWNvZGVjLmdldENvZGVjKGNpZC5zbGljZSgxKSlcbiAgICAgICAgdGhpcy5tdWx0aWhhc2ggPSBtdWx0aWNvZGVjLnJtUHJlZml4KGNpZC5zbGljZSgxKSlcbiAgICAgICAgdGhpcy5tdWx0aWJhc2VOYW1lID0gJ2Jhc2UzMidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHZlcnNpb24gaXMgYSByYXcgbXVsdGloYXNoIGJ1ZmZlciwgc28gdjBcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gMFxuICAgICAgICB0aGlzLmNvZGVjID0gJ2RhZy1wYidcbiAgICAgICAgdGhpcy5tdWx0aWhhc2ggPSB2ZXJzaW9uXG4gICAgICAgIHRoaXMubXVsdGliYXNlTmFtZSA9ICdiYXNlNThidGMnXG4gICAgICB9XG4gICAgICBDSUQudmFsaWRhdGVDSUQodGhpcylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIG90aGVyd2lzZSwgYXNzZW1ibGUgdGhlIENJRCBmcm9tIHRoZSBwYXJhbWV0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb25cblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5jb2RlYyA9IGNvZGVjXG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7QnVmZmVyfVxuICAgICAqL1xuICAgIHRoaXMubXVsdGloYXNoID0gbXVsdGloYXNoXG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubXVsdGliYXNlTmFtZSA9IG11bHRpYmFzZU5hbWUgfHwgKHZlcnNpb24gPT09IDAgPyAnYmFzZTU4YnRjJyA6ICdiYXNlMzInKVxuXG4gICAgQ0lELnZhbGlkYXRlQ0lEKHRoaXMpXG4gIH1cblxuICAvKipcbiAgICogVGhlIENJRCBhcyBhIGBCdWZmZXJgXG4gICAqXG4gICAqIEByZXR1cm4ge0J1ZmZlcn1cbiAgICogQHJlYWRvbmx5XG4gICAqXG4gICAqIEBtZW1iZXJPZiBDSURcbiAgICovXG4gIGdldCBidWZmZXIgKCkge1xuICAgIGxldCBidWZmZXIgPSB0aGlzLl9idWZmZXJcblxuICAgIGlmICghYnVmZmVyKSB7XG4gICAgICBpZiAodGhpcy52ZXJzaW9uID09PSAwKSB7XG4gICAgICAgIGJ1ZmZlciA9IHRoaXMubXVsdGloYXNoXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmVyc2lvbiA9PT0gMSkge1xuICAgICAgICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgICBCdWZmZXIuZnJvbSgnMDEnLCAnaGV4JyksXG4gICAgICAgICAgbXVsdGljb2RlYy5nZXRDb2RlVmFyaW50KHRoaXMuY29kZWMpLFxuICAgICAgICAgIHRoaXMubXVsdGloYXNoXG4gICAgICAgIF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHZlcnNpb24nKVxuICAgICAgfVxuXG4gICAgICAvLyBDYWNoZSB0aGlzIGJ1ZmZlciBzbyBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgcmVjcmVhdGVkXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19idWZmZXInLCB7IHZhbHVlOiBidWZmZXIgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwcmVmaXggb2YgdGhlIENJRC5cbiAgICpcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICogQHJlYWRvbmx5XG4gICAqL1xuICBnZXQgcHJlZml4ICgpIHtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbXG4gICAgICBCdWZmZXIuZnJvbShgMCR7dGhpcy52ZXJzaW9ufWAsICdoZXgnKSxcbiAgICAgIG11bHRpY29kZWMuZ2V0Q29kZVZhcmludCh0aGlzLmNvZGVjKSxcbiAgICAgIG1oLnByZWZpeCh0aGlzLm11bHRpaGFzaClcbiAgICBdKVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gYSBDSUQgb2YgdmVyc2lvbiBgMGAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDSUR9XG4gICAqL1xuICB0b1YwICgpIHtcbiAgICBpZiAodGhpcy5jb2RlYyAhPT0gJ2RhZy1wYicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBub24gZGFnLXBiIENJRCB0byBDSUR2MCcpXG4gICAgfVxuXG4gICAgY29uc3QgeyBuYW1lLCBsZW5ndGggfSA9IG1oLmRlY29kZSh0aGlzLm11bHRpaGFzaClcblxuICAgIGlmIChuYW1lICE9PSAnc2hhMi0yNTYnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IG5vbiBzaGEyLTI1NiBtdWx0aWhhc2ggQ0lEIHRvIENJRHYwJylcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29udmVydCBub24gMzIgYnl0ZSBtdWx0aWhhc2ggQ0lEIHRvIENJRHYwJylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IF9DSUQoMCwgdGhpcy5jb2RlYywgdGhpcy5tdWx0aWhhc2gpXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBhIENJRCBvZiB2ZXJzaW9uIGAxYC5cbiAgICpcbiAgICogQHJldHVybnMge0NJRH1cbiAgICovXG4gIHRvVjEgKCkge1xuICAgIHJldHVybiBuZXcgX0NJRCgxLCB0aGlzLmNvZGVjLCB0aGlzLm11bHRpaGFzaClcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgdGhlIENJRCBpbnRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jhc2U9dGhpcy5tdWx0aWJhc2VOYW1lXSAtIEJhc2UgZW5jb2RpbmcgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgdG9CYXNlRW5jb2RlZFN0cmluZyAoYmFzZSA9IHRoaXMubXVsdGliYXNlTmFtZSkge1xuICAgIGlmICh0aGlzLnN0cmluZyAmJiBiYXNlID09PSB0aGlzLm11bHRpYmFzZU5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0cmluZ1xuICAgIH1cbiAgICBsZXQgc3RyID0gbnVsbFxuICAgIGlmICh0aGlzLnZlcnNpb24gPT09IDApIHtcbiAgICAgIGlmIChiYXNlICE9PSAnYmFzZTU4YnRjJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBzdXBwb3J0ZWQgd2l0aCBDSUR2MCwgdG8gc3VwcG9ydCBkaWZmZXJlbnQgYmFzZXMsIHBsZWFzZSBtaWdyYXRlIHRoZSBpbnN0YW5jZSBkbyBDSUR2MSwgeW91IGNhbiBkbyB0aGF0IHRocm91Z2ggY2lkLnRvVjEoKScpXG4gICAgICB9XG4gICAgICBzdHIgPSBtaC50b0I1OFN0cmluZyh0aGlzLm11bHRpaGFzaClcbiAgICB9IGVsc2UgaWYgKHRoaXMudmVyc2lvbiA9PT0gMSkge1xuICAgICAgc3RyID0gbXVsdGliYXNlLmVuY29kZShiYXNlLCB0aGlzLmJ1ZmZlcikudG9TdHJpbmcoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHZlcnNpb24nKVxuICAgIH1cbiAgICBpZiAoYmFzZSA9PT0gdGhpcy5tdWx0aWJhc2VOYW1lKSB7XG4gICAgICAvLyBjYWNoZSB0aGUgc3RyaW5nIHZhbHVlXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0cmluZycsIHsgdmFsdWU6IHN0ciB9KVxuICAgIH1cbiAgICByZXR1cm4gc3RyXG4gIH1cblxuICB0b1N0cmluZyAoYmFzZSkge1xuICAgIHJldHVybiB0aGlzLnRvQmFzZUVuY29kZWRTdHJpbmcoYmFzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdG8gYSBwbGFpbiBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTZXJpYWxpemVkQ0lEfVxuICAgKi9cbiAgdG9KU09OICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZWM6IHRoaXMuY29kZWMsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICBoYXNoOiB0aGlzLm11bHRpaGFzaFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIGVxdWFsaXR5IHdpdGggYW5vdGhlciBDSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7Q0lEfSBvdGhlclxuICAgKiBAcmV0dXJucyB7Ym9vbH1cbiAgICovXG4gIGVxdWFscyAob3RoZXIpIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlYyA9PT0gb3RoZXIuY29kZWMgJiZcbiAgICAgIHRoaXMudmVyc2lvbiA9PT0gb3RoZXIudmVyc2lvbiAmJlxuICAgICAgdGhpcy5tdWx0aWhhc2guZXF1YWxzKG90aGVyLm11bHRpaGFzaClcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0IGlmIHRoZSBnaXZlbiBpbnB1dCBpcyBhIHZhbGlkIENJRCBvYmplY3QuXG4gICAqIFRocm93cyBpZiBpdCBpcyBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBvdGhlclxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyB2YWxpZGF0ZUNJRCAob3RoZXIpIHtcbiAgICBjb25zdCBlcnJvck1zZyA9IENJRFV0aWwuY2hlY2tDSURDb21wb25lbnRzKG90aGVyKVxuICAgIGlmIChlcnJvck1zZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTXNnKVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBfQ0lEID0gd2l0aElzKENJRCwge1xuICBjbGFzc05hbWU6ICdDSUQnLFxuICBzeW1ib2xOYW1lOiAnQGlwbGQvanMtY2lkL0NJRCdcbn0pXG5cbl9DSUQuY29kZWNzID0gY29kZWNzXG5cbm1vZHVsZS5leHBvcnRzID0gX0NJRFxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IE5vZGVGb3JtRGF0YSBmcm9tICdmb3JtLWRhdGEnO1xuaW1wb3J0IHN0cmVhbSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IHtcbiAgICBjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnNXaXRoRm9ybURhdGEsXG4gICAgdmFsaWRhdGVNZXRhZGF0YSxcbiAgICB2YWxpZGF0ZVBpbmF0YU9wdGlvbnNcbn0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZywgUGluYXRhTWV0YWRhdGEgfSBmcm9tICcuLi8uLic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluUG9saWN5SXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkZXNpcmVkUmVwbGljYXRpb25Db3VudDogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFPcHRpb25zIHtcbiAgICBob3N0Tm9kZXM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBjaWRWZXJzaW9uPzogMCB8IDE7XG4gICAgd3JhcFdpdGhEaXJlY3Rvcnk/OiBib29sZWFuO1xuICAgIGN1c3RvbVBpblBvbGljeT86IHtcbiAgICAgICAgcmVnaW9uczogUGluYXRhUGluUG9saWN5SXRlbVtdO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluUmVzcG9uc2Uge1xuICAgIElwZnNIYXNoOiBzdHJpbmc7XG4gICAgUGluU2l6ZTogbnVtYmVyO1xuICAgIFRpbWVzdGFtcDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFQaW5PcHRpb25zIHtcbiAgICBwaW5hdGFNZXRhZGF0YT86IFBpbmF0YU1ldGFkYXRhO1xuICAgIHBpbmF0YU9wdGlvbnM/OiBQaW5hdGFPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuY29uc3QgZW5kcG9pbnQgPSBgJHtiYXNlVXJsfS9waW5uaW5nL3BpbkZpbGVUb0lQRlNgO1xuXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkVG9JUEZTKFxuICAgIGNvbmZpZzogUGluYXRhQ29uZmlnLFxuICAgIGRhdGE6IE5vZGVGb3JtRGF0YSxcbiAgICBvcHRpb25zPzogUGluYXRhUGluT3B0aW9uc1xuKTogUHJvbWlzZTxQaW5hdGFQaW5SZXNwb25zZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGluYXRhTWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlTWV0YWRhdGEob3B0aW9ucy5waW5hdGFNZXRhZGF0YSk7XG4gICAgICAgICAgICBkYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICAncGluYXRhTWV0YWRhdGEnLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGluYXRhTWV0YWRhdGEpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMucGluYXRhT3B0aW9ucykge1xuICAgICAgICAgICAgdmFsaWRhdGVQaW5hdGFPcHRpb25zKG9wdGlvbnMucGluYXRhT3B0aW9ucyk7XG4gICAgICAgICAgICBkYXRhLmFwcGVuZCgncGluYXRhT3B0aW9ucycsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGluYXRhT3B0aW9ucykpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzV2l0aEZvcm1EYXRhKFxuICAgICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZ2V0Qm91bmRhcnkoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgdW5rbm93biBzZXJ2ZXIgcmVzcG9uc2Ugd2hpbGUgcGlubmluZyBGaWxlIHRvIElQRlM6ICR7cmVzdWx0fWBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0gaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGluRmlsZVRvSVBGUyhcbiAgICBjb25maWc6IFBpbmF0YUNvbmZpZyxcbiAgICByZWFkU3RyZWFtOiBhbnksXG4gICAgb3B0aW9ucz86IFBpbmF0YVBpbk9wdGlvbnNcbik6IFByb21pc2U8UGluYXRhUGluUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gbmV3IE5vZGVGb3JtRGF0YSgpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgb3B0aW9ucz8ucGluYXRhTWV0YWRhdGE/Lm5hbWUgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2Ygb3B0aW9ucy5waW5hdGFNZXRhZGF0YS5uYW1lID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbnMucGluYXRhTWV0YWRhdGEubmFtZS5sZW5ndGggPiAwXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ2ZpbGVuYW1lIHdhcyBub3QgcHJvdmlkZSwgbWFrZSBzdXJlIHRvIHByb3ZpZGUgb3B0aW9ucy5waW5hdGFNZXRhZGF0YS5uYW1lJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGEuYXBwZW5kKCdmaWxlJywgcmVhZFN0cmVhbSwge1xuICAgICAgICAgICAgZmlsZW5hbWU6IG9wdGlvbnMucGluYXRhTWV0YWRhdGEubmFtZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0gaW5zdGFuY2VvZiBzdHJlYW0uUmVhZGFibGUgfHxcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtIGluc3RhbmNlb2YgTm9kZUZvcm1EYXRhXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBFcnJvcigncmVhZFN0cmVhbSBpcyBub3QgYSByZWFkYWJsZSBzdHJlYW0gb3IgZm9ybSBkYXRhJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKHVwbG9hZFRvSVBGUyhjb25maWcsIGRhdGEsIG9wdGlvbnMpKTtcbiAgICB9KTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInBhdGhcIik7IiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCBxdWVyeUJ1aWxkZXIgZnJvbSAnLi9xdWVyeUJ1aWxkZXInO1xuaW1wb3J0IHsgUGluYXRhQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4nO1xuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFQaW5SZWdpb24ge1xuICAgIHJlZ2lvbklkOiBzdHJpbmc7XG4gICAgY3VycmVudFJlcGxpY2F0aW9uQ291bnQ6IG51bWJlcjtcbiAgICBkZXNpcmVkUmVwbGljYXRpb25Db3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YU1ldGFkYXRhIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9XG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YU1ldGFkYXRhRmlsdGVyIHtcbiAgICBuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGtleXZhbHVlczogeyBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuICAgICAgICBvcDogc3RyaW5nO1xuICAgIH0gfVxufVxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFQaW4ge1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgaXBmc19waW5faGFzaDogc3RyaW5nO1xuICAgIHNpemU6IG51bWJlcjtcbiAgICB1c2VyX2lkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgZGF0ZV9waW5uZWQ6IHN0cmluZztcbiAgICBkYXRlX3VucGlubmVkOiBzdHJpbmcgfCBudWxsO1xuICAgIG1ldGFkYXRhOiBQaW5hdGFNZXRhZGF0YSxcbiAgICByZWdpb25zOiBQaW5hdGFQaW5SZWdpb25bXTtcbn1cblxuZXhwb3J0IHR5cGUgUGluYXRhUGluTGlzdEZpbHRlck9wdGlvbnMgPSB7XG4gICAgaGFzaENvbnRhaW5zPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHBpblN0YXJ0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHBpbkVuZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB1bnBpblN0YXJ0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHVucGluRW5kPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHBpblNpemVNaW4/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgcGluU2l6ZU1heD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBzdGF0dXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcGFnZUxpbWl0PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBhZ2VPZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWV0YWRhdGE/OiBQaW5hdGFNZXRhZGF0YUZpbHRlciB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluTGlzdFJlc3BvbnNlIHtcbiAgICByb3dzOiBQaW5hdGFQaW5bXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGluTGlzdChcbiAgICBjb25maWc6IFBpbmF0YUNvbmZpZyxcbiAgICBmaWx0ZXJzOlBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zID0ge31cbik6IFByb21pc2U8UGluYXRhUGluTGlzdFJlc3BvbnNlPiB7XG4gICAgZmlsdGVycyA9IHsgLi4uZmlsdGVycywgLi4ueyBpbmNsdWRlQ291bnQ6ICdmYWxzZScgfSB9O1xuXG4gICAgY29uc3QgYmFzZUVuZHBvaW50ID0gYCR7YmFzZVVybH0vZGF0YS9waW5MaXN0YDtcbiAgICBjb25zdCBlbmRwb2ludCA9IHF1ZXJ5QnVpbGRlcihiYXNlRW5kcG9pbnQsIGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5nZXQoZW5kcG9pbnQsIHsgLi4uY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzKGNvbmZpZykgfSlcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgdW5rbm93biBzZXJ2ZXIgcmVzcG9uc2Ugd2hpbGUgYXR0ZW1wdGluZyB0byByZXRyaWV2ZSB1c2VyIHBpbiBsaXN0OiAke3Jlc3VsdH1gXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICByZWplY3QoZm9ybWF0dGVkRXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBpc0VudW0uY2FsbChTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCIvLyA3LjIuOSBTYW1lVmFsdWUoeCwgeSlcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmlzIHx8IGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICByZXR1cm4geCA9PT0geSA/IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5IDogeCAhPSB4ICYmIHkgIT0geTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xudmFyIGZhY3RvcmllcyA9IHt9O1xuXG52YXIgY29uc3RydWN0ID0gZnVuY3Rpb24gKEYsIGxlbiwgYXJncykge1xuICBpZiAoIShsZW4gaW4gZmFjdG9yaWVzKSkge1xuICAgIGZvciAodmFyIG4gPSBbXSwgaSA9IDA7IGkgPCBsZW47IGkrKykgbltpXSA9ICdhWycgKyBpICsgJ10nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgIGZhY3Rvcmllc1tsZW5dID0gRnVuY3Rpb24oJ0YsYScsICdyZXR1cm4gbmV3IEYoJyArIG4uam9pbignLCcpICsgJyknKTtcbiAgfSByZXR1cm4gZmFjdG9yaWVzW2xlbl0oRiwgYXJncyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmJpbmQgfHwgZnVuY3Rpb24gYmluZCh0aGF0IC8qICwgLi4uYXJncyAqLykge1xuICB2YXIgZm4gPSBhRnVuY3Rpb24odGhpcyk7XG4gIHZhciBwYXJ0QXJncyA9IGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB2YXIgYm91bmQgPSBmdW5jdGlvbiAoLyogYXJncy4uLiAqLykge1xuICAgIHZhciBhcmdzID0gcGFydEFyZ3MuY29uY2F0KGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGJvdW5kID8gY29uc3RydWN0KGZuLCBhcmdzLmxlbmd0aCwgYXJncykgOiBpbnZva2UoZm4sIGFyZ3MsIHRoYXQpO1xuICB9O1xuICBpZiAoaXNPYmplY3QoZm4ucHJvdG90eXBlKSkgYm91bmQucHJvdG90eXBlID0gZm4ucHJvdG90eXBlO1xuICByZXR1cm4gYm91bmQ7XG59O1xuIiwiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuIiwidmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLnBhcnNlSW50O1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIHdzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgaGV4ID0gL15bLStdPzBbeFhdLztcblxubW9kdWxlLmV4cG9ydHMgPSAkcGFyc2VJbnQod3MgKyAnMDgnKSAhPT0gOCB8fCAkcGFyc2VJbnQod3MgKyAnMHgxNicpICE9PSAyMiA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0ciwgcmFkaXgpIHtcbiAgdmFyIHN0cmluZyA9ICR0cmltKFN0cmluZyhzdHIpLCAzKTtcbiAgcmV0dXJuICRwYXJzZUludChzdHJpbmcsIChyYWRpeCA+Pj4gMCkgfHwgKGhleC50ZXN0KHN0cmluZykgPyAxNiA6IDEwKSk7XG59IDogJHBhcnNlSW50O1xuIiwidmFyICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucGFyc2VGbG9hdDtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4vX3N0cmluZy10cmltJykudHJpbTtcblxubW9kdWxlLmV4cG9ydHMgPSAxIC8gJHBhcnNlRmxvYXQocmVxdWlyZSgnLi9fc3RyaW5nLXdzJykgKyAnLTAnKSAhPT0gLUluZmluaXR5ID8gZnVuY3Rpb24gcGFyc2VGbG9hdChzdHIpIHtcbiAgdmFyIHN0cmluZyA9ICR0cmltKFN0cmluZyhzdHIpLCAzKTtcbiAgdmFyIHJlc3VsdCA9ICRwYXJzZUZsb2F0KHN0cmluZyk7XG4gIHJldHVybiByZXN1bHQgPT09IDAgJiYgc3RyaW5nLmNoYXJBdCgwKSA9PSAnLScgPyAtMCA6IHJlc3VsdDtcbn0gOiAkcGFyc2VGbG9hdDtcbiIsInZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBtc2cpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnbnVtYmVyJyAmJiBjb2YoaXQpICE9ICdOdW1iZXInKSB0aHJvdyBUeXBlRXJyb3IobXNnKTtcbiAgcmV0dXJuICtpdDtcbn07XG4iLCIvLyAyMC4xLjIuMyBOdW1iZXIuaXNJbnRlZ2VyKG51bWJlcilcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNJbnRlZ2VyKGl0KSB7XG4gIHJldHVybiAhaXNPYmplY3QoaXQpICYmIGlzRmluaXRlKGl0KSAmJiBmbG9vcihpdCkgPT09IGl0O1xufTtcbiIsIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgubG9nMXAgfHwgZnVuY3Rpb24gbG9nMXAoeCkge1xuICByZXR1cm4gKHggPSAreCkgPiAtMWUtOCAmJiB4IDwgMWUtOCA/IHggLSB4ICogeCAvIDIgOiBNYXRoLmxvZygxICsgeCk7XG59O1xuIiwiLy8gMjAuMi4yLjE2IE1hdGguZnJvdW5kKHgpXG52YXIgc2lnbiA9IHJlcXVpcmUoJy4vX21hdGgtc2lnbicpO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIEVQU0lMT04gPSBwb3coMiwgLTUyKTtcbnZhciBFUFNJTE9OMzIgPSBwb3coMiwgLTIzKTtcbnZhciBNQVgzMiA9IHBvdygyLCAxMjcpICogKDIgLSBFUFNJTE9OMzIpO1xudmFyIE1JTjMyID0gcG93KDIsIC0xMjYpO1xuXG52YXIgcm91bmRUaWVzVG9FdmVuID0gZnVuY3Rpb24gKG4pIHtcbiAgcmV0dXJuIG4gKyAxIC8gRVBTSUxPTiAtIDEgLyBFUFNJTE9OO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLmZyb3VuZCB8fCBmdW5jdGlvbiBmcm91bmQoeCkge1xuICB2YXIgJGFicyA9IE1hdGguYWJzKHgpO1xuICB2YXIgJHNpZ24gPSBzaWduKHgpO1xuICB2YXIgYSwgcmVzdWx0O1xuICBpZiAoJGFicyA8IE1JTjMyKSByZXR1cm4gJHNpZ24gKiByb3VuZFRpZXNUb0V2ZW4oJGFicyAvIE1JTjMyIC8gRVBTSUxPTjMyKSAqIE1JTjMyICogRVBTSUxPTjMyO1xuICBhID0gKDEgKyBFUFNJTE9OMzIgLyBFUFNJTE9OKSAqICRhYnM7XG4gIHJlc3VsdCA9IGEgLSAoYSAtICRhYnMpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIGlmIChyZXN1bHQgPiBNQVgzMiB8fCByZXN1bHQgIT0gcmVzdWx0KSByZXR1cm4gJHNpZ24gKiBJbmZpbml0eTtcbiAgcmV0dXJuICRzaWduICogcmVzdWx0O1xufTtcbiIsIi8vIDIwLjMuNC4zNiAvIDE1LjkuNS40MyBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZygpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSVNPU3RyaW5nID0gcmVxdWlyZSgnLi9fZGF0ZS10by1pc28tc3RyaW5nJyk7XG5cbi8vIFBoYW50b21KUyAvIG9sZCBXZWJLaXQgaGFzIGEgYnJva2VuIGltcGxlbWVudGF0aW9uc1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcgIT09IHRvSVNPU3RyaW5nKSwgJ0RhdGUnLCB7XG4gIHRvSVNPU3RyaW5nOiB0b0lTT1N0cmluZ1xufSk7XG4iLCIvLyAyMi4xLjIuMiAvIDE1LjQuMy4yIEFycmF5LmlzQXJyYXkoYXJnKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdBcnJheScsIHsgaXNBcnJheTogcmVxdWlyZSgnLi9faXMtYXJyYXknKSB9KTtcbiIsIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgJHNvcnQgPSBbXS5zb3J0O1xudmFyIHRlc3QgPSBbMSwgMiwgM107XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gSUU4LVxuICB0ZXN0LnNvcnQodW5kZWZpbmVkKTtcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFY4IGJ1Z1xuICB0ZXN0LnNvcnQobnVsbCk7XG4gIC8vIE9sZCBXZWJLaXRcbn0pIHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoJHNvcnQpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjUgQXJyYXkucHJvdG90eXBlLnNvcnQoY29tcGFyZWZuKVxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICAgIHJldHVybiBjb21wYXJlZm4gPT09IHVuZGVmaW5lZFxuICAgICAgPyAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpKVxuICAgICAgOiAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpLCBhRnVuY3Rpb24oY29tcGFyZWZuKSk7XG4gIH1cbn0pO1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYUxlbiwgbWVtbywgaXNSaWdodCkge1xuICBhRnVuY3Rpb24oY2FsbGJhY2tmbik7XG4gIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gIHZhciBzZWxmID0gSU9iamVjdChPKTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIGluZGV4ID0gaXNSaWdodCA/IGxlbmd0aCAtIDEgOiAwO1xuICB2YXIgaSA9IGlzUmlnaHQgPyAtMSA6IDE7XG4gIGlmIChhTGVuIDwgMikgZm9yICg7Oykge1xuICAgIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICBpbmRleCArPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGluZGV4ICs9IGk7XG4gICAgaWYgKGlzUmlnaHQgPyBpbmRleCA8IDAgOiBsZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgIH1cbiAgfVxuICBmb3IgKDtpc1JpZ2h0ID8gaW5kZXggPj0gMCA6IGxlbmd0aCA+IGluZGV4OyBpbmRleCArPSBpKSBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgIG1lbW8gPSBjYWxsYmFja2ZuKG1lbW8sIHNlbGZbaW5kZXhdLCBpbmRleCwgTyk7XG4gIH1cbiAgcmV0dXJuIG1lbW87XG59O1xuIiwiLy8gMjIuMS4zLjMgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCwgZW5kID0gdGhpcy5sZW5ndGgpXG4ndXNlIHN0cmljdCc7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gW10uY29weVdpdGhpbiB8fCBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCAvKiA9IDAgKi8sIHN0YXJ0IC8qID0gMCwgZW5kID0gQGxlbmd0aCAqLykge1xuICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICB2YXIgbGVuID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgdG8gPSB0b0Fic29sdXRlSW5kZXgodGFyZ2V0LCBsZW4pO1xuICB2YXIgZnJvbSA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuKTtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgY291bnQgPSBNYXRoLm1pbigoZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW4pKSAtIGZyb20sIGxlbiAtIHRvKTtcbiAgdmFyIGluYyA9IDE7XG4gIGlmIChmcm9tIDwgdG8gJiYgdG8gPCBmcm9tICsgY291bnQpIHtcbiAgICBpbmMgPSAtMTtcbiAgICBmcm9tICs9IGNvdW50IC0gMTtcbiAgICB0byArPSBjb3VudCAtIDE7XG4gIH1cbiAgd2hpbGUgKGNvdW50LS0gPiAwKSB7XG4gICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgIGVsc2UgZGVsZXRlIE9bdG9dO1xuICAgIHRvICs9IGluYztcbiAgICBmcm9tICs9IGluYztcbiAgfSByZXR1cm4gTztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi9fcmVnZXhwLWV4ZWMnKTtcbnJlcXVpcmUoJy4vX2V4cG9ydCcpKHtcbiAgdGFyZ2V0OiAnUmVnRXhwJyxcbiAgcHJvdG86IHRydWUsXG4gIGZvcmNlZDogcmVnZXhwRXhlYyAhPT0gLy4vLmV4ZWNcbn0sIHtcbiAgZXhlYzogcmVnZXhwRXhlY1xufSk7XG4iLCIvLyAyMS4yLjUuMyBnZXQgUmVnRXhwLnByb3RvdHlwZS5mbGFncygpXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAvLi9nLmZsYWdzICE9ICdnJykgcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZihSZWdFeHAucHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZXF1aXJlKCcuL19mbGFncycpXG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgTUFQID0gJ01hcCc7XG5cbi8vIDIzLjEgTWFwIE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKE1BUCwgZnVuY3Rpb24gKGdldCkge1xuICByZXR1cm4gZnVuY3Rpb24gTWFwKCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KVxuICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICB2YXIgZW50cnkgPSBzdHJvbmcuZ2V0RW50cnkodmFsaWRhdGUodGhpcywgTUFQKSwga2V5KTtcbiAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudjtcbiAgfSxcbiAgLy8gMjMuMS4zLjkgTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSA9PT0gMCA/IDAgOiBrZXksIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nLCB0cnVlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciAkaXRlckRlZmluZSA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBmYXN0S2V5ID0gcmVxdWlyZSgnLi9fbWV0YScpLmZhc3RLZXk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgU0laRSA9IERFU0NSSVBUT1JTID8gJ19zJyA6ICdzaXplJztcblxudmFyIGdldEVudHJ5ID0gZnVuY3Rpb24gKHRoYXQsIGtleSkge1xuICAvLyBmYXN0IGNhc2VcbiAgdmFyIGluZGV4ID0gZmFzdEtleShrZXkpO1xuICB2YXIgZW50cnk7XG4gIGlmIChpbmRleCAhPT0gJ0YnKSByZXR1cm4gdGhhdC5faVtpbmRleF07XG4gIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuICBmb3IgKGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubikge1xuICAgIGlmIChlbnRyeS5rID09IGtleSkgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX3QgPSBOQU1FOyAgICAgICAgIC8vIGNvbGxlY3Rpb24gdHlwZVxuICAgICAgdGhhdC5faSA9IGNyZWF0ZShudWxsKTsgLy8gaW5kZXhcbiAgICAgIHRoYXQuX2YgPSB1bmRlZmluZWQ7ICAgIC8vIGZpcnN0IGVudHJ5XG4gICAgICB0aGF0Ll9sID0gdW5kZWZpbmVkOyAgICAvLyBsYXN0IGVudHJ5XG4gICAgICB0aGF0W1NJWkVdID0gMDsgICAgICAgICAvLyBzaXplXG4gICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgfSk7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgLy8gMjMuMi4zLjIgU2V0LnByb3RvdHlwZS5jbGVhcigpXG4gICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICAgIGZvciAodmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKSwgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubikge1xuICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuICAgICAgICAgIGlmIChlbnRyeS5wKSBlbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuICAgICAgICB9XG4gICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGF0W1NJWkVdID0gMDtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG4gICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSk7XG4gICAgICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkubjtcbiAgICAgICAgICB2YXIgcHJldiA9IGVudHJ5LnA7XG4gICAgICAgICAgZGVsZXRlIHRoYXQuX2lbZW50cnkuaV07XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKHByZXYpIHByZXYubiA9IG5leHQ7XG4gICAgICAgICAgaWYgKG5leHQpIG5leHQucCA9IHByZXY7XG4gICAgICAgICAgaWYgKHRoYXQuX2YgPT0gZW50cnkpIHRoYXQuX2YgPSBuZXh0O1xuICAgICAgICAgIGlmICh0aGF0Ll9sID09IGVudHJ5KSB0aGF0Ll9sID0gcHJldjtcbiAgICAgICAgICB0aGF0W1NJWkVdLS07XG4gICAgICAgIH0gcmV0dXJuICEhZW50cnk7XG4gICAgICB9LFxuICAgICAgLy8gMjMuMi4zLjYgU2V0LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdmFsaWRhdGUodGhpcywgTkFNRSk7XG4gICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTtcbiAgICAgICAgdmFyIGVudHJ5O1xuICAgICAgICB3aGlsZSAoZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGlzLl9mKSB7XG4gICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTtcbiAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpXG4gICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuICEhZ2V0RW50cnkodmFsaWRhdGUodGhpcywgTkFNRSksIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHRoaXMsIE5BTUUpW1NJWkVdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDO1xuICB9LFxuICBkZWY6IGZ1bmN0aW9uICh0aGF0LCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICB2YXIgcHJldiwgaW5kZXg7XG4gICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBlbnRyeS52ID0gdmFsdWU7XG4gICAgLy8gY3JlYXRlIG5ldyBlbnRyeVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGF0Ll9sID0gZW50cnkgPSB7XG4gICAgICAgIGk6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLCAvLyA8LSBpbmRleFxuICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG4gICAgICAgIHY6IHZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuICAgICAgICBwOiBwcmV2ID0gdGhhdC5fbCwgICAgICAgICAgICAgLy8gPC0gcHJldmlvdXMgZW50cnlcbiAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcbiAgICAgICAgcjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHJlbW92ZWRcbiAgICAgIH07XG4gICAgICBpZiAoIXRoYXQuX2YpIHRoYXQuX2YgPSBlbnRyeTtcbiAgICAgIGlmIChwcmV2KSBwcmV2Lm4gPSBlbnRyeTtcbiAgICAgIHRoYXRbU0laRV0rKztcbiAgICAgIC8vIGFkZCB0byBpbmRleFxuICAgICAgaWYgKGluZGV4ICE9PSAnRicpIHRoYXQuX2lbaW5kZXhdID0gZW50cnk7XG4gICAgfSByZXR1cm4gdGhhdDtcbiAgfSxcbiAgZ2V0RW50cnk6IGdldEVudHJ5LFxuICBzZXRTdHJvbmc6IGZ1bmN0aW9uIChDLCBOQU1FLCBJU19NQVApIHtcbiAgICAvLyBhZGQgLmtleXMsIC52YWx1ZXMsIC5lbnRyaWVzLCBbQEBpdGVyYXRvcl1cbiAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG4gICAgJGl0ZXJEZWZpbmUoQywgTkFNRSwgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gICAgICB0aGlzLl90ID0gdmFsaWRhdGUoaXRlcmF0ZWQsIE5BTUUpOyAvLyB0YXJnZXRcbiAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7ICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgdmFyIGtpbmQgPSB0aGF0Ll9rO1xuICAgICAgdmFyIGVudHJ5ID0gdGhhdC5fbDtcbiAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDtcbiAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG4gICAgICBpZiAoIXRoYXQuX3QgfHwgISh0aGF0Ll9sID0gZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGF0Ll90Ll9mKSkge1xuICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuICAgICAgICB0aGF0Ll90ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gc3RlcCgxKTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiBzdGVwIGJ5IGtpbmRcbiAgICAgIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG4gICAgICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG4gICAgICByZXR1cm4gc3RlcCgwLCBbZW50cnkuaywgZW50cnkudl0pO1xuICAgIH0sIElTX01BUCA/ICdlbnRyaWVzJyA6ICd2YWx1ZXMnLCAhSVNfTUFQLCB0cnVlKTtcblxuICAgIC8vIGFkZCBbQEBzcGVjaWVzXSwgMjMuMS4yLjIsIDIzLjIuMi4yXG4gICAgc2V0U3BlY2llcyhOQU1FKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNFVCA9ICdTZXQnO1xuXG4vLyAyMy4yIFNldCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShTRVQsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIFNFVCksIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBlYWNoID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vX29iamVjdC1hc3NpZ24nKTtcbnZhciB3ZWFrID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi13ZWFrJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgSVNfSUUxMSA9ICFnbG9iYWwuQWN0aXZlWE9iamVjdCAmJiAnQWN0aXZlWE9iamVjdCcgaW4gZ2xvYmFsO1xudmFyIFdFQUtfTUFQID0gJ1dlYWtNYXAnO1xudmFyIGdldFdlYWsgPSBtZXRhLmdldFdlYWs7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gd2Vhay51ZnN0b3JlO1xudmFyIEludGVybmFsTWFwO1xuXG52YXIgd3JhcHBlciA9IGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gIH07XG59O1xuXG52YXIgbWV0aG9kcyA9IHtcbiAgLy8gMjMuMy4zLjMgV2Vha01hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIFdFQUtfTUFQKSkuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZGF0YSA/IGRhdGFbdGhpcy5faV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICAvLyAyMy4zLjMuNSBXZWFrTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX01BUCksIGtleSwgdmFsdWUpO1xuICB9XG59O1xuXG4vLyAyMy4zIFdlYWtNYXAgT2JqZWN0c1xudmFyICRXZWFrTWFwID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19NQVAsIHdyYXBwZXIsIG1ldGhvZHMsIHdlYWssIHRydWUsIHRydWUpO1xuXG4vLyBJRTExIFdlYWtNYXAgZnJvemVuIGtleXMgZml4XG5pZiAoTkFUSVZFX1dFQUtfTUFQICYmIElTX0lFMTEpIHtcbiAgSW50ZXJuYWxNYXAgPSB3ZWFrLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIFdFQUtfTUFQKTtcbiAgYXNzaWduKEludGVybmFsTWFwLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gIG1ldGEuTkVFRCA9IHRydWU7XG4gIGVhY2goWydkZWxldGUnLCAnaGFzJywgJ2dldCcsICdzZXQnXSwgZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBwcm90byA9ICRXZWFrTWFwLnByb3RvdHlwZTtcbiAgICB2YXIgbWV0aG9kID0gcHJvdG9ba2V5XTtcbiAgICByZWRlZmluZShwcm90bywga2V5LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgLy8gc3RvcmUgZnJvemVuIG9iamVjdHMgb24gaW50ZXJuYWwgd2Vha21hcCBzaGltXG4gICAgICBpZiAoaXNPYmplY3QoYSkgJiYgIWlzRXh0ZW5zaWJsZShhKSkge1xuICAgICAgICBpZiAoIXRoaXMuX2YpIHRoaXMuX2YgPSBuZXcgSW50ZXJuYWxNYXAoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zba2V5XShhLCBiKTtcbiAgICAgICAgcmV0dXJuIGtleSA9PSAnc2V0JyA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICAvLyBzdG9yZSBhbGwgdGhlIHJlc3Qgb24gbmF0aXZlIHdlYWttYXBcbiAgICAgIH0gcmV0dXJuIG1ldGhvZC5jYWxsKHRoaXMsIGEsIGIpO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGdldFdlYWsgPSByZXF1aXJlKCcuL19tZXRhJykuZ2V0V2VhaztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBjcmVhdGVBcnJheU1ldGhvZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKTtcbnZhciAkaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgYXJyYXlGaW5kID0gY3JlYXRlQXJyYXlNZXRob2QoNSk7XG52YXIgYXJyYXlGaW5kSW5kZXggPSBjcmVhdGVBcnJheU1ldGhvZCg2KTtcbnZhciBpZCA9IDA7XG5cbi8vIGZhbGxiYWNrIGZvciB1bmNhdWdodCBmcm96ZW4ga2V5c1xudmFyIHVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAodGhhdCkge1xuICByZXR1cm4gdGhhdC5fbCB8fCAodGhhdC5fbCA9IG5ldyBVbmNhdWdodEZyb3plblN0b3JlKCkpO1xufTtcbnZhciBVbmNhdWdodEZyb3plblN0b3JlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmEgPSBbXTtcbn07XG52YXIgZmluZFVuY2F1Z2h0RnJvemVuID0gZnVuY3Rpb24gKHN0b3JlLCBrZXkpIHtcbiAgcmV0dXJuIGFycmF5RmluZChzdG9yZS5hLCBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaXRbMF0gPT09IGtleTtcbiAgfSk7XG59O1xuVW5jYXVnaHRGcm96ZW5TdG9yZS5wcm90b3R5cGUgPSB7XG4gIGdldDogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBlbnRyeSA9IGZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICAgIGlmIChlbnRyeSkgcmV0dXJuIGVudHJ5WzFdO1xuICB9LFxuICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gISFmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBlbnRyeSA9IGZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICAgIGlmIChlbnRyeSkgZW50cnlbMV0gPSB2YWx1ZTtcbiAgICBlbHNlIHRoaXMuYS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0sXG4gICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGluZGV4ID0gYXJyYXlGaW5kSW5kZXgodGhpcy5hLCBmdW5jdGlvbiAoaXQpIHtcbiAgICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICAgIH0pO1xuICAgIGlmICh+aW5kZXgpIHRoaXMuYS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiAhIX5pbmRleDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAvLyBjb2xsZWN0aW9uIHR5cGVcbiAgICAgIHRoYXQuX2kgPSBpZCsrOyAgICAgIC8vIGNvbGxlY3Rpb24gaWRcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7IC8vIGxlYWsgc3RvcmUgZm9yIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RzXG4gICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgfSk7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIDIzLjMuMy4yIFdlYWtNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG4gICAgICAvLyAyMy40LjMuMyBXZWFrU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG4gICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmICRoYXMoZGF0YSwgdGhpcy5faSkgJiYgZGVsZXRlIGRhdGFbdGhpcy5faV07XG4gICAgICB9LFxuICAgICAgLy8gMjMuMy4zLjQgV2Vha01hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjQuMy40IFdlYWtTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICAgIGlmIChkYXRhID09PSB0cnVlKSByZXR1cm4gdW5jYXVnaHRGcm96ZW5TdG9yZSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSkuaGFzKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmICRoYXMoZGF0YSwgdGhpcy5faSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZGF0YSA9IGdldFdlYWsoYW5PYmplY3Qoa2V5KSwgdHJ1ZSk7XG4gICAgaWYgKGRhdGEgPT09IHRydWUpIHVuY2F1Z2h0RnJvemVuU3RvcmUodGhhdCkuc2V0KGtleSwgdmFsdWUpO1xuICAgIGVsc2UgZGF0YVt0aGF0Ll9pXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGF0O1xuICB9LFxuICB1ZnN0b3JlOiB1bmNhdWdodEZyb3plblN0b3JlXG59O1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbmRleFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09PSB1bmRlZmluZWQpIHJldHVybiAwO1xuICB2YXIgbnVtYmVyID0gdG9JbnRlZ2VyKGl0KTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKG51bWJlcik7XG4gIGlmIChudW1iZXIgIT09IGxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3JvbmcgbGVuZ3RoIScpO1xuICByZXR1cm4gbGVuZ3RoO1xufTtcbiIsIi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIFJlZmxlY3QgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5SZWZsZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBSZWZsZWN0ICYmIFJlZmxlY3Qub3duS2V5cyB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ09QTi5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICByZXR1cm4gZ2V0U3ltYm9scyA/IGtleXMuY29uY2F0KGdldFN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1mbGF0TWFwLyNzZWMtRmxhdHRlbkludG9BcnJheVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHJlcXVpcmUoJy4vX3drcycpKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcblxuZnVuY3Rpb24gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBzb3VyY2UsIHNvdXJjZUxlbiwgc3RhcnQsIGRlcHRoLCBtYXBwZXIsIHRoaXNBcmcpIHtcbiAgdmFyIHRhcmdldEluZGV4ID0gc3RhcnQ7XG4gIHZhciBzb3VyY2VJbmRleCA9IDA7XG4gIHZhciBtYXBGbiA9IG1hcHBlciA/IGN0eChtYXBwZXIsIHRoaXNBcmcsIDMpIDogZmFsc2U7XG4gIHZhciBlbGVtZW50LCBzcHJlYWRhYmxlO1xuXG4gIHdoaWxlIChzb3VyY2VJbmRleCA8IHNvdXJjZUxlbikge1xuICAgIGlmIChzb3VyY2VJbmRleCBpbiBzb3VyY2UpIHtcbiAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuXG4gICAgICBzcHJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoaXNPYmplY3QoZWxlbWVudCkpIHtcbiAgICAgICAgc3ByZWFkYWJsZSA9IGVsZW1lbnRbSVNfQ09OQ0FUX1NQUkVBREFCTEVdO1xuICAgICAgICBzcHJlYWRhYmxlID0gc3ByZWFkYWJsZSAhPT0gdW5kZWZpbmVkID8gISFzcHJlYWRhYmxlIDogaXNBcnJheShlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNwcmVhZGFibGUgJiYgZGVwdGggPiAwKSB7XG4gICAgICAgIHRhcmdldEluZGV4ID0gZmxhdHRlbkludG9BcnJheSh0YXJnZXQsIG9yaWdpbmFsLCBlbGVtZW50LCB0b0xlbmd0aChlbGVtZW50Lmxlbmd0aCksIHRhcmdldEluZGV4LCBkZXB0aCAtIDEpIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+PSAweDFmZmZmZmZmZmZmZmZmKSB0aHJvdyBUeXBlRXJyb3IoKTtcbiAgICAgICAgdGFyZ2V0W3RhcmdldEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldEluZGV4Kys7XG4gICAgfVxuICAgIHNvdXJjZUluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIHRhcmdldEluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5JbnRvQXJyYXk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcGFkLXN0YXJ0LWVuZFxudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgcmVwZWF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRoYXQsIG1heExlbmd0aCwgZmlsbFN0cmluZywgbGVmdCkge1xuICB2YXIgUyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgdmFyIHN0cmluZ0xlbmd0aCA9IFMubGVuZ3RoO1xuICB2YXIgZmlsbFN0ciA9IGZpbGxTdHJpbmcgPT09IHVuZGVmaW5lZCA/ICcgJyA6IFN0cmluZyhmaWxsU3RyaW5nKTtcbiAgdmFyIGludE1heExlbmd0aCA9IHRvTGVuZ3RoKG1heExlbmd0aCk7XG4gIGlmIChpbnRNYXhMZW5ndGggPD0gc3RyaW5nTGVuZ3RoIHx8IGZpbGxTdHIgPT0gJycpIHJldHVybiBTO1xuICB2YXIgZmlsbExlbiA9IGludE1heExlbmd0aCAtIHN0cmluZ0xlbmd0aDtcbiAgdmFyIHN0cmluZ0ZpbGxlciA9IHJlcGVhdC5jYWxsKGZpbGxTdHIsIE1hdGguY2VpbChmaWxsTGVuIC8gZmlsbFN0ci5sZW5ndGgpKTtcbiAgaWYgKHN0cmluZ0ZpbGxlci5sZW5ndGggPiBmaWxsTGVuKSBzdHJpbmdGaWxsZXIgPSBzdHJpbmdGaWxsZXIuc2xpY2UoMCwgZmlsbExlbik7XG4gIHJldHVybiBsZWZ0ID8gc3RyaW5nRmlsbGVyICsgUyA6IFMgKyBzdHJpbmdGaWxsZXI7XG59O1xuIiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdhc3luY0l0ZXJhdG9yJyk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBpc0VudW0gPSByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlzRW50cmllcykge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoaXQpO1xuICAgIHZhciBrZXlzID0gZ2V0S2V5cyhPKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSB7XG4gICAgICBrZXkgPSBrZXlzW2krK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IGlzRW51bS5jYWxsKE8sIGtleSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXNFbnRyaWVzID8gW2tleSwgT1trZXldXSA6IE9ba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTtcbiIsInZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyLCBJVEVSQVRPUikge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvck9mKGl0ZXIsIGZhbHNlLCByZXN1bHQucHVzaCwgcmVzdWx0LCBJVEVSQVRPUik7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnNjYWxlIHx8IGZ1bmN0aW9uIHNjYWxlKHgsIGluTG93LCBpbkhpZ2gsIG91dExvdywgb3V0SGlnaCkge1xuICBpZiAoXG4gICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgeCAhPSB4XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICB8fCBpbkxvdyAhPSBpbkxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgaW5IaWdoICE9IGluSGlnaFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgb3V0TG93ICE9IG91dExvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgfHwgb3V0SGlnaCAhPSBvdXRIaWdoXG4gICkgcmV0dXJuIE5hTjtcbiAgaWYgKHggPT09IEluZmluaXR5IHx8IHggPT09IC1JbmZpbml0eSkgcmV0dXJuIHg7XG4gIHJldHVybiAoeCAtIGluTG93KSAqIChvdXRIaWdoIC0gb3V0TG93KSAvIChpbkhpZ2ggLSBpbkxvdykgKyBvdXRMb3c7XG59O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzLCB2YWxpZGF0ZU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCBpc0lQRlMgZnJvbSAnaXMtaXBmcyc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4uLy4uL3V0aWwvZXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBQaW5hdGFDb25maWcgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBQaW5hdGFPcHRpb25zIH0gZnJvbSAnLi9waW5GaWxlVG9JUEZTJztcbmltcG9ydCB7IFBpbmF0YU1ldGFkYXRhIH0gZnJvbSAnLi4vZGF0YS9waW5MaXN0L3Bpbkxpc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpbkJ5SGFzaFBpbk9wdGlvbnMge1xuICAgIHBpbmF0YU1ldGFkYXRhPzogUGluYXRhTWV0YWRhdGE7XG4gICAgcGluYXRhT3B0aW9ucz86IFBpbmF0YU9wdGlvbnMgO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpbkJ5SGFzaFJlc3BvbnNlIHtcbiAgICBpZDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGlwZnNIYXNoOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwaW5CeUhhc2goY29uZmlnOiBQaW5hdGFDb25maWcsIGhhc2hUb1Bpbjogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghaGFzaFRvUGluKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGFzaFRvUGluIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBwaW5uaW5nIGJ5IGhhc2gnKTtcbiAgICB9XG4gICAgaWYgKCFpc0lQRlMuY2lkKGhhc2hUb1BpbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoYXNoVG9QaW4gdmFsdWUgaXMgYW4gaW52YWxpZCBJUEZTIENJRCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vcGlubmluZy9waW5CeUhhc2hgO1xuICAgIGNvbnN0IGJvZHkgOiB7XG4gICAgICAgIGhhc2hUb1BpbjogYW55LFxuICAgICAgICBwaW5hdGFPcHRpb25zOiBhbnksXG4gICAgICAgIHBpbmF0YU1ldGFkYXRhPzogYW55LFxuICAgIH0gPSB7XG4gICAgICAgIGhhc2hUb1BpbjogaGFzaFRvUGluLFxuICAgICAgICBwaW5hdGFPcHRpb25zOiB7fVxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucy5waW5hdGFPcHRpb25zKSB7XG4gICAgICAgICAgICBib2R5LnBpbmF0YU9wdGlvbnMgPSBvcHRpb25zLnBpbmF0YU9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucGluYXRhTWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlTWV0YWRhdGEob3B0aW9ucy5waW5hdGFNZXRhZGF0YSk7XG4gICAgICAgICAgICBib2R5LnBpbmF0YU1ldGFkYXRhID0gb3B0aW9ucy5waW5hdGFNZXRhZGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLnBvc3QoXG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB7Li4uY3JlYXRlQ29uZmlnRm9yQXhpb3NIZWFkZXJzKGNvbmZpZyl9KVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgdW5rbm93biBzZXJ2ZXIgcmVzcG9uc2Ugd2hpbGUgYWRkaW5nIHRvIHBpbiBxdWV1ZTogJHtyZXN1bHR9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3IgPSBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZWplY3QoZm9ybWF0dGVkRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgbm9ybWFsaXplSGVhZGVyTmFtZSA9IHJlcXVpcmUoJy4vaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lJyk7XG5cbnZhciBERUZBVUxUX0NPTlRFTlRfVFlQRSA9IHtcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG5mdW5jdGlvbiBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgdmFsdWUpIHtcbiAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzKSAmJiB1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzWydDb250ZW50LVR5cGUnXSkpIHtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRBZGFwdGVyKCkge1xuICB2YXIgYWRhcHRlcjtcbiAgaWYgKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBGb3IgYnJvd3NlcnMgdXNlIFhIUiBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMveGhyJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9jZXNzKSA9PT0gJ1tvYmplY3QgcHJvY2Vzc10nKSB7XG4gICAgLy8gRm9yIG5vZGUgdXNlIEhUVFAgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL2h0dHAnKTtcbiAgfVxuICByZXR1cm4gYWRhcHRlcjtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKTtcbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc09iamVjdChkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIHRyYW5zZm9ybVJlc3BvbnNlOiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2UoZGF0YSkge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZSkgeyAvKiBJZ25vcmUgKi8gfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dDogMCxcblxuICB4c3JmQ29va2llTmFtZTogJ1hTUkYtVE9LRU4nLFxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXG5cbiAgbWF4Q29udGVudExlbmd0aDogLTEsXG4gIG1heEJvZHlMZW5ndGg6IC0xLFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH1cbn07XG5cbmRlZmF1bHRzLmhlYWRlcnMgPSB7XG4gIGNvbW1vbjoge1xuICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ1xuICB9XG59O1xuXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHV0aWxzLm1lcmdlKERFRkFVTFRfQ09OVEVOVF9UWVBFKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuL2NyZWF0ZUVycm9yJyk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgdmFyIHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICBudWxsLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXBkYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcsIGVycm9yIGNvZGUsIGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IgdG8gdXBkYXRlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgZXJyb3IuY29uZmlnID0gY29uZmlnO1xuICBpZiAoY29kZSkge1xuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgZXJyb3IucmVxdWVzdCA9IHJlcXVlc3Q7XG4gIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gIGVycm9yLmlzQXhpb3NFcnJvciA9IHRydWU7XG5cbiAgZXJyb3IudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgY29kZTogdGhpcy5jb2RlXG4gICAgfTtcbiAgfTtcbiAgcmV0dXJuIGVycm9yO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzQWJzb2x1dGVVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvY29tYmluZVVSTHMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn07XG4iLCJ2YXIgdXJsID0gcmVxdWlyZShcInVybFwiKTtcbnZhciBVUkwgPSB1cmwuVVJMO1xudmFyIGh0dHAgPSByZXF1aXJlKFwiaHR0cFwiKTtcbnZhciBodHRwcyA9IHJlcXVpcmUoXCJodHRwc1wiKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoXCJzdHJlYW1cIikuV3JpdGFibGU7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoXCIuL2RlYnVnXCIpO1xuXG4vLyBDcmVhdGUgaGFuZGxlcnMgdGhhdCBwYXNzIGV2ZW50cyBmcm9tIG5hdGl2ZSByZXF1ZXN0c1xudmFyIGV2ZW50SGFuZGxlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuW1wiYWJvcnRcIiwgXCJhYm9ydGVkXCIsIFwiY29ubmVjdFwiLCBcImVycm9yXCIsIFwic29ja2V0XCIsIFwidGltZW91dFwiXS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICBldmVudEhhbmRsZXJzW2V2ZW50XSA9IGZ1bmN0aW9uIChhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgdGhpcy5fcmVkaXJlY3RhYmxlLmVtaXQoZXZlbnQsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICB9O1xufSk7XG5cbi8vIEVycm9yIHR5cGVzIHdpdGggY29kZXNcbnZhciBSZWRpcmVjdGlvbkVycm9yID0gY3JlYXRlRXJyb3JUeXBlKFxuICBcIkVSUl9GUl9SRURJUkVDVElPTl9GQUlMVVJFXCIsXG4gIFwiXCJcbik7XG52YXIgVG9vTWFueVJlZGlyZWN0c0Vycm9yID0gY3JlYXRlRXJyb3JUeXBlKFxuICBcIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFNcIixcbiAgXCJNYXhpbXVtIG51bWJlciBvZiByZWRpcmVjdHMgZXhjZWVkZWRcIlxuKTtcbnZhciBNYXhCb2R5TGVuZ3RoRXhjZWVkZWRFcnJvciA9IGNyZWF0ZUVycm9yVHlwZShcbiAgXCJFUlJfRlJfTUFYX0JPRFlfTEVOR1RIX0VYQ0VFREVEXCIsXG4gIFwiUmVxdWVzdCBib2R5IGxhcmdlciB0aGFuIG1heEJvZHlMZW5ndGggbGltaXRcIlxuKTtcbnZhciBXcml0ZUFmdGVyRW5kRXJyb3IgPSBjcmVhdGVFcnJvclR5cGUoXG4gIFwiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkRcIixcbiAgXCJ3cml0ZSBhZnRlciBlbmRcIlxuKTtcblxuLy8gQW4gSFRUUChTKSByZXF1ZXN0IHRoYXQgY2FuIGJlIHJlZGlyZWN0ZWRcbmZ1bmN0aW9uIFJlZGlyZWN0YWJsZVJlcXVlc3Qob3B0aW9ucywgcmVzcG9uc2VDYWxsYmFjaykge1xuICAvLyBJbml0aWFsaXplIHRoZSByZXF1ZXN0XG4gIFdyaXRhYmxlLmNhbGwodGhpcyk7XG4gIHRoaXMuX3Nhbml0aXplT3B0aW9ucyhvcHRpb25zKTtcbiAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMuX2VuZGVkID0gZmFsc2U7XG4gIHRoaXMuX2VuZGluZyA9IGZhbHNlO1xuICB0aGlzLl9yZWRpcmVjdENvdW50ID0gMDtcbiAgdGhpcy5fcmVkaXJlY3RzID0gW107XG4gIHRoaXMuX3JlcXVlc3RCb2R5TGVuZ3RoID0gMDtcbiAgdGhpcy5fcmVxdWVzdEJvZHlCdWZmZXJzID0gW107XG5cbiAgLy8gQXR0YWNoIGEgY2FsbGJhY2sgaWYgcGFzc2VkXG4gIGlmIChyZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgdGhpcy5vbihcInJlc3BvbnNlXCIsIHJlc3BvbnNlQ2FsbGJhY2spO1xuICB9XG5cbiAgLy8gUmVhY3QgdG8gcmVzcG9uc2VzIG9mIG5hdGl2ZSByZXF1ZXN0c1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHRoaXMuX29uTmF0aXZlUmVzcG9uc2UgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICBzZWxmLl9wcm9jZXNzUmVzcG9uc2UocmVzcG9uc2UpO1xuICB9O1xuXG4gIC8vIFBlcmZvcm0gdGhlIGZpcnN0IHJlcXVlc3RcbiAgdGhpcy5fcGVyZm9ybVJlcXVlc3QoKTtcbn1cblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShXcml0YWJsZS5wcm90b3R5cGUpO1xuXG4vLyBXcml0ZXMgYnVmZmVyZWQgZGF0YSB0byB0aGUgY3VycmVudCBuYXRpdmUgcmVxdWVzdFxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIC8vIFdyaXRpbmcgaXMgbm90IGFsbG93ZWQgaWYgZW5kIGhhcyBiZWVuIGNhbGxlZFxuICBpZiAodGhpcy5fZW5kaW5nKSB7XG4gICAgdGhyb3cgbmV3IFdyaXRlQWZ0ZXJFbmRFcnJvcigpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgaW5wdXQgYW5kIHNoaWZ0IHBhcmFtZXRlcnMgaWYgbmVjZXNzYXJ5XG4gIGlmICghKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiICYmIChcImxlbmd0aFwiIGluIGRhdGEpKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJkYXRhIHNob3VsZCBiZSBhIHN0cmluZywgQnVmZmVyIG9yIFVpbnQ4QXJyYXlcIik7XG4gIH1cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY2FsbGJhY2sgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICAvLyBJZ25vcmUgZW1wdHkgYnVmZmVycywgc2luY2Ugd3JpdGluZyB0aGVtIGRvZXNuJ3QgaW52b2tlIHRoZSBjYWxsYmFja1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzIyMDY2XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIE9ubHkgd3JpdGUgd2hlbiB3ZSBkb24ndCBleGNlZWQgdGhlIG1heGltdW0gYm9keSBsZW5ndGhcbiAgaWYgKHRoaXMuX3JlcXVlc3RCb2R5TGVuZ3RoICsgZGF0YS5sZW5ndGggPD0gdGhpcy5fb3B0aW9ucy5tYXhCb2R5TGVuZ3RoKSB7XG4gICAgdGhpcy5fcmVxdWVzdEJvZHlMZW5ndGggKz0gZGF0YS5sZW5ndGg7XG4gICAgdGhpcy5fcmVxdWVzdEJvZHlCdWZmZXJzLnB1c2goeyBkYXRhOiBkYXRhLCBlbmNvZGluZzogZW5jb2RpbmcgfSk7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3Qud3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKTtcbiAgfVxuICAvLyBFcnJvciB3aGVuIHdlIGV4Y2VlZCB0aGUgbWF4aW11bSBib2R5IGxlbmd0aFxuICBlbHNlIHtcbiAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgTWF4Qm9keUxlbmd0aEV4Y2VlZGVkRXJyb3IoKSk7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG59O1xuXG4vLyBFbmRzIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIC8vIFNoaWZ0IHBhcmFtZXRlcnMgaWYgbmVjZXNzYXJ5XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY2FsbGJhY2sgPSBkYXRhO1xuICAgIGRhdGEgPSBlbmNvZGluZyA9IG51bGw7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjYWxsYmFjayA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIC8vIFdyaXRlIGRhdGEgaWYgbmVlZGVkIGFuZCBlbmRcbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhpcy5fZW5kZWQgPSB0aGlzLl9lbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMuX2N1cnJlbnRSZXF1ZXN0LmVuZChudWxsLCBudWxsLCBjYWxsYmFjayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjdXJyZW50UmVxdWVzdCA9IHRoaXMuX2N1cnJlbnRSZXF1ZXN0O1xuICAgIHRoaXMud3JpdGUoZGF0YSwgZW5jb2RpbmcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX2VuZGVkID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRSZXF1ZXN0LmVuZChudWxsLCBudWxsLCBjYWxsYmFjayk7XG4gICAgfSk7XG4gICAgdGhpcy5fZW5kaW5nID0gdHJ1ZTtcbiAgfVxufTtcblxuLy8gU2V0cyBhIGhlYWRlciB2YWx1ZSBvbiB0aGUgY3VycmVudCBuYXRpdmUgcmVxdWVzdFxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUuc2V0SGVhZGVyID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMuX29wdGlvbnMuaGVhZGVyc1tuYW1lXSA9IHZhbHVlO1xuICB0aGlzLl9jdXJyZW50UmVxdWVzdC5zZXRIZWFkZXIobmFtZSwgdmFsdWUpO1xufTtcblxuLy8gQ2xlYXJzIGEgaGVhZGVyIHZhbHVlIG9uIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5yZW1vdmVIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSkge1xuICBkZWxldGUgdGhpcy5fb3B0aW9ucy5oZWFkZXJzW25hbWVdO1xuICB0aGlzLl9jdXJyZW50UmVxdWVzdC5yZW1vdmVIZWFkZXIobmFtZSk7XG59O1xuXG4vLyBHbG9iYWwgdGltZW91dCBmb3IgYWxsIHVuZGVybHlpbmcgcmVxdWVzdHNcblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLnNldFRpbWVvdXQgPSBmdW5jdGlvbiAobXNlY3MsIGNhbGxiYWNrKSB7XG4gIGlmIChjYWxsYmFjaykge1xuICAgIHRoaXMub25jZShcInRpbWVvdXRcIiwgY2FsbGJhY2spO1xuICB9XG5cbiAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgc3RhcnRUaW1lcih0aGlzLCBtc2Vjcyk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuX2N1cnJlbnRSZXF1ZXN0Lm9uY2UoXCJzb2NrZXRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgc3RhcnRUaW1lcihzZWxmLCBtc2Vjcyk7XG4gICAgfSk7XG4gIH1cblxuICB0aGlzLm9uY2UoXCJyZXNwb25zZVwiLCBjbGVhclRpbWVyKTtcbiAgdGhpcy5vbmNlKFwiZXJyb3JcIiwgY2xlYXJUaW1lcik7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBzdGFydFRpbWVyKHJlcXVlc3QsIG1zZWNzKSB7XG4gIGNsZWFyVGltZW91dChyZXF1ZXN0Ll90aW1lb3V0KTtcbiAgcmVxdWVzdC5fdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIHJlcXVlc3QuZW1pdChcInRpbWVvdXRcIik7XG4gIH0sIG1zZWNzKTtcbn1cblxuZnVuY3Rpb24gY2xlYXJUaW1lcigpIHtcbiAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO1xufVxuXG4vLyBQcm94eSBhbGwgb3RoZXIgcHVibGljIENsaWVudFJlcXVlc3QgbWV0aG9kc1xuW1xuICBcImFib3J0XCIsIFwiZmx1c2hIZWFkZXJzXCIsIFwiZ2V0SGVhZGVyXCIsXG4gIFwic2V0Tm9EZWxheVwiLCBcInNldFNvY2tldEtlZXBBbGl2ZVwiLFxuXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXF1ZXN0W21ldGhvZF0oYSwgYik7XG4gIH07XG59KTtcblxuLy8gUHJveHkgYWxsIHB1YmxpYyBDbGllbnRSZXF1ZXN0IHByb3BlcnRpZXNcbltcImFib3J0ZWRcIiwgXCJjb25uZWN0aW9uXCIsIFwic29ja2V0XCJdLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXF1ZXN0W3Byb3BlcnR5XTsgfSxcbiAgfSk7XG59KTtcblxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUuX3Nhbml0aXplT3B0aW9ucyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIC8vIEVuc3VyZSBoZWFkZXJzIGFyZSBhbHdheXMgcHJlc2VudFxuICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgIG9wdGlvbnMuaGVhZGVycyA9IHt9O1xuICB9XG5cbiAgLy8gU2luY2UgaHR0cC5yZXF1ZXN0IHRyZWF0cyBob3N0IGFzIGFuIGFsaWFzIG9mIGhvc3RuYW1lLFxuICAvLyBidXQgdGhlIHVybCBtb2R1bGUgaW50ZXJwcmV0cyBob3N0IGFzIGhvc3RuYW1lIHBsdXMgcG9ydCxcbiAgLy8gZWxpbWluYXRlIHRoZSBob3N0IHByb3BlcnR5IHRvIGF2b2lkIGNvbmZ1c2lvbi5cbiAgaWYgKG9wdGlvbnMuaG9zdCkge1xuICAgIC8vIFVzZSBob3N0bmFtZSBpZiBzZXQsIGJlY2F1c2UgaXQgaGFzIHByZWNlZGVuY2VcbiAgICBpZiAoIW9wdGlvbnMuaG9zdG5hbWUpIHtcbiAgICAgIG9wdGlvbnMuaG9zdG5hbWUgPSBvcHRpb25zLmhvc3Q7XG4gICAgfVxuICAgIGRlbGV0ZSBvcHRpb25zLmhvc3Q7XG4gIH1cblxuICAvLyBDb21wbGV0ZSB0aGUgVVJMIG9iamVjdCB3aGVuIG5lY2Vzc2FyeVxuICBpZiAoIW9wdGlvbnMucGF0aG5hbWUgJiYgb3B0aW9ucy5wYXRoKSB7XG4gICAgdmFyIHNlYXJjaFBvcyA9IG9wdGlvbnMucGF0aC5pbmRleE9mKFwiP1wiKTtcbiAgICBpZiAoc2VhcmNoUG9zIDwgMCkge1xuICAgICAgb3B0aW9ucy5wYXRobmFtZSA9IG9wdGlvbnMucGF0aDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBvcHRpb25zLnBhdGhuYW1lID0gb3B0aW9ucy5wYXRoLnN1YnN0cmluZygwLCBzZWFyY2hQb3MpO1xuICAgICAgb3B0aW9ucy5zZWFyY2ggPSBvcHRpb25zLnBhdGguc3Vic3RyaW5nKHNlYXJjaFBvcyk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vIEV4ZWN1dGVzIHRoZSBuZXh0IG5hdGl2ZSByZXF1ZXN0IChpbml0aWFsIG9yIHJlZGlyZWN0KVxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUuX3BlcmZvcm1SZXF1ZXN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBMb2FkIHRoZSBuYXRpdmUgcHJvdG9jb2xcbiAgdmFyIHByb3RvY29sID0gdGhpcy5fb3B0aW9ucy5wcm90b2NvbDtcbiAgdmFyIG5hdGl2ZVByb3RvY29sID0gdGhpcy5fb3B0aW9ucy5uYXRpdmVQcm90b2NvbHNbcHJvdG9jb2xdO1xuICBpZiAoIW5hdGl2ZVByb3RvY29sKSB7XG4gICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgbmV3IFR5cGVFcnJvcihcIlVuc3VwcG9ydGVkIHByb3RvY29sIFwiICsgcHJvdG9jb2wpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBJZiBzcGVjaWZpZWQsIHVzZSB0aGUgYWdlbnQgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdG9jb2xcbiAgLy8gKEhUVFAgYW5kIEhUVFBTIHVzZSBkaWZmZXJlbnQgdHlwZXMgb2YgYWdlbnRzKVxuICBpZiAodGhpcy5fb3B0aW9ucy5hZ2VudHMpIHtcbiAgICB2YXIgc2NoZW1lID0gcHJvdG9jb2wuc3Vic3RyKDAsIHByb3RvY29sLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMuX29wdGlvbnMuYWdlbnQgPSB0aGlzLl9vcHRpb25zLmFnZW50c1tzY2hlbWVdO1xuICB9XG5cbiAgLy8gQ3JlYXRlIHRoZSBuYXRpdmUgcmVxdWVzdFxuICB2YXIgcmVxdWVzdCA9IHRoaXMuX2N1cnJlbnRSZXF1ZXN0ID1cbiAgICAgICAgbmF0aXZlUHJvdG9jb2wucmVxdWVzdCh0aGlzLl9vcHRpb25zLCB0aGlzLl9vbk5hdGl2ZVJlc3BvbnNlKTtcbiAgdGhpcy5fY3VycmVudFVybCA9IHVybC5mb3JtYXQodGhpcy5fb3B0aW9ucyk7XG5cbiAgLy8gU2V0IHVwIGV2ZW50IGhhbmRsZXJzXG4gIHJlcXVlc3QuX3JlZGlyZWN0YWJsZSA9IHRoaXM7XG4gIGZvciAodmFyIGV2ZW50IGluIGV2ZW50SGFuZGxlcnMpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChldmVudCkge1xuICAgICAgcmVxdWVzdC5vbihldmVudCwgZXZlbnRIYW5kbGVyc1tldmVudF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVuZCBhIHJlZGlyZWN0ZWQgcmVxdWVzdFxuICAvLyAoVGhlIGZpcnN0IHJlcXVlc3QgbXVzdCBiZSBlbmRlZCBleHBsaWNpdGx5IHdpdGggUmVkaXJlY3RhYmxlUmVxdWVzdCNlbmQpXG4gIGlmICh0aGlzLl9pc1JlZGlyZWN0KSB7XG4gICAgLy8gV3JpdGUgdGhlIHJlcXVlc3QgZW50aXR5IGFuZCBlbmQuXG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYnVmZmVycyA9IHRoaXMuX3JlcXVlc3RCb2R5QnVmZmVycztcbiAgICAoZnVuY3Rpb24gd3JpdGVOZXh0KGVycm9yKSB7XG4gICAgICAvLyBPbmx5IHdyaXRlIGlmIHRoaXMgcmVxdWVzdCBoYXMgbm90IGJlZW4gcmVkaXJlY3RlZCB5ZXRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocmVxdWVzdCA9PT0gc2VsZi5fY3VycmVudFJlcXVlc3QpIHtcbiAgICAgICAgLy8gUmVwb3J0IGFueSB3cml0ZSBlcnJvcnNcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHNlbGYuZW1pdChcImVycm9yXCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXcml0ZSB0aGUgbmV4dCBidWZmZXIgaWYgdGhlcmUgYXJlIHN0aWxsIGxlZnRcbiAgICAgICAgZWxzZSBpZiAoaSA8IGJ1ZmZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGJ1ZmZlciA9IGJ1ZmZlcnNbaSsrXTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghcmVxdWVzdC5maW5pc2hlZCkge1xuICAgICAgICAgICAgcmVxdWVzdC53cml0ZShidWZmZXIuZGF0YSwgYnVmZmVyLmVuY29kaW5nLCB3cml0ZU5leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBFbmQgdGhlIHJlcXVlc3QgaWYgYGVuZGAgaGFzIGJlZW4gY2FsbGVkIG9uIHVzXG4gICAgICAgIGVsc2UgaWYgKHNlbGYuX2VuZGVkKSB7XG4gICAgICAgICAgcmVxdWVzdC5lbmQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0oKSk7XG4gIH1cbn07XG5cbi8vIFByb2Nlc3NlcyBhIHJlc3BvbnNlIGZyb20gdGhlIGN1cnJlbnQgbmF0aXZlIHJlcXVlc3RcblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLl9wcm9jZXNzUmVzcG9uc2UgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgLy8gU3RvcmUgdGhlIHJlZGlyZWN0ZWQgcmVzcG9uc2VcbiAgdmFyIHN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlO1xuICBpZiAodGhpcy5fb3B0aW9ucy50cmFja1JlZGlyZWN0cykge1xuICAgIHRoaXMuX3JlZGlyZWN0cy5wdXNoKHtcbiAgICAgIHVybDogdGhpcy5fY3VycmVudFVybCxcbiAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBzdGF0dXNDb2RlOiBzdGF0dXNDb2RlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gUkZDNzIzMcKnNi40OiBUaGUgM3h4IChSZWRpcmVjdGlvbikgY2xhc3Mgb2Ygc3RhdHVzIGNvZGUgaW5kaWNhdGVzXG4gIC8vIHRoYXQgZnVydGhlciBhY3Rpb24gbmVlZHMgdG8gYmUgdGFrZW4gYnkgdGhlIHVzZXIgYWdlbnQgaW4gb3JkZXIgdG9cbiAgLy8gZnVsZmlsbCB0aGUgcmVxdWVzdC4gSWYgYSBMb2NhdGlvbiBoZWFkZXIgZmllbGQgaXMgcHJvdmlkZWQsXG4gIC8vIHRoZSB1c2VyIGFnZW50IE1BWSBhdXRvbWF0aWNhbGx5IHJlZGlyZWN0IGl0cyByZXF1ZXN0IHRvIHRoZSBVUklcbiAgLy8gcmVmZXJlbmNlZCBieSB0aGUgTG9jYXRpb24gZmllbGQgdmFsdWUsXG4gIC8vIGV2ZW4gaWYgdGhlIHNwZWNpZmljIHN0YXR1cyBjb2RlIGlzIG5vdCB1bmRlcnN0b29kLlxuICB2YXIgbG9jYXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmxvY2F0aW9uO1xuICBpZiAobG9jYXRpb24gJiYgdGhpcy5fb3B0aW9ucy5mb2xsb3dSZWRpcmVjdHMgIT09IGZhbHNlICYmXG4gICAgICBzdGF0dXNDb2RlID49IDMwMCAmJiBzdGF0dXNDb2RlIDwgNDAwKSB7XG4gICAgLy8gQWJvcnQgdGhlIGN1cnJlbnQgcmVxdWVzdFxuICAgIHRoaXMuX2N1cnJlbnRSZXF1ZXN0LnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIHRoaXMuX2N1cnJlbnRSZXF1ZXN0Lm9uKFwiZXJyb3JcIiwgbm9vcCk7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3QuYWJvcnQoKTtcbiAgICAvLyBEaXNjYXJkIHRoZSByZW1haW5kZXIgb2YgdGhlIHJlc3BvbnNlIHRvIGF2b2lkIHdhaXRpbmcgZm9yIGRhdGFcbiAgICByZXNwb25zZS5kZXN0cm95KCk7XG5cbiAgICAvLyBSRkM3MjMxwqc2LjQ6IEEgY2xpZW50IFNIT1VMRCBkZXRlY3QgYW5kIGludGVydmVuZVxuICAgIC8vIGluIGN5Y2xpY2FsIHJlZGlyZWN0aW9ucyAoaS5lLiwgXCJpbmZpbml0ZVwiIHJlZGlyZWN0aW9uIGxvb3BzKS5cbiAgICBpZiAoKyt0aGlzLl9yZWRpcmVjdENvdW50ID4gdGhpcy5fb3B0aW9ucy5tYXhSZWRpcmVjdHMpIHtcbiAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIG5ldyBUb29NYW55UmVkaXJlY3RzRXJyb3IoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUkZDNzIzMcKnNi40OiBBdXRvbWF0aWMgcmVkaXJlY3Rpb24gbmVlZHMgdG8gZG9uZSB3aXRoXG4gICAgLy8gY2FyZSBmb3IgbWV0aG9kcyBub3Qga25vd24gdG8gYmUgc2FmZSwgW+KApl1cbiAgICAvLyBSRkM3MjMxwqc2LjQuMuKAkzM6IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGEgdXNlciBhZ2VudCBNQVkgY2hhbmdlXG4gICAgLy8gdGhlIHJlcXVlc3QgbWV0aG9kIGZyb20gUE9TVCB0byBHRVQgZm9yIHRoZSBzdWJzZXF1ZW50IHJlcXVlc3QuXG4gICAgaWYgKChzdGF0dXNDb2RlID09PSAzMDEgfHwgc3RhdHVzQ29kZSA9PT0gMzAyKSAmJiB0aGlzLl9vcHRpb25zLm1ldGhvZCA9PT0gXCJQT1NUXCIgfHxcbiAgICAgICAgLy8gUkZDNzIzMcKnNi40LjQ6IFRoZSAzMDMgKFNlZSBPdGhlcikgc3RhdHVzIGNvZGUgaW5kaWNhdGVzIHRoYXRcbiAgICAgICAgLy8gdGhlIHNlcnZlciBpcyByZWRpcmVjdGluZyB0aGUgdXNlciBhZ2VudCB0byBhIGRpZmZlcmVudCByZXNvdXJjZSBb4oCmXVxuICAgICAgICAvLyBBIHVzZXIgYWdlbnQgY2FuIHBlcmZvcm0gYSByZXRyaWV2YWwgcmVxdWVzdCB0YXJnZXRpbmcgdGhhdCBVUklcbiAgICAgICAgLy8gKGEgR0VUIG9yIEhFQUQgcmVxdWVzdCBpZiB1c2luZyBIVFRQKSBb4oCmXVxuICAgICAgICAoc3RhdHVzQ29kZSA9PT0gMzAzKSAmJiAhL14oPzpHRVR8SEVBRCkkLy50ZXN0KHRoaXMuX29wdGlvbnMubWV0aG9kKSkge1xuICAgICAgdGhpcy5fb3B0aW9ucy5tZXRob2QgPSBcIkdFVFwiO1xuICAgICAgLy8gRHJvcCBhIHBvc3NpYmxlIGVudGl0eSBhbmQgaGVhZGVycyByZWxhdGVkIHRvIGl0XG4gICAgICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMgPSBbXTtcbiAgICAgIHJlbW92ZU1hdGNoaW5nSGVhZGVycygvXmNvbnRlbnQtL2ksIHRoaXMuX29wdGlvbnMuaGVhZGVycyk7XG4gICAgfVxuXG4gICAgLy8gRHJvcCB0aGUgSG9zdCBoZWFkZXIsIGFzIHRoZSByZWRpcmVjdCBtaWdodCBsZWFkIHRvIGEgZGlmZmVyZW50IGhvc3RcbiAgICB2YXIgcHJldmlvdXNIb3N0TmFtZSA9IHJlbW92ZU1hdGNoaW5nSGVhZGVycygvXmhvc3QkL2ksIHRoaXMuX29wdGlvbnMuaGVhZGVycykgfHxcbiAgICAgIHVybC5wYXJzZSh0aGlzLl9jdXJyZW50VXJsKS5ob3N0bmFtZTtcblxuICAgIC8vIENyZWF0ZSB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0XG4gICAgdmFyIHJlZGlyZWN0VXJsID0gdXJsLnJlc29sdmUodGhpcy5fY3VycmVudFVybCwgbG9jYXRpb24pO1xuICAgIGRlYnVnKFwicmVkaXJlY3RpbmcgdG9cIiwgcmVkaXJlY3RVcmwpO1xuICAgIHRoaXMuX2lzUmVkaXJlY3QgPSB0cnVlO1xuICAgIHZhciByZWRpcmVjdFVybFBhcnRzID0gdXJsLnBhcnNlKHJlZGlyZWN0VXJsKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX29wdGlvbnMsIHJlZGlyZWN0VXJsUGFydHMpO1xuXG4gICAgLy8gRHJvcCB0aGUgQXV0aG9yaXphdGlvbiBoZWFkZXIgaWYgcmVkaXJlY3RpbmcgdG8gYW5vdGhlciBob3N0XG4gICAgaWYgKHJlZGlyZWN0VXJsUGFydHMuaG9zdG5hbWUgIT09IHByZXZpb3VzSG9zdE5hbWUpIHtcbiAgICAgIHJlbW92ZU1hdGNoaW5nSGVhZGVycygvXmF1dGhvcml6YXRpb24kL2ksIHRoaXMuX29wdGlvbnMuaGVhZGVycyk7XG4gICAgfVxuXG4gICAgLy8gRXZhbHVhdGUgdGhlIGJlZm9yZVJlZGlyZWN0IGNhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9vcHRpb25zLmJlZm9yZVJlZGlyZWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHZhciByZXNwb25zZURldGFpbHMgPSB7IGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMgfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuYmVmb3JlUmVkaXJlY3QuY2FsbChudWxsLCB0aGlzLl9vcHRpb25zLCByZXNwb25zZURldGFpbHMpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9zYW5pdGl6ZU9wdGlvbnModGhpcy5fb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3BlcmZvcm1SZXF1ZXN0KCk7XG4gICAgfVxuICAgIGNhdGNoIChjYXVzZSkge1xuICAgICAgdmFyIGVycm9yID0gbmV3IFJlZGlyZWN0aW9uRXJyb3IoXCJSZWRpcmVjdGVkIHJlcXVlc3QgZmFpbGVkOiBcIiArIGNhdXNlLm1lc3NhZ2UpO1xuICAgICAgZXJyb3IuY2F1c2UgPSBjYXVzZTtcbiAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIGVycm9yKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gVGhlIHJlc3BvbnNlIGlzIG5vdCBhIHJlZGlyZWN0OyByZXR1cm4gaXQgYXMtaXNcbiAgICByZXNwb25zZS5yZXNwb25zZVVybCA9IHRoaXMuX2N1cnJlbnRVcmw7XG4gICAgcmVzcG9uc2UucmVkaXJlY3RzID0gdGhpcy5fcmVkaXJlY3RzO1xuICAgIHRoaXMuZW1pdChcInJlc3BvbnNlXCIsIHJlc3BvbnNlKTtcblxuICAgIC8vIENsZWFuIHVwXG4gICAgdGhpcy5fcmVxdWVzdEJvZHlCdWZmZXJzID0gW107XG4gIH1cbn07XG5cbi8vIFdyYXBzIHRoZSBrZXkvdmFsdWUgb2JqZWN0IG9mIHByb3RvY29scyB3aXRoIHJlZGlyZWN0IGZ1bmN0aW9uYWxpdHlcbmZ1bmN0aW9uIHdyYXAocHJvdG9jb2xzKSB7XG4gIC8vIERlZmF1bHQgc2V0dGluZ3NcbiAgdmFyIGV4cG9ydHMgPSB7XG4gICAgbWF4UmVkaXJlY3RzOiAyMSxcbiAgICBtYXhCb2R5TGVuZ3RoOiAxMCAqIDEwMjQgKiAxMDI0LFxuICB9O1xuXG4gIC8vIFdyYXAgZWFjaCBwcm90b2NvbFxuICB2YXIgbmF0aXZlUHJvdG9jb2xzID0ge307XG4gIE9iamVjdC5rZXlzKHByb3RvY29scykuZm9yRWFjaChmdW5jdGlvbiAoc2NoZW1lKSB7XG4gICAgdmFyIHByb3RvY29sID0gc2NoZW1lICsgXCI6XCI7XG4gICAgdmFyIG5hdGl2ZVByb3RvY29sID0gbmF0aXZlUHJvdG9jb2xzW3Byb3RvY29sXSA9IHByb3RvY29sc1tzY2hlbWVdO1xuICAgIHZhciB3cmFwcGVkUHJvdG9jb2wgPSBleHBvcnRzW3NjaGVtZV0gPSBPYmplY3QuY3JlYXRlKG5hdGl2ZVByb3RvY29sKTtcblxuICAgIC8vIEV4ZWN1dGVzIGEgcmVxdWVzdCwgZm9sbG93aW5nIHJlZGlyZWN0c1xuICAgIGZ1bmN0aW9uIHJlcXVlc3QoaW5wdXQsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICAvLyBQYXJzZSBwYXJhbWV0ZXJzXG4gICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHZhciB1cmxTdHIgPSBpbnB1dDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpbnB1dCA9IHVybFRvT3B0aW9ucyhuZXcgVVJMKHVybFN0cikpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlucHV0ID0gdXJsLnBhcnNlKHVybFN0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKFVSTCAmJiAoaW5wdXQgaW5zdGFuY2VvZiBVUkwpKSB7XG4gICAgICAgIGlucHV0ID0gdXJsVG9PcHRpb25zKGlucHV0KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICAgIG9wdGlvbnMgPSBpbnB1dDtcbiAgICAgICAgaW5wdXQgPSB7IHByb3RvY29sOiBwcm90b2NvbCB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICBvcHRpb25zID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IGRlZmF1bHRzXG4gICAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIG1heFJlZGlyZWN0czogZXhwb3J0cy5tYXhSZWRpcmVjdHMsXG4gICAgICAgIG1heEJvZHlMZW5ndGg6IGV4cG9ydHMubWF4Qm9keUxlbmd0aCxcbiAgICAgIH0sIGlucHV0LCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMubmF0aXZlUHJvdG9jb2xzID0gbmF0aXZlUHJvdG9jb2xzO1xuXG4gICAgICBhc3NlcnQuZXF1YWwob3B0aW9ucy5wcm90b2NvbCwgcHJvdG9jb2wsIFwicHJvdG9jb2wgbWlzbWF0Y2hcIik7XG4gICAgICBkZWJ1ZyhcIm9wdGlvbnNcIiwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gbmV3IFJlZGlyZWN0YWJsZVJlcXVlc3Qob3B0aW9ucywgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8vIEV4ZWN1dGVzIGEgR0VUIHJlcXVlc3QsIGZvbGxvd2luZyByZWRpcmVjdHNcbiAgICBmdW5jdGlvbiBnZXQoaW5wdXQsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgd3JhcHBlZFJlcXVlc3QgPSB3cmFwcGVkUHJvdG9jb2wucmVxdWVzdChpbnB1dCwgb3B0aW9ucywgY2FsbGJhY2spO1xuICAgICAgd3JhcHBlZFJlcXVlc3QuZW5kKCk7XG4gICAgICByZXR1cm4gd3JhcHBlZFJlcXVlc3Q7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIHRoZSBwcm9wZXJ0aWVzIG9uIHRoZSB3cmFwcGVkIHByb3RvY29sXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMod3JhcHBlZFByb3RvY29sLCB7XG4gICAgICByZXF1ZXN0OiB7IHZhbHVlOiByZXF1ZXN0LCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0sXG4gICAgICBnZXQ6IHsgdmFsdWU6IGdldCwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9LFxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGV4cG9ydHM7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBub29wKCkgeyAvKiBlbXB0eSAqLyB9XG5cbi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFzdGVyL2xpYi9pbnRlcm5hbC91cmwuanNcbmZ1bmN0aW9uIHVybFRvT3B0aW9ucyh1cmxPYmplY3QpIHtcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgcHJvdG9jb2w6IHVybE9iamVjdC5wcm90b2NvbCxcbiAgICBob3N0bmFtZTogdXJsT2JqZWN0Lmhvc3RuYW1lLnN0YXJ0c1dpdGgoXCJbXCIpID9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB1cmxPYmplY3QuaG9zdG5hbWUuc2xpY2UoMSwgLTEpIDpcbiAgICAgIHVybE9iamVjdC5ob3N0bmFtZSxcbiAgICBoYXNoOiB1cmxPYmplY3QuaGFzaCxcbiAgICBzZWFyY2g6IHVybE9iamVjdC5zZWFyY2gsXG4gICAgcGF0aG5hbWU6IHVybE9iamVjdC5wYXRobmFtZSxcbiAgICBwYXRoOiB1cmxPYmplY3QucGF0aG5hbWUgKyB1cmxPYmplY3Quc2VhcmNoLFxuICAgIGhyZWY6IHVybE9iamVjdC5ocmVmLFxuICB9O1xuICBpZiAodXJsT2JqZWN0LnBvcnQgIT09IFwiXCIpIHtcbiAgICBvcHRpb25zLnBvcnQgPSBOdW1iZXIodXJsT2JqZWN0LnBvcnQpO1xuICB9XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiByZW1vdmVNYXRjaGluZ0hlYWRlcnMocmVnZXgsIGhlYWRlcnMpIHtcbiAgdmFyIGxhc3RWYWx1ZTtcbiAgZm9yICh2YXIgaGVhZGVyIGluIGhlYWRlcnMpIHtcbiAgICBpZiAocmVnZXgudGVzdChoZWFkZXIpKSB7XG4gICAgICBsYXN0VmFsdWUgPSBoZWFkZXJzW2hlYWRlcl07XG4gICAgICBkZWxldGUgaGVhZGVyc1toZWFkZXJdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGFzdFZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJvclR5cGUoY29kZSwgZGVmYXVsdE1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gQ3VzdG9tRXJyb3IobWVzc2FnZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgZGVmYXVsdE1lc3NhZ2U7XG4gIH1cbiAgQ3VzdG9tRXJyb3IucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG4gIEN1c3RvbUVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEN1c3RvbUVycm9yO1xuICBDdXN0b21FcnJvci5wcm90b3R5cGUubmFtZSA9IFwiRXJyb3IgW1wiICsgY29kZSArIFwiXVwiO1xuICBDdXN0b21FcnJvci5wcm90b3R5cGUuY29kZSA9IGNvZGU7XG4gIHJldHVybiBDdXN0b21FcnJvcjtcbn1cblxuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSB3cmFwKHsgaHR0cDogaHR0cCwgaHR0cHM6IGh0dHBzIH0pO1xubW9kdWxlLmV4cG9ydHMud3JhcCA9IHdyYXA7XG4iLCJcbi8qKlxuICogVGhpcyBpcyB0aGUgY29tbW9uIGxvZ2ljIGZvciBib3RoIHRoZSBOb2RlLmpzIGFuZCB3ZWIgYnJvd3NlclxuICogaW1wbGVtZW50YXRpb25zIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5mdW5jdGlvbiBzZXR1cChlbnYpIHtcblx0Y3JlYXRlRGVidWcuZGVidWcgPSBjcmVhdGVEZWJ1Zztcblx0Y3JlYXRlRGVidWcuZGVmYXVsdCA9IGNyZWF0ZURlYnVnO1xuXHRjcmVhdGVEZWJ1Zy5jb2VyY2UgPSBjb2VyY2U7XG5cdGNyZWF0ZURlYnVnLmRpc2FibGUgPSBkaXNhYmxlO1xuXHRjcmVhdGVEZWJ1Zy5lbmFibGUgPSBlbmFibGU7XG5cdGNyZWF0ZURlYnVnLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRjcmVhdGVEZWJ1Zy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cdGNyZWF0ZURlYnVnLmRlc3Ryb3kgPSBkZXN0cm95O1xuXG5cdE9iamVjdC5rZXlzKGVudikuZm9yRWFjaChrZXkgPT4ge1xuXHRcdGNyZWF0ZURlYnVnW2tleV0gPSBlbnZba2V5XTtcblx0fSk7XG5cblx0LyoqXG5cdCogVGhlIGN1cnJlbnRseSBhY3RpdmUgZGVidWcgbW9kZSBuYW1lcywgYW5kIG5hbWVzIHRvIHNraXAuXG5cdCovXG5cblx0Y3JlYXRlRGVidWcubmFtZXMgPSBbXTtcblx0Y3JlYXRlRGVidWcuc2tpcHMgPSBbXTtcblxuXHQvKipcblx0KiBNYXAgb2Ygc3BlY2lhbCBcIiVuXCIgaGFuZGxpbmcgZnVuY3Rpb25zLCBmb3IgdGhlIGRlYnVnIFwiZm9ybWF0XCIgYXJndW1lbnQuXG5cdCpcblx0KiBWYWxpZCBrZXkgbmFtZXMgYXJlIGEgc2luZ2xlLCBsb3dlciBvciB1cHBlci1jYXNlIGxldHRlciwgaS5lLiBcIm5cIiBhbmQgXCJOXCIuXG5cdCovXG5cdGNyZWF0ZURlYnVnLmZvcm1hdHRlcnMgPSB7fTtcblxuXHQvKipcblx0KiBTZWxlY3RzIGEgY29sb3IgZm9yIGEgZGVidWcgbmFtZXNwYWNlXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHN0cmluZyBmb3IgdGhlIGZvciB0aGUgZGVidWcgaW5zdGFuY2UgdG8gYmUgY29sb3JlZFxuXHQqIEByZXR1cm4ge051bWJlcnxTdHJpbmd9IEFuIEFOU0kgY29sb3IgY29kZSBmb3IgdGhlIGdpdmVuIG5hbWVzcGFjZVxuXHQqIEBhcGkgcHJpdmF0ZVxuXHQqL1xuXHRmdW5jdGlvbiBzZWxlY3RDb2xvcihuYW1lc3BhY2UpIHtcblx0XHRsZXQgaGFzaCA9IDA7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzcGFjZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgbmFtZXNwYWNlLmNoYXJDb2RlQXQoaSk7XG5cdFx0XHRoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuXHRcdH1cblxuXHRcdHJldHVybiBjcmVhdGVEZWJ1Zy5jb2xvcnNbTWF0aC5hYnMoaGFzaCkgJSBjcmVhdGVEZWJ1Zy5jb2xvcnMubGVuZ3RoXTtcblx0fVxuXHRjcmVhdGVEZWJ1Zy5zZWxlY3RDb2xvciA9IHNlbGVjdENvbG9yO1xuXG5cdC8qKlxuXHQqIENyZWF0ZSBhIGRlYnVnZ2VyIHdpdGggdGhlIGdpdmVuIGBuYW1lc3BhY2VgLlxuXHQqXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuXHQqIEByZXR1cm4ge0Z1bmN0aW9ufVxuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGNyZWF0ZURlYnVnKG5hbWVzcGFjZSkge1xuXHRcdGxldCBwcmV2VGltZTtcblx0XHRsZXQgZW5hYmxlT3ZlcnJpZGUgPSBudWxsO1xuXG5cdFx0ZnVuY3Rpb24gZGVidWcoLi4uYXJncykge1xuXHRcdFx0Ly8gRGlzYWJsZWQ/XG5cdFx0XHRpZiAoIWRlYnVnLmVuYWJsZWQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBzZWxmID0gZGVidWc7XG5cblx0XHRcdC8vIFNldCBgZGlmZmAgdGltZXN0YW1wXG5cdFx0XHRjb25zdCBjdXJyID0gTnVtYmVyKG5ldyBEYXRlKCkpO1xuXHRcdFx0Y29uc3QgbXMgPSBjdXJyIC0gKHByZXZUaW1lIHx8IGN1cnIpO1xuXHRcdFx0c2VsZi5kaWZmID0gbXM7XG5cdFx0XHRzZWxmLnByZXYgPSBwcmV2VGltZTtcblx0XHRcdHNlbGYuY3VyciA9IGN1cnI7XG5cdFx0XHRwcmV2VGltZSA9IGN1cnI7XG5cblx0XHRcdGFyZ3NbMF0gPSBjcmVhdGVEZWJ1Zy5jb2VyY2UoYXJnc1swXSk7XG5cblx0XHRcdGlmICh0eXBlb2YgYXJnc1swXSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gQW55dGhpbmcgZWxzZSBsZXQncyBpbnNwZWN0IHdpdGggJU9cblx0XHRcdFx0YXJncy51bnNoaWZ0KCclTycpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBcHBseSBhbnkgYGZvcm1hdHRlcnNgIHRyYW5zZm9ybWF0aW9uc1xuXHRcdFx0bGV0IGluZGV4ID0gMDtcblx0XHRcdGFyZ3NbMF0gPSBhcmdzWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCAobWF0Y2gsIGZvcm1hdCkgPT4ge1xuXHRcdFx0XHQvLyBJZiB3ZSBlbmNvdW50ZXIgYW4gZXNjYXBlZCAlIHRoZW4gZG9uJ3QgaW5jcmVhc2UgdGhlIGFycmF5IGluZGV4XG5cdFx0XHRcdGlmIChtYXRjaCA9PT0gJyUlJykge1xuXHRcdFx0XHRcdHJldHVybiAnJSc7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0Y29uc3QgZm9ybWF0dGVyID0gY3JlYXRlRGVidWcuZm9ybWF0dGVyc1tmb3JtYXRdO1xuXHRcdFx0XHRpZiAodHlwZW9mIGZvcm1hdHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNvbnN0IHZhbCA9IGFyZ3NbaW5kZXhdO1xuXHRcdFx0XHRcdG1hdGNoID0gZm9ybWF0dGVyLmNhbGwoc2VsZiwgdmFsKTtcblxuXHRcdFx0XHRcdC8vIE5vdyB3ZSBuZWVkIHRvIHJlbW92ZSBgYXJnc1tpbmRleF1gIHNpbmNlIGl0J3MgaW5saW5lZCBpbiB0aGUgYGZvcm1hdGBcblx0XHRcdFx0XHRhcmdzLnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdFx0aW5kZXgtLTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gQXBwbHkgZW52LXNwZWNpZmljIGZvcm1hdHRpbmcgKGNvbG9ycywgZXRjLilcblx0XHRcdGNyZWF0ZURlYnVnLmZvcm1hdEFyZ3MuY2FsbChzZWxmLCBhcmdzKTtcblxuXHRcdFx0Y29uc3QgbG9nRm4gPSBzZWxmLmxvZyB8fCBjcmVhdGVEZWJ1Zy5sb2c7XG5cdFx0XHRsb2dGbi5hcHBseShzZWxmLCBhcmdzKTtcblx0XHR9XG5cblx0XHRkZWJ1Zy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG5cdFx0ZGVidWcudXNlQ29sb3JzID0gY3JlYXRlRGVidWcudXNlQ29sb3JzKCk7XG5cdFx0ZGVidWcuY29sb3IgPSBjcmVhdGVEZWJ1Zy5zZWxlY3RDb2xvcihuYW1lc3BhY2UpO1xuXHRcdGRlYnVnLmV4dGVuZCA9IGV4dGVuZDtcblx0XHRkZWJ1Zy5kZXN0cm95ID0gY3JlYXRlRGVidWcuZGVzdHJveTsgLy8gWFhYIFRlbXBvcmFyeS4gV2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVidWcsICdlbmFibGVkJywge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG5cdFx0XHRnZXQ6ICgpID0+IGVuYWJsZU92ZXJyaWRlID09PSBudWxsID8gY3JlYXRlRGVidWcuZW5hYmxlZChuYW1lc3BhY2UpIDogZW5hYmxlT3ZlcnJpZGUsXG5cdFx0XHRzZXQ6IHYgPT4ge1xuXHRcdFx0XHRlbmFibGVPdmVycmlkZSA9IHY7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvLyBFbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuXHRcdGlmICh0eXBlb2YgY3JlYXRlRGVidWcuaW5pdCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y3JlYXRlRGVidWcuaW5pdChkZWJ1Zyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRlYnVnO1xuXHR9XG5cblx0ZnVuY3Rpb24gZXh0ZW5kKG5hbWVzcGFjZSwgZGVsaW1pdGVyKSB7XG5cdFx0Y29uc3QgbmV3RGVidWcgPSBjcmVhdGVEZWJ1Zyh0aGlzLm5hbWVzcGFjZSArICh0eXBlb2YgZGVsaW1pdGVyID09PSAndW5kZWZpbmVkJyA/ICc6JyA6IGRlbGltaXRlcikgKyBuYW1lc3BhY2UpO1xuXHRcdG5ld0RlYnVnLmxvZyA9IHRoaXMubG9nO1xuXHRcdHJldHVybiBuZXdEZWJ1Zztcblx0fVxuXG5cdC8qKlxuXHQqIEVuYWJsZXMgYSBkZWJ1ZyBtb2RlIGJ5IG5hbWVzcGFjZXMuIFRoaXMgY2FuIGluY2x1ZGUgbW9kZXNcblx0KiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuXHQqXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBlbmFibGUobmFtZXNwYWNlcykge1xuXHRcdGNyZWF0ZURlYnVnLnNhdmUobmFtZXNwYWNlcyk7XG5cblx0XHRjcmVhdGVEZWJ1Zy5uYW1lcyA9IFtdO1xuXHRcdGNyZWF0ZURlYnVnLnNraXBzID0gW107XG5cblx0XHRsZXQgaTtcblx0XHRjb25zdCBzcGxpdCA9ICh0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzIDogJycpLnNwbGl0KC9bXFxzLF0rLyk7XG5cdFx0Y29uc3QgbGVuID0gc3BsaXQubGVuZ3RoO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRpZiAoIXNwbGl0W2ldKSB7XG5cdFx0XHRcdC8vIGlnbm9yZSBlbXB0eSBzdHJpbmdzXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRuYW1lc3BhY2VzID0gc3BsaXRbaV0ucmVwbGFjZSgvXFwqL2csICcuKj8nKTtcblxuXHRcdFx0aWYgKG5hbWVzcGFjZXNbMF0gPT09ICctJykge1xuXHRcdFx0XHRjcmVhdGVEZWJ1Zy5za2lwcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcy5zdWJzdHIoMSkgKyAnJCcpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNyZWF0ZURlYnVnLm5hbWVzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzICsgJyQnKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCogRGlzYWJsZSBkZWJ1ZyBvdXRwdXQuXG5cdCpcblx0KiBAcmV0dXJuIHtTdHJpbmd9IG5hbWVzcGFjZXNcblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBkaXNhYmxlKCkge1xuXHRcdGNvbnN0IG5hbWVzcGFjZXMgPSBbXG5cdFx0XHQuLi5jcmVhdGVEZWJ1Zy5uYW1lcy5tYXAodG9OYW1lc3BhY2UpLFxuXHRcdFx0Li4uY3JlYXRlRGVidWcuc2tpcHMubWFwKHRvTmFtZXNwYWNlKS5tYXAobmFtZXNwYWNlID0+ICctJyArIG5hbWVzcGFjZSlcblx0XHRdLmpvaW4oJywnKTtcblx0XHRjcmVhdGVEZWJ1Zy5lbmFibGUoJycpO1xuXHRcdHJldHVybiBuYW1lc3BhY2VzO1xuXHR9XG5cblx0LyoqXG5cdCogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBtb2RlIG5hbWUgaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQqXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVcblx0KiBAcmV0dXJuIHtCb29sZWFufVxuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGVuYWJsZWQobmFtZSkge1xuXHRcdGlmIChuYW1lW25hbWUubGVuZ3RoIC0gMV0gPT09ICcqJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0bGV0IGk7XG5cdFx0bGV0IGxlbjtcblxuXHRcdGZvciAoaSA9IDAsIGxlbiA9IGNyZWF0ZURlYnVnLnNraXBzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRpZiAoY3JlYXRlRGVidWcuc2tpcHNbaV0udGVzdChuYW1lKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChpID0gMCwgbGVuID0gY3JlYXRlRGVidWcubmFtZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGlmIChjcmVhdGVEZWJ1Zy5uYW1lc1tpXS50ZXN0KG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQqIENvbnZlcnQgcmVnZXhwIHRvIG5hbWVzcGFjZVxuXHQqXG5cdCogQHBhcmFtIHtSZWdFeHB9IHJlZ3hlcFxuXHQqIEByZXR1cm4ge1N0cmluZ30gbmFtZXNwYWNlXG5cdCogQGFwaSBwcml2YXRlXG5cdCovXG5cdGZ1bmN0aW9uIHRvTmFtZXNwYWNlKHJlZ2V4cCkge1xuXHRcdHJldHVybiByZWdleHAudG9TdHJpbmcoKVxuXHRcdFx0LnN1YnN0cmluZygyLCByZWdleHAudG9TdHJpbmcoKS5sZW5ndGggLSAyKVxuXHRcdFx0LnJlcGxhY2UoL1xcLlxcKlxcPyQvLCAnKicpO1xuXHR9XG5cblx0LyoqXG5cdCogQ29lcmNlIGB2YWxgLlxuXHQqXG5cdCogQHBhcmFtIHtNaXhlZH0gdmFsXG5cdCogQHJldHVybiB7TWl4ZWR9XG5cdCogQGFwaSBwcml2YXRlXG5cdCovXG5cdGZ1bmN0aW9uIGNvZXJjZSh2YWwpIHtcblx0XHRpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRcdHJldHVybiB2YWwuc3RhY2sgfHwgdmFsLm1lc3NhZ2U7XG5cdFx0fVxuXHRcdHJldHVybiB2YWw7XG5cdH1cblxuXHQvKipcblx0KiBYWFggRE8gTk9UIFVTRS4gVGhpcyBpcyBhIHRlbXBvcmFyeSBzdHViIGZ1bmN0aW9uLlxuXHQqIFhYWCBJdCBXSUxMIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cblx0Ki9cblx0ZnVuY3Rpb24gZGVzdHJveSgpIHtcblx0XHRjb25zb2xlLndhcm4oJ0luc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC4nKTtcblx0fVxuXG5cdGNyZWF0ZURlYnVnLmVuYWJsZShjcmVhdGVEZWJ1Zy5sb2FkKCkpO1xuXG5cdHJldHVybiBjcmVhdGVEZWJ1Zztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXR1cDtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9zXCIpOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIHZhciBjb25maWcgPSB7fTtcblxuICB2YXIgdmFsdWVGcm9tQ29uZmlnMktleXMgPSBbJ3VybCcsICdtZXRob2QnLCAnZGF0YSddO1xuICB2YXIgbWVyZ2VEZWVwUHJvcGVydGllc0tleXMgPSBbJ2hlYWRlcnMnLCAnYXV0aCcsICdwcm94eScsICdwYXJhbXMnXTtcbiAgdmFyIGRlZmF1bHRUb0NvbmZpZzJLZXlzID0gW1xuICAgICdiYXNlVVJMJywgJ3RyYW5zZm9ybVJlcXVlc3QnLCAndHJhbnNmb3JtUmVzcG9uc2UnLCAncGFyYW1zU2VyaWFsaXplcicsXG4gICAgJ3RpbWVvdXQnLCAndGltZW91dE1lc3NhZ2UnLCAnd2l0aENyZWRlbnRpYWxzJywgJ2FkYXB0ZXInLCAncmVzcG9uc2VUeXBlJywgJ3hzcmZDb29raWVOYW1lJyxcbiAgICAneHNyZkhlYWRlck5hbWUnLCAnb25VcGxvYWRQcm9ncmVzcycsICdvbkRvd25sb2FkUHJvZ3Jlc3MnLCAnZGVjb21wcmVzcycsXG4gICAgJ21heENvbnRlbnRMZW5ndGgnLCAnbWF4Qm9keUxlbmd0aCcsICdtYXhSZWRpcmVjdHMnLCAndHJhbnNwb3J0JywgJ2h0dHBBZ2VudCcsXG4gICAgJ2h0dHBzQWdlbnQnLCAnY2FuY2VsVG9rZW4nLCAnc29ja2V0UGF0aCcsICdyZXNwb25zZUVuY29kaW5nJ1xuICBdO1xuICB2YXIgZGlyZWN0TWVyZ2VLZXlzID0gWyd2YWxpZGF0ZVN0YXR1cyddO1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VEZWVwUHJvcGVydGllcyhwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgdXRpbHMuZm9yRWFjaCh2YWx1ZUZyb21Db25maWcyS2V5cywgZnVuY3Rpb24gdmFsdWVGcm9tQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHV0aWxzLmZvckVhY2gobWVyZ2VEZWVwUHJvcGVydGllc0tleXMsIG1lcmdlRGVlcFByb3BlcnRpZXMpO1xuXG4gIHV0aWxzLmZvckVhY2goZGVmYXVsdFRvQ29uZmlnMktleXMsIGZ1bmN0aW9uIGRlZmF1bHRUb0NvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICB1dGlscy5mb3JFYWNoKGRpcmVjdE1lcmdlS2V5cywgZnVuY3Rpb24gbWVyZ2UocHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGF4aW9zS2V5cyA9IHZhbHVlRnJvbUNvbmZpZzJLZXlzXG4gICAgLmNvbmNhdChtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cylcbiAgICAuY29uY2F0KGRlZmF1bHRUb0NvbmZpZzJLZXlzKVxuICAgIC5jb25jYXQoZGlyZWN0TWVyZ2VLZXlzKTtcblxuICB2YXIgb3RoZXJLZXlzID0gT2JqZWN0XG4gICAgLmtleXMoY29uZmlnMSlcbiAgICAuY29uY2F0KE9iamVjdC5rZXlzKGNvbmZpZzIpKVxuICAgIC5maWx0ZXIoZnVuY3Rpb24gZmlsdGVyQXhpb3NLZXlzKGtleSkge1xuICAgICAgcmV0dXJuIGF4aW9zS2V5cy5pbmRleE9mKGtleSkgPT09IC0xO1xuICAgIH0pO1xuXG4gIHV0aWxzLmZvckVhY2gob3RoZXJLZXlzLCBtZXJnZURlZXBQcm9wZXJ0aWVzKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBBIGBDYW5jZWxgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsKG1lc3NhZ2UpIHtcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbn1cblxuQ2FuY2VsLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ0NhbmNlbCcgKyAodGhpcy5tZXNzYWdlID8gJzogJyArIHRoaXMubWVzc2FnZSA6ICcnKTtcbn07XG5cbkNhbmNlbC5wcm90b3R5cGUuX19DQU5DRUxfXyA9IHRydWU7XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsO1xuIiwiJ3VzZSBzdHJpY3QnXG4vLyBiYXNlLXggZW5jb2RpbmcgLyBkZWNvZGluZ1xuLy8gQ29weXJpZ2h0IChjKSAyMDE4IGJhc2UteCBjb250cmlidXRvcnNcbi8vIENvcHlyaWdodCAoYykgMjAxNC0yMDE4IFRoZSBCaXRjb2luIENvcmUgZGV2ZWxvcGVycyAoYmFzZTU4LmNwcClcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgc29mdHdhcmUgbGljZW5zZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmdcbi8vIGZpbGUgTElDRU5TRSBvciBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocC5cbi8vIEB0cy1pZ25vcmVcbnZhciBfQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbmZ1bmN0aW9uIGJhc2UgKEFMUEhBQkVUKSB7XG4gIGlmIChBTFBIQUJFVC5sZW5ndGggPj0gMjU1KSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscGhhYmV0IHRvbyBsb25nJykgfVxuICB2YXIgQkFTRV9NQVAgPSBuZXcgVWludDhBcnJheSgyNTYpXG4gIGZvciAodmFyIGogPSAwOyBqIDwgQkFTRV9NQVAubGVuZ3RoOyBqKyspIHtcbiAgICBCQVNFX01BUFtqXSA9IDI1NVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgQUxQSEFCRVQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgeCA9IEFMUEhBQkVULmNoYXJBdChpKVxuICAgIHZhciB4YyA9IHguY2hhckNvZGVBdCgwKVxuICAgIGlmIChCQVNFX01BUFt4Y10gIT09IDI1NSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKHggKyAnIGlzIGFtYmlndW91cycpIH1cbiAgICBCQVNFX01BUFt4Y10gPSBpXG4gIH1cbiAgdmFyIEJBU0UgPSBBTFBIQUJFVC5sZW5ndGhcbiAgdmFyIExFQURFUiA9IEFMUEhBQkVULmNoYXJBdCgwKVxuICB2YXIgRkFDVE9SID0gTWF0aC5sb2coQkFTRSkgLyBNYXRoLmxvZygyNTYpIC8vIGxvZyhCQVNFKSAvIGxvZygyNTYpLCByb3VuZGVkIHVwXG4gIHZhciBpRkFDVE9SID0gTWF0aC5sb2coMjU2KSAvIE1hdGgubG9nKEJBU0UpIC8vIGxvZygyNTYpIC8gbG9nKEJBU0UpLCByb3VuZGVkIHVwXG4gIGZ1bmN0aW9uIGVuY29kZSAoc291cmNlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSB8fCBzb3VyY2UgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7IHNvdXJjZSA9IF9CdWZmZXIuZnJvbShzb3VyY2UpIH1cbiAgICBpZiAoIV9CdWZmZXIuaXNCdWZmZXIoc291cmNlKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBCdWZmZXInKSB9XG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDApIHsgcmV0dXJuICcnIH1cbiAgICAgICAgLy8gU2tpcCAmIGNvdW50IGxlYWRpbmcgemVyb2VzLlxuICAgIHZhciB6ZXJvZXMgPSAwXG4gICAgdmFyIGxlbmd0aCA9IDBcbiAgICB2YXIgcGJlZ2luID0gMFxuICAgIHZhciBwZW5kID0gc291cmNlLmxlbmd0aFxuICAgIHdoaWxlIChwYmVnaW4gIT09IHBlbmQgJiYgc291cmNlW3BiZWdpbl0gPT09IDApIHtcbiAgICAgIHBiZWdpbisrXG4gICAgICB6ZXJvZXMrK1xuICAgIH1cbiAgICAgICAgLy8gQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGluIGJpZy1lbmRpYW4gYmFzZTU4IHJlcHJlc2VudGF0aW9uLlxuICAgIHZhciBzaXplID0gKChwZW5kIC0gcGJlZ2luKSAqIGlGQUNUT1IgKyAxKSA+Pj4gMFxuICAgIHZhciBiNTggPSBuZXcgVWludDhBcnJheShzaXplKVxuICAgICAgICAvLyBQcm9jZXNzIHRoZSBieXRlcy5cbiAgICB3aGlsZSAocGJlZ2luICE9PSBwZW5kKSB7XG4gICAgICB2YXIgY2FycnkgPSBzb3VyY2VbcGJlZ2luXVxuICAgICAgICAgICAgLy8gQXBwbHkgXCJiNTggPSBiNTggKiAyNTYgKyBjaFwiLlxuICAgICAgdmFyIGkgPSAwXG4gICAgICBmb3IgKHZhciBpdDEgPSBzaXplIC0gMTsgKGNhcnJ5ICE9PSAwIHx8IGkgPCBsZW5ndGgpICYmIChpdDEgIT09IC0xKTsgaXQxLS0sIGkrKykge1xuICAgICAgICBjYXJyeSArPSAoMjU2ICogYjU4W2l0MV0pID4+PiAwXG4gICAgICAgIGI1OFtpdDFdID0gKGNhcnJ5ICUgQkFTRSkgPj4+IDBcbiAgICAgICAgY2FycnkgPSAoY2FycnkgLyBCQVNFKSA+Pj4gMFxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7IHRocm93IG5ldyBFcnJvcignTm9uLXplcm8gY2FycnknKSB9XG4gICAgICBsZW5ndGggPSBpXG4gICAgICBwYmVnaW4rK1xuICAgIH1cbiAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lcyBpbiBiYXNlNTggcmVzdWx0LlxuICAgIHZhciBpdDIgPSBzaXplIC0gbGVuZ3RoXG4gICAgd2hpbGUgKGl0MiAhPT0gc2l6ZSAmJiBiNThbaXQyXSA9PT0gMCkge1xuICAgICAgaXQyKytcbiAgICB9XG4gICAgICAgIC8vIFRyYW5zbGF0ZSB0aGUgcmVzdWx0IGludG8gYSBzdHJpbmcuXG4gICAgdmFyIHN0ciA9IExFQURFUi5yZXBlYXQoemVyb2VzKVxuICAgIGZvciAoOyBpdDIgPCBzaXplOyArK2l0MikgeyBzdHIgKz0gQUxQSEFCRVQuY2hhckF0KGI1OFtpdDJdKSB9XG4gICAgcmV0dXJuIHN0clxuICB9XG4gIGZ1bmN0aW9uIGRlY29kZVVuc2FmZSAoc291cmNlKSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09ICdzdHJpbmcnKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFN0cmluZycpIH1cbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gX0J1ZmZlci5hbGxvYygwKSB9XG4gICAgdmFyIHBzeiA9IDBcbiAgICAgICAgLy8gU2tpcCBsZWFkaW5nIHNwYWNlcy5cbiAgICBpZiAoc291cmNlW3Bzel0gPT09ICcgJykgeyByZXR1cm4gfVxuICAgICAgICAvLyBTa2lwIGFuZCBjb3VudCBsZWFkaW5nICcxJ3MuXG4gICAgdmFyIHplcm9lcyA9IDBcbiAgICB2YXIgbGVuZ3RoID0gMFxuICAgIHdoaWxlIChzb3VyY2VbcHN6XSA9PT0gTEVBREVSKSB7XG4gICAgICB6ZXJvZXMrK1xuICAgICAgcHN6KytcbiAgICB9XG4gICAgICAgIC8vIEFsbG9jYXRlIGVub3VnaCBzcGFjZSBpbiBiaWctZW5kaWFuIGJhc2UyNTYgcmVwcmVzZW50YXRpb24uXG4gICAgdmFyIHNpemUgPSAoKChzb3VyY2UubGVuZ3RoIC0gcHN6KSAqIEZBQ1RPUikgKyAxKSA+Pj4gMCAvLyBsb2coNTgpIC8gbG9nKDI1NiksIHJvdW5kZWQgdXAuXG4gICAgdmFyIGIyNTYgPSBuZXcgVWludDhBcnJheShzaXplKVxuICAgICAgICAvLyBQcm9jZXNzIHRoZSBjaGFyYWN0ZXJzLlxuICAgIHdoaWxlIChzb3VyY2VbcHN6XSkge1xuICAgICAgICAgICAgLy8gRGVjb2RlIGNoYXJhY3RlclxuICAgICAgdmFyIGNhcnJ5ID0gQkFTRV9NQVBbc291cmNlLmNoYXJDb2RlQXQocHN6KV1cbiAgICAgICAgICAgIC8vIEludmFsaWQgY2hhcmFjdGVyXG4gICAgICBpZiAoY2FycnkgPT09IDI1NSkgeyByZXR1cm4gfVxuICAgICAgdmFyIGkgPSAwXG4gICAgICBmb3IgKHZhciBpdDMgPSBzaXplIC0gMTsgKGNhcnJ5ICE9PSAwIHx8IGkgPCBsZW5ndGgpICYmIChpdDMgIT09IC0xKTsgaXQzLS0sIGkrKykge1xuICAgICAgICBjYXJyeSArPSAoQkFTRSAqIGIyNTZbaXQzXSkgPj4+IDBcbiAgICAgICAgYjI1NltpdDNdID0gKGNhcnJ5ICUgMjU2KSA+Pj4gMFxuICAgICAgICBjYXJyeSA9IChjYXJyeSAvIDI1NikgPj4+IDBcbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkgeyB0aHJvdyBuZXcgRXJyb3IoJ05vbi16ZXJvIGNhcnJ5JykgfVxuICAgICAgbGVuZ3RoID0gaVxuICAgICAgcHN6KytcbiAgICB9XG4gICAgICAgIC8vIFNraXAgdHJhaWxpbmcgc3BhY2VzLlxuICAgIGlmIChzb3VyY2VbcHN6XSA9PT0gJyAnKSB7IHJldHVybiB9XG4gICAgICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXMgaW4gYjI1Ni5cbiAgICB2YXIgaXQ0ID0gc2l6ZSAtIGxlbmd0aFxuICAgIHdoaWxlIChpdDQgIT09IHNpemUgJiYgYjI1NltpdDRdID09PSAwKSB7XG4gICAgICBpdDQrK1xuICAgIH1cbiAgICB2YXIgdmNoID0gX0J1ZmZlci5hbGxvY1Vuc2FmZSh6ZXJvZXMgKyAoc2l6ZSAtIGl0NCkpXG4gICAgdmNoLmZpbGwoMHgwMCwgMCwgemVyb2VzKVxuICAgIHZhciBqID0gemVyb2VzXG4gICAgd2hpbGUgKGl0NCAhPT0gc2l6ZSkge1xuICAgICAgdmNoW2orK10gPSBiMjU2W2l0NCsrXVxuICAgIH1cbiAgICByZXR1cm4gdmNoXG4gIH1cbiAgZnVuY3Rpb24gZGVjb2RlIChzdHJpbmcpIHtcbiAgICB2YXIgYnVmZmVyID0gZGVjb2RlVW5zYWZlKHN0cmluZylcbiAgICBpZiAoYnVmZmVyKSB7IHJldHVybiBidWZmZXIgfVxuICAgIHRocm93IG5ldyBFcnJvcignTm9uLWJhc2UnICsgQkFTRSArICcgY2hhcmFjdGVyJylcbiAgfVxuICByZXR1cm4ge1xuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGRlY29kZVVuc2FmZTogZGVjb2RlVW5zYWZlLFxuICAgIGRlY29kZTogZGVjb2RlXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpOyIsIi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIFttdWx0aWJhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9tdWx0aWZvcm1hdHMvbXVsdGliYXNlKSBzcGVjaWZpY2F0aW9uLlxuICogQG1vZHVsZSBNdWx0aWJhc2VcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gbXVsdGliYXNlXG5leHBvcnRzLmVuY29kZSA9IGVuY29kZVxuZXhwb3J0cy5kZWNvZGUgPSBkZWNvZGVcbmV4cG9ydHMuaXNFbmNvZGVkID0gaXNFbmNvZGVkXG5leHBvcnRzLm5hbWVzID0gT2JqZWN0LmZyZWV6ZShPYmplY3Qua2V5cyhjb25zdGFudHMubmFtZXMpKVxuZXhwb3J0cy5jb2RlcyA9IE9iamVjdC5mcmVlemUoT2JqZWN0LmtleXMoY29uc3RhbnRzLmNvZGVzKSlcblxuY29uc3QgZXJyTm90U3VwcG9ydGVkID0gbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBlbmNvZGluZycpXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGJ1ZmZlciB3aXRoIHRoZSBtdWx0aWJhc2UgdmFyaW50K2NvZGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBuYW1lT3JDb2RlIC0gVGhlIG11bHRpYmFzZSBuYW1lIG9yIGNvZGUgbnVtYmVyLlxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZiAtIFRoZSBkYXRhIHRvIGJlIHByZWZpeGVkIHdpdGggbXVsdGliYXNlLlxuICogQG1lbWJlcm9mIE11bHRpYmFzZVxuICogQHJldHVybnMge0J1ZmZlcn1cbiAqL1xuZnVuY3Rpb24gbXVsdGliYXNlIChuYW1lT3JDb2RlLCBidWYpIHtcbiAgaWYgKCFidWYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVpcmVzIGFuIGVuY29kZWQgYnVmZmVyJylcbiAgfVxuICBjb25zdCBiYXNlID0gZ2V0QmFzZShuYW1lT3JDb2RlKVxuICBjb25zdCBjb2RlQnVmID0gQnVmZmVyLmZyb20oYmFzZS5jb2RlKVxuXG4gIGNvbnN0IG5hbWUgPSBiYXNlLm5hbWVcbiAgdmFsaWRFbmNvZGUobmFtZSwgYnVmKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbY29kZUJ1ZiwgYnVmXSlcbn1cblxuLyoqXG4gKiBFbmNvZGUgZGF0YSB3aXRoIHRoZSBzcGVjaWZpZWQgYmFzZSBhbmQgYWRkIHRoZSBtdWx0aWJhc2UgcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbmFtZU9yQ29kZSAtIFRoZSBtdWx0aWJhc2UgbmFtZSBvciBjb2RlIG51bWJlci5cbiAqIEBwYXJhbSB7QnVmZmVyfSBidWYgLSBUaGUgZGF0YSB0byBiZSBlbmNvZGVkLlxuICogQHJldHVybnMge0J1ZmZlcn1cbiAqIEBtZW1iZXJvZiBNdWx0aWJhc2VcbiAqL1xuZnVuY3Rpb24gZW5jb2RlIChuYW1lT3JDb2RlLCBidWYpIHtcbiAgY29uc3QgYmFzZSA9IGdldEJhc2UobmFtZU9yQ29kZSlcbiAgY29uc3QgbmFtZSA9IGJhc2UubmFtZVxuXG4gIHJldHVybiBtdWx0aWJhc2UobmFtZSwgQnVmZmVyLmZyb20oYmFzZS5lbmNvZGUoYnVmKSkpXG59XG5cbi8qKlxuICogVGFrZXMgYSBidWZmZXIgb3Igc3RyaW5nIGVuY29kZWQgd2l0aCBtdWx0aWJhc2UgaGVhZGVyLCBkZWNvZGVzIGl0IGFuZFxuICogcmV0dXJucyB0aGUgZGVjb2RlZCBidWZmZXJcbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcnxzdHJpbmd9IGJ1Zk9yU3RyaW5nXG4gKiBAcmV0dXJucyB7QnVmZmVyfVxuICogQG1lbWJlcm9mIE11bHRpYmFzZVxuICpcbiAqL1xuZnVuY3Rpb24gZGVjb2RlIChidWZPclN0cmluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGJ1Zk9yU3RyaW5nKSkge1xuICAgIGJ1Zk9yU3RyaW5nID0gYnVmT3JTdHJpbmcudG9TdHJpbmcoKVxuICB9XG5cbiAgY29uc3QgY29kZSA9IGJ1Zk9yU3RyaW5nLnN1YnN0cmluZygwLCAxKVxuICBidWZPclN0cmluZyA9IGJ1Zk9yU3RyaW5nLnN1YnN0cmluZygxLCBidWZPclN0cmluZy5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBidWZPclN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICBidWZPclN0cmluZyA9IEJ1ZmZlci5mcm9tKGJ1Zk9yU3RyaW5nKVxuICB9XG5cbiAgY29uc3QgYmFzZSA9IGdldEJhc2UoY29kZSlcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJhc2UuZGVjb2RlKGJ1Zk9yU3RyaW5nLnRvU3RyaW5nKCkpKVxufVxuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBkYXRhIG11bHRpYmFzZSBlbmNvZGVkP1xuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gYnVmT3JTdHJpbmdcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQG1lbWJlcm9mIE11bHRpYmFzZVxuICovXG5mdW5jdGlvbiBpc0VuY29kZWQgKGJ1Zk9yU3RyaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoYnVmT3JTdHJpbmcpKSB7XG4gICAgYnVmT3JTdHJpbmcgPSBidWZPclN0cmluZy50b1N0cmluZygpXG4gIH1cblxuICAvLyBFbnN1cmUgYnVmT3JTdHJpbmcgaXMgYSBzdHJpbmdcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChidWZPclN0cmluZykgIT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBjb2RlID0gYnVmT3JTdHJpbmcuc3Vic3RyaW5nKDAsIDEpXG4gIHRyeSB7XG4gICAgY29uc3QgYmFzZSA9IGdldEJhc2UoY29kZSlcbiAgICByZXR1cm4gYmFzZS5uYW1lXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZcbiAqIEBwcml2YXRlXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICovXG5mdW5jdGlvbiB2YWxpZEVuY29kZSAobmFtZSwgYnVmKSB7XG4gIGNvbnN0IGJhc2UgPSBnZXRCYXNlKG5hbWUpXG4gIGJhc2UuZGVjb2RlKGJ1Zi50b1N0cmluZygpKVxufVxuXG5mdW5jdGlvbiBnZXRCYXNlIChuYW1lT3JDb2RlKSB7XG4gIGxldCBiYXNlXG5cbiAgaWYgKGNvbnN0YW50cy5uYW1lc1tuYW1lT3JDb2RlXSkge1xuICAgIGJhc2UgPSBjb25zdGFudHMubmFtZXNbbmFtZU9yQ29kZV1cbiAgfSBlbHNlIGlmIChjb25zdGFudHMuY29kZXNbbmFtZU9yQ29kZV0pIHtcbiAgICBiYXNlID0gY29uc3RhbnRzLmNvZGVzW25hbWVPckNvZGVdXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZXJyTm90U3VwcG9ydGVkXG4gIH1cblxuICBpZiAoIWJhc2UuaXNJbXBsZW1lbnRlZCgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCYXNlICcgKyBuYW1lT3JDb2RlICsgJyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0JylcbiAgfVxuXG4gIHJldHVybiBiYXNlXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgY29kZWMgPSByZXF1aXJlKCcuL2NvZGVjJylcbmNvbnN0IHByb3RvY29scyA9IHJlcXVpcmUoJy4vcHJvdG9jb2xzLXRhYmxlJylcbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5jb25zdCBiczU4ID0gcmVxdWlyZSgnYnM1OCcpXG5jb25zdCBDSUQgPSByZXF1aXJlKCdjaWRzJylcbmNvbnN0IHdpdGhJcyA9IHJlcXVpcmUoJ2NsYXNzLWlzJylcbmNvbnN0IGluc3BlY3QgPSBTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXG5cbi8qKlxuICogQ3JlYXRlcyBhIFttdWx0aWFkZHJdKGh0dHBzOi8vZ2l0aHViLmNvbS9tdWx0aWZvcm1hdHMvbXVsdGlhZGRyKSBmcm9tXG4gKiBhIEJ1ZmZlciwgU3RyaW5nIG9yIGFub3RoZXIgTXVsdGlhZGRyIGluc3RhbmNlXG4gKiBwdWJsaWMga2V5LlxuICogQGNsYXNzIE11bHRpYWRkclxuICogQHBhcmFtIHsoU3RyaW5nfEJ1ZmZlcnxNdWx0aWFkZHIpfSBhZGRyIC0gSWYgU3RyaW5nIG9yIEJ1ZmZlciwgbmVlZHMgdG8gYWRoZXJlXG4gKiB0byB0aGUgYWRkcmVzcyBmb3JtYXQgb2YgYSBbbXVsdGlhZGRyXShodHRwczovL2dpdGh1Yi5jb20vbXVsdGlmb3JtYXRzL211bHRpYWRkciNzdHJpbmctZm9ybWF0KVxuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKVxuICogLy8gPE11bHRpYWRkciAwNDdmMDAwMDAxMDYwZmExIC0gL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDE+XG4gKi9cbmNvbnN0IE11bHRpYWRkciA9IHdpdGhJcy5wcm90byhmdW5jdGlvbiAoYWRkcikge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTXVsdGlhZGRyKSkge1xuICAgIHJldHVybiBuZXcgTXVsdGlhZGRyKGFkZHIpXG4gIH1cblxuICAvLyBkZWZhdWx0XG4gIGlmIChhZGRyID09IG51bGwpIHtcbiAgICBhZGRyID0gJydcbiAgfVxuXG4gIGlmIChhZGRyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge0J1ZmZlcn0gLSBUaGUgcmF3IGJ5dGVzIHJlcHJlc2VudGluZyB0aGlzIG11bHRpYWRkcmVzc1xuICAgICAqL1xuICAgIHRoaXMuYnVmZmVyID0gY29kZWMuZnJvbUJ1ZmZlcihhZGRyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBhZGRyID09PSAnc3RyaW5nJyB8fCBhZGRyIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgaWYgKGFkZHIubGVuZ3RoID4gMCAmJiBhZGRyLmNoYXJBdCgwKSAhPT0gJy8nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11bHRpYWRkciBcIiR7YWRkcn1cIiBtdXN0IHN0YXJ0IHdpdGggYSBcIi9cImApXG4gICAgfVxuICAgIHRoaXMuYnVmZmVyID0gY29kZWMuZnJvbVN0cmluZyhhZGRyKVxuICB9IGVsc2UgaWYgKGFkZHIuYnVmZmVyICYmIGFkZHIucHJvdG9zICYmIGFkZHIucHJvdG9Db2RlcykgeyAvLyBNdWx0aWFkZHJcbiAgICB0aGlzLmJ1ZmZlciA9IGNvZGVjLmZyb21CdWZmZXIoYWRkci5idWZmZXIpIC8vIHZhbGlkYXRlICsgY29weSBidWZmZXJcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2FkZHIgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBvciBhbm90aGVyIE11bHRpYWRkcicpXG4gIH1cbn0sIHsgY2xhc3NOYW1lOiAnTXVsdGlhZGRyJywgc3ltYm9sTmFtZTogJ0BtdWx0aWZvcm1hdHMvanMtbXVsdGlhZGRyL211bHRpYWRkcicgfSlcblxuLyoqXG4gKiBSZXR1cm5zIE11bHRpYWRkciBhcyBhIFN0cmluZ1xuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKiBAZXhhbXBsZVxuICogTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpLnRvU3RyaW5nKClcbiAqIC8vICcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMSdcbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgcmV0dXJuIGNvZGVjLmJ1ZmZlclRvU3RyaW5nKHRoaXMuYnVmZmVyKVxufVxuXG4vKipcbiAqIFJldHVybnMgTXVsdGlhZGRyIGFzIGEgSlNPTiBlbmNvZGVkIG9iamVjdFxuICpcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKiBAZXhhbXBsZVxuICogSlNPTi5zdHJpbmdpZnkoTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpKVxuICogLy8gJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJ1xuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLnRvSlNPTiA9IE11bHRpYWRkci5wcm90b3R5cGUudG9TdHJpbmdcblxuLyoqXG4gKiBSZXR1cm5zIE11bHRpYWRkciBhcyBhIGNvbnZpbmllbnQgb3B0aW9ucyBvYmplY3QgdG8gYmUgdXNlZCB3aXRoIG5ldC5jcmVhdGVDb25uZWN0aW9uXG4gKlxuICogQHJldHVybnMge3tmYW1pbHk6IFN0cmluZywgaG9zdDogU3RyaW5nLCB0cmFuc3BvcnQ6IFN0cmluZywgcG9ydDogTnVtYmVyfX1cbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJykudG9PcHRpb25zKClcbiAqIC8vIHsgZmFtaWx5OiAnaXB2NCcsIGhvc3Q6ICcxMjcuMC4wLjEnLCB0cmFuc3BvcnQ6ICd0Y3AnLCBwb3J0OiA0MDAxIH1cbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS50b09wdGlvbnMgPSBmdW5jdGlvbiB0b09wdGlvbnMgKCkge1xuICBjb25zdCBvcHRzID0ge31cbiAgY29uc3QgcGFyc2VkID0gdGhpcy50b1N0cmluZygpLnNwbGl0KCcvJylcbiAgb3B0cy5mYW1pbHkgPSBwYXJzZWRbMV0gPT09ICdpcDQnID8gJ2lwdjQnIDogJ2lwdjYnXG4gIG9wdHMuaG9zdCA9IHBhcnNlZFsyXVxuICBvcHRzLnRyYW5zcG9ydCA9IHBhcnNlZFszXVxuICBvcHRzLnBvcnQgPSBwYXJzZUludChwYXJzZWRbNF0pXG4gIHJldHVybiBvcHRzXG59XG5cbi8qKlxuICogUmV0dXJucyBNdWx0aWFkZHIgYXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuXG4gKiBGb3IgcG9zdCBOb2RlLmpzIHYxMC4wLjAuXG4gKiBodHRwczovL25vZGVqcy5vcmcvYXBpL2RlcHJlY2F0aW9ucy5odG1sI2RlcHJlY2F0aW9uc19kZXAwMDc5X2N1c3RvbV9pbnNwZWN0aW9uX2Z1bmN0aW9uX29uX29iamVjdHNfdmlhX2luc3BlY3RcbiAqXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICogQGV4YW1wbGVcbiAqIGNvbnNvbGUubG9nKE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKSlcbiAqIC8vICc8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT4nXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGVbaW5zcGVjdF0gPSBmdW5jdGlvbiBpbnNwZWN0Q3VzdG9tICgpIHtcbiAgcmV0dXJuICc8TXVsdGlhZGRyICcgK1xuICAgIHRoaXMuYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSArICcgLSAnICtcbiAgICBjb2RlYy5idWZmZXJUb1N0cmluZyh0aGlzLmJ1ZmZlcikgKyAnPidcbn1cblxuLyoqXG4gKiBSZXR1cm5zIE11bHRpYWRkciBhcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZy5cbiAqIEZhbGxiYWNrIGZvciBwcmUgTm9kZS5qcyB2MTAuMC4wLlxuICogaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9kZXByZWNhdGlvbnMuaHRtbCNkZXByZWNhdGlvbnNfZGVwMDA3OV9jdXN0b21faW5zcGVjdGlvbl9mdW5jdGlvbl9vbl9vYmplY3RzX3ZpYV9pbnNwZWN0XG4gKlxuICogQHJldHVybnMge1N0cmluZ31cbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJykuaW5zcGVjdCgpXG4gKiAvLyAnPE11bHRpYWRkciAwNDdmMDAwMDAxMDYwZmExIC0gL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDE+J1xuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgcmV0dXJuICc8TXVsdGlhZGRyICcgK1xuICAgIHRoaXMuYnVmZmVyLnRvU3RyaW5nKCdoZXgnKSArICcgLSAnICtcbiAgICBjb2RlYy5idWZmZXJUb1N0cmluZyh0aGlzLmJ1ZmZlcikgKyAnPidcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm90b2NvbHMgdGhlIE11bHRpYWRkciBpcyBkZWZpbmVkIHdpdGgsIGFzIGFuIGFycmF5IG9mIG9iamVjdHMsIGluXG4gKiBsZWZ0LXRvLXJpZ2h0IG9yZGVyLiBFYWNoIG9iamVjdCBjb250YWlucyB0aGUgcHJvdG9jb2wgY29kZSwgcHJvdG9jb2wgbmFtZSxcbiAqIGFuZCB0aGUgc2l6ZSBvZiBpdHMgYWRkcmVzcyBzcGFjZSBpbiBiaXRzLlxuICogW1NlZSBsaXN0IG9mIHByb3RvY29sc10oaHR0cHM6Ly9naXRodWIuY29tL211bHRpZm9ybWF0cy9tdWx0aWFkZHIvYmxvYi9tYXN0ZXIvcHJvdG9jb2xzLmNzdilcbiAqXG4gKiBAcmV0dXJucyB7QXJyYXkuPE9iamVjdD59IHByb3RvY29scyAtIEFsbCB0aGUgcHJvdG9jb2xzIHRoZSBhZGRyZXNzIGlzIGNvbXBvc2VkIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBwcm90b2NvbHNbXS5jb2RlXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBwcm90b2NvbHNbXS5zaXplXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBwcm90b2NvbHNbXS5uYW1lXG4gKiBAZXhhbXBsZVxuICogTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpLnByb3RvcygpXG4gKiAvLyBbIHsgY29kZTogNCwgc2l6ZTogMzIsIG5hbWU6ICdpcDQnIH0sXG4gKiAvLyAgIHsgY29kZTogNiwgc2l6ZTogMTYsIG5hbWU6ICd0Y3AnIH0gXVxuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLnByb3RvcyA9IGZ1bmN0aW9uIHByb3RvcyAoKSB7XG4gIHJldHVybiB0aGlzLnByb3RvQ29kZXMoKS5tYXAoY29kZSA9PiBPYmplY3QuYXNzaWduKHt9LCBwcm90b2NvbHMoY29kZSkpKVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGNvZGVzIG9mIHRoZSBwcm90b2NvbHMgaW4gbGVmdC10by1yaWdodCBvcmRlci5cbiAqIFtTZWUgbGlzdCBvZiBwcm90b2NvbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tdWx0aWZvcm1hdHMvbXVsdGlhZGRyL2Jsb2IvbWFzdGVyL3Byb3RvY29scy5jc3YpXG4gKlxuICogQHJldHVybnMge0FycmF5LjxOdW1iZXI+fSBwcm90b2NvbCBjb2Rlc1xuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKS5wcm90b0NvZGVzKClcbiAqIC8vIFsgNCwgNiBdXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUucHJvdG9Db2RlcyA9IGZ1bmN0aW9uIHByb3RvQ29kZXMgKCkge1xuICBjb25zdCBjb2RlcyA9IFtdXG4gIGNvbnN0IGJ1ZiA9IHRoaXMuYnVmZmVyXG4gIGxldCBpID0gMFxuICB3aGlsZSAoaSA8IGJ1Zi5sZW5ndGgpIHtcbiAgICBjb25zdCBjb2RlID0gdmFyaW50LmRlY29kZShidWYsIGkpXG4gICAgY29uc3QgbiA9IHZhcmludC5kZWNvZGUuYnl0ZXNcblxuICAgIGNvbnN0IHAgPSBwcm90b2NvbHMoY29kZSlcbiAgICBjb25zdCBzaXplID0gY29kZWMuc2l6ZUZvckFkZHIocCwgYnVmLnNsaWNlKGkgKyBuKSlcblxuICAgIGkgKz0gKHNpemUgKyBuKVxuICAgIGNvZGVzLnB1c2goY29kZSlcbiAgfVxuXG4gIHJldHVybiBjb2Rlc1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG5hbWVzIG9mIHRoZSBwcm90b2NvbHMgaW4gbGVmdC10by1yaWdodCBvcmRlci5cbiAqIFtTZWUgbGlzdCBvZiBwcm90b2NvbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tdWx0aWZvcm1hdHMvbXVsdGlhZGRyL2Jsb2IvbWFzdGVyL3Byb3RvY29scy5jc3YpXG4gKlxuICogQHJldHVybiB7QXJyYXkuPFN0cmluZz59IHByb3RvY29sIG5hbWVzXG4gKiBAZXhhbXBsZVxuICogTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpLnByb3RvTmFtZXMoKVxuICogLy8gWyAnaXA0JywgJ3RjcCcgXVxuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLnByb3RvTmFtZXMgPSBmdW5jdGlvbiBwcm90b05hbWVzICgpIHtcbiAgcmV0dXJuIHRoaXMucHJvdG9zKCkubWFwKHByb3RvID0+IHByb3RvLm5hbWUpXG59XG5cbi8qKlxuICogUmV0dXJucyBhIHR1cGxlIG9mIHBhcnRzXG4gKlxuICogQHJldHVybiB7QXJyYXkuPEFycmF5Pn0gdHVwbGVzXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IHR1cGxlc1tdLjAgY29kZSBvZiBwcm90b2NvbFxuICogQHJldHVybiB7QnVmZmVyfSB0dXBsZXNbXS4xIGNvbnRlbnRzIG9mIGFkZHJlc3NcbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoXCIvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMVwiKS50dXBsZXMoKVxuICogLy8gWyBbIDQsIDxCdWZmZXIgN2YgMDAgMDAgMDE+IF0sIFsgNiwgPEJ1ZmZlciAwZiBhMT4gXSBdXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUudHVwbGVzID0gZnVuY3Rpb24gdHVwbGVzICgpIHtcbiAgcmV0dXJuIGNvZGVjLmJ1ZmZlclRvVHVwbGVzKHRoaXMuYnVmZmVyKVxufVxuXG4vKipcbiAqIFJldHVybnMgYSB0dXBsZSBvZiBzdHJpbmcvbnVtYmVyIHBhcnRzXG4gKlxuICogQHJldHVybiB7QXJyYXkuPEFycmF5Pn0gdHVwbGVzXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IHR1cGxlc1tdLjAgY29kZSBvZiBwcm90b2NvbFxuICogQHJldHVybiB7KFN0cmluZ3xOdW1iZXIpfSB0dXBsZXNbXS4xIGNvbnRlbnRzIG9mIGFkZHJlc3NcbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIoXCIvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMVwiKS5zdHJpbmdUdXBsZXMoKVxuICogLy8gWyBbIDQsICcxMjcuMC4wLjEnIF0sIFsgNiwgNDAwMSBdIF1cbiAqL1xuTXVsdGlhZGRyLnByb3RvdHlwZS5zdHJpbmdUdXBsZXMgPSBmdW5jdGlvbiBzdHJpbmdUdXBsZXMgKCkge1xuICBjb25zdCB0ID0gY29kZWMuYnVmZmVyVG9UdXBsZXModGhpcy5idWZmZXIpXG4gIHJldHVybiBjb2RlYy50dXBsZXNUb1N0cmluZ1R1cGxlcyh0KVxufVxuXG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBhIE11bHRpYWRkciBpbiBhbm90aGVyIE11bHRpYWRkclxuICpcbiAqIEBwYXJhbSB7TXVsdGlhZGRyfSBhZGRyIC0gTXVsdGlhZGRyIHRvIGFkZCBpbnRvIHRoaXMgTXVsdGlhZGRyXG4gKiBAcmV0dXJuIHtNdWx0aWFkZHJ9XG4gKiBAZXhhbXBsZVxuICogY29uc3QgbWgxID0gTXVsdGlhZGRyKCcvaXA0LzguOC44LjgvdGNwLzEwODAnKVxuICogLy8gPE11bHRpYWRkciAwNDA4MDgwODA4MDYwNDM4IC0gL2lwNC84LjguOC44L3RjcC8xMDgwPlxuICpcbiAqIGNvbnN0IG1oMiA9IE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKVxuICogLy8gPE11bHRpYWRkciAwNDdmMDAwMDAxMDYwZmExIC0gL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDE+XG4gKlxuICogY29uc3QgbWgzID0gbWgxLmVuY2Fwc3VsYXRlKG1oMilcbiAqIC8vIDxNdWx0aWFkZHIgMDQwODA4MDgwODA2MDQzODA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzguOC44LjgvdGNwLzEwODAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqXG4gKiBtaDMudG9TdHJpbmcoKVxuICogLy8gJy9pcDQvOC44LjguOC90Y3AvMTA4MC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJ1xuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLmVuY2Fwc3VsYXRlID0gZnVuY3Rpb24gZW5jYXBzdWxhdGUgKGFkZHIpIHtcbiAgYWRkciA9IE11bHRpYWRkcihhZGRyKVxuICByZXR1cm4gTXVsdGlhZGRyKHRoaXMudG9TdHJpbmcoKSArIGFkZHIudG9TdHJpbmcoKSlcbn1cblxuLyoqXG4gKiBEZWNhcHN1bGF0ZXMgYSBNdWx0aWFkZHIgZnJvbSBhbm90aGVyIE11bHRpYWRkclxuICpcbiAqIEBwYXJhbSB7TXVsdGlhZGRyfSBhZGRyIC0gTXVsdGlhZGRyIHRvIHJlbW92ZSBmcm9tIHRoaXMgTXVsdGlhZGRyXG4gKiBAcmV0dXJuIHtNdWx0aWFkZHJ9XG4gKiBAZXhhbXBsZVxuICogY29uc3QgbWgxID0gTXVsdGlhZGRyKCcvaXA0LzguOC44LjgvdGNwLzEwODAnKVxuICogLy8gPE11bHRpYWRkciAwNDA4MDgwODA4MDYwNDM4IC0gL2lwNC84LjguOC44L3RjcC8xMDgwPlxuICpcbiAqIGNvbnN0IG1oMiA9IE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKVxuICogLy8gPE11bHRpYWRkciAwNDdmMDAwMDAxMDYwZmExIC0gL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDE+XG4gKlxuICogY29uc3QgbWgzID0gbWgxLmVuY2Fwc3VsYXRlKG1oMilcbiAqIC8vIDxNdWx0aWFkZHIgMDQwODA4MDgwODA2MDQzODA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzguOC44LjgvdGNwLzEwODAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqXG4gKiBtaDMuZGVjYXBzdWxhdGUobWgyKS50b1N0cmluZygpXG4gKiAvLyAnL2lwNC84LjguOC44L3RjcC8xMDgwJ1xuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLmRlY2Fwc3VsYXRlID0gZnVuY3Rpb24gZGVjYXBzdWxhdGUgKGFkZHIpIHtcbiAgYWRkciA9IGFkZHIudG9TdHJpbmcoKVxuICBjb25zdCBzID0gdGhpcy50b1N0cmluZygpXG4gIGNvbnN0IGkgPSBzLmxhc3RJbmRleE9mKGFkZHIpXG4gIGlmIChpIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWRkcmVzcyAnICsgdGhpcyArICcgZG9lcyBub3QgY29udGFpbiBzdWJhZGRyZXNzOiAnICsgYWRkcilcbiAgfVxuICByZXR1cm4gTXVsdGlhZGRyKHMuc2xpY2UoMCwgaSkpXG59XG5cbi8qKlxuICogQSBtb3JlIHJlbGlhYmxlIHZlcnNpb24gb2YgYGRlY2Fwc3VsYXRlYCBpZiB5b3UgYXJlIHRhcmdldGluZyBhXG4gKiBzcGVjaWZpYyBjb2RlLCBzdWNoIGFzIDQyMSAodGhlIGBwMnBgIHByb3RvY29sIGNvZGUpLiBUaGUgbGFzdCBpbmRleCBvZiB0aGUgY29kZVxuICogd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGBNdWx0aWFkZHJgLCBhbmQgYSBuZXcgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIHRoZSBjb2RlIGlzIG5vdCBwcmVzZW50LCB0aGUgb3JpZ2luYWwgYE11bHRpYWRkcmAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGUgVGhlIGNvZGUgb2YgdGhlIHByb3RvY29sIHRvIGRlY2Fwc3VsYXRlIGZyb20gdGhpcyBNdWx0aWFkZHJcbiAqIEByZXR1cm4ge011bHRpYWRkcn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBhZGRyID0gTXVsdGlhZGRyKCcvaXA0LzAuMC4wLjAvdGNwLzgwODAvcDJwL1FtY2dwc3lXZ0g4WThhakp6MUN1NzJLblM1dW8yQWEyTHB6VTdraW5TdXBOS0MnKVxuICogLy8gPE11bHRpYWRkciAwNDAwLi4uIC0gL2lwNC8wLjAuMC4wL3RjcC84MDgwL3AycC9RbWNncHN5V2dIOFk4YWpKejFDdTcyS25TNXVvMkFhMkxwelU3a2luU3VwTktDPlxuICpcbiAqIGFkZHIuZGVjYXBzdWxhdGVDb2RlKDQyMSkudG9TdHJpbmcoKVxuICogLy8gJy9pcDQvMC4wLjAuMC90Y3AvODA4MCdcbiAqXG4gKiBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC84MDgwJykuZGVjYXBzdWxhdGVDb2RlKDQyMSkudG9TdHJpbmcoKVxuICogLy8gJy9pcDQvMTI3LjAuMC4xL3RjcC84MDgwJ1xuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLmRlY2Fwc3VsYXRlQ29kZSA9IGZ1bmN0aW9uIGRlY2Fwc3VsYXRlQ29kZSAoY29kZSkge1xuICBjb25zdCB0dXBsZXMgPSB0aGlzLnR1cGxlcygpXG4gIGZvciAobGV0IGkgPSB0dXBsZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAodHVwbGVzW2ldWzBdID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gTXVsdGlhZGRyKGNvZGVjLnR1cGxlc1RvQnVmZmVyKHR1cGxlcy5zbGljZSgwLCBpKSkpXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgcGVlcklkIGlmIHRoZSBtdWx0aWFkZHIgY29udGFpbnMgb25lXG4gKlxuICogQHJldHVybiB7U3RyaW5nfG51bGx9IHBlZXJJZCAtIFRoZSBpZCBvZiB0aGUgcGVlciBvciBudWxsIGlmIGludmFsaWQgb3IgbWlzc2luZyBmcm9tIHRoZSBtYVxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1oMSA9IE11bHRpYWRkcignL2lwNC84LjguOC44L3RjcC8xMDgwL2lwZnMvUW1WYWxpZEJhc2U1OHN0cmluZycpXG4gKiAvLyA8TXVsdGlhZGRyIDA0MDgwODA4MDgwNjA0MzggLSAvaXA0LzguOC44LjgvdGNwLzEwODAvaXBmcy9RbVZhbGlkQmFzZTU4c3RyaW5nPlxuICpcbiAqIC8vIHNob3VsZCByZXR1cm4gUW1WYWxpZEJhc2U1OHN0cmluZyBvciBudWxsIGlmIHRoZSBpZCBpcyBtaXNzaW5nIG9yIGludmFsaWRcbiAqIGNvbnN0IHBlZXJJZCA9IG1oMS5nZXRQZWVySWQoKVxuICovXG5NdWx0aWFkZHIucHJvdG90eXBlLmdldFBlZXJJZCA9IGZ1bmN0aW9uIGdldFBlZXJJZCAoKSB7XG4gIGxldCBiNThzdHIgPSBudWxsXG4gIHRyeSB7XG4gICAgY29uc3QgdHVwbGVzID0gdGhpcy5zdHJpbmdUdXBsZXMoKS5maWx0ZXIoKHR1cGxlKSA9PiB7XG4gICAgICBpZiAodHVwbGVbMF0gPT09IHByb3RvY29scy5uYW1lcy5pcGZzLmNvZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gR2V0IHRoZSBsYXN0IGlkXG4gICAgYjU4c3RyID0gdHVwbGVzLnBvcCgpWzFdXG4gICAgLy8gR2V0IG11bHRpaGFzaCwgdW53cmFwIGZyb20gQ0lEIGlmIG5lZWRlZFxuICAgIGI1OHN0ciA9IGJzNTguZW5jb2RlKG5ldyBDSUQoYjU4c3RyKS5tdWx0aWhhc2gpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBiNThzdHIgPSBudWxsXG4gIH1cblxuICByZXR1cm4gYjU4c3RyXG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgcGF0aCBpZiB0aGUgbXVsdGlhZGRyIGNvbnRhaW5zIG9uZVxuICpcbiAqIEByZXR1cm4ge1N0cmluZ3xudWxsfSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIG11bHRpYWRkciwgb3IgbnVsbCBpZiBubyBwYXRoIHByb3RvY29sIGlzIHByZXNlbnRcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtaDEgPSBNdWx0aWFkZHIoJy9pcDQvOC44LjguOC90Y3AvMTA4MC91bml4L3RtcC9wMnAuc29jaycpXG4gKiAvLyA8TXVsdGlhZGRyIDA0MDgwODA4MDgwNjA0MzggLSAvaXA0LzguOC44LjgvdGNwLzEwODAvdW5peC90bXAvcDJwLnNvY2s+XG4gKlxuICogLy8gc2hvdWxkIHJldHVybiB1dGY4IHN0cmluZyBvciBudWxsIGlmIHRoZSBpZCBpcyBtaXNzaW5nIG9yIGludmFsaWRcbiAqIGNvbnN0IHBhdGggPSBtaDEuZ2V0UGF0aCgpXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGggKCkge1xuICBsZXQgcGF0aCA9IG51bGxcbiAgdHJ5IHtcbiAgICBwYXRoID0gdGhpcy5zdHJpbmdUdXBsZXMoKS5maWx0ZXIoKHR1cGxlKSA9PiB7XG4gICAgICBjb25zdCBwcm90byA9IHByb3RvY29scyh0dXBsZVswXSlcbiAgICAgIGlmIChwcm90by5wYXRoKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfSlbMF1bMV1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHBhdGggPSBudWxsXG4gIH1cblxuICByZXR1cm4gcGF0aFxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0d28gTXVsdGlhZGRycyBhcmUgdGhlIHNhbWVcbiAqXG4gKiBAcGFyYW0ge011bHRpYWRkcn0gYWRkclxuICogQHJldHVybiB7Qm9vbH1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtaDEgPSBNdWx0aWFkZHIoJy9pcDQvOC44LjguOC90Y3AvMTA4MCcpXG4gKiAvLyA8TXVsdGlhZGRyIDA0MDgwODA4MDgwNjA0MzggLSAvaXA0LzguOC44LjgvdGNwLzEwODA+XG4gKlxuICogY29uc3QgbWgyID0gTXVsdGlhZGRyKCcvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMScpXG4gKiAvLyA8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqXG4gKiBtaDEuZXF1YWxzKG1oMSlcbiAqIC8vIHRydWVcbiAqXG4gKiBtaDEuZXF1YWxzKG1oMilcbiAqIC8vIGZhbHNlXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChhZGRyKSB7XG4gIHJldHVybiB0aGlzLmJ1ZmZlci5lcXVhbHMoYWRkci5idWZmZXIpXG59XG5cbi8qKlxuICogR2V0cyBhIE11bHRpYWRkcnMgbm9kZS1mcmllbmRseSBhZGRyZXNzIG9iamVjdC4gTm90ZSB0aGF0IHByb3RvY29sIGluZm9ybWF0aW9uXG4gKiBpcyBsZWZ0IG91dDogaW4gTm9kZSAoYW5kIG1vc3QgbmV0d29yayBzeXN0ZW1zKSB0aGUgcHJvdG9jb2wgaXMgdW5rbm93YWJsZVxuICogZ2l2ZW4gb25seSB0aGUgYWRkcmVzcy5cbiAqXG4gKiBIYXMgdG8gYmUgYSBUaGluV2Fpc3QgQWRkcmVzcywgb3RoZXJ3aXNlIHRocm93cyBlcnJvclxuICpcbiAqIEByZXR1cm5zIHt7ZmFtaWx5OiBTdHJpbmcsIGFkZHJlc3M6IFN0cmluZywgcG9ydDogTnVtYmVyfX1cbiAqIEB0aHJvd3Mge0Vycm9yfSBUaHJvd3MgZXJyb3IgaWYgTXVsdGlhZGRyIGlzIG5vdCBhIFRoaW4gV2Fpc3QgYWRkcmVzc1xuICogQGV4YW1wbGVcbiAqIE11bHRpYWRkcignL2lwNC8xMjcuMC4wLjEvdGNwLzQwMDEnKS5ub2RlQWRkcmVzcygpXG4gKiAvLyB7ZmFtaWx5OiAnSVB2NCcsIGFkZHJlc3M6ICcxMjcuMC4wLjEnLCBwb3J0OiAnNDAwMSd9XG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUubm9kZUFkZHJlc3MgPSBmdW5jdGlvbiBub2RlQWRkcmVzcyAoKSB7XG4gIGNvbnN0IGNvZGVzID0gdGhpcy5wcm90b0NvZGVzKClcbiAgY29uc3QgbmFtZXMgPSB0aGlzLnByb3RvTmFtZXMoKVxuICBjb25zdCBwYXJ0cyA9IHRoaXMudG9TdHJpbmcoKS5zcGxpdCgnLycpLnNsaWNlKDEpXG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA8IDQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpYWRkciBtdXN0IGhhdmUgYSB2YWxpZCBmb3JtYXQ6IFwiL3tpcDQsIGlwNiwgZG5zNCwgZG5zNn0ve2FkZHJlc3N9L3t0Y3AsIHVkcH0ve3BvcnR9XCIuJylcbiAgfSBlbHNlIGlmIChjb2Rlc1swXSAhPT0gNCAmJiBjb2Rlc1swXSAhPT0gNDEgJiYgY29kZXNbMF0gIT09IDU0ICYmIGNvZGVzWzBdICE9PSA1NSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8gcHJvdG9jb2wgd2l0aCBuYW1lOiBcIicke25hbWVzWzBdfSdcIi4gTXVzdCBoYXZlIGEgdmFsaWQgZmFtaWx5IG5hbWU6IFwie2lwNCwgaXA2LCBkbnM0LCBkbnM2fVwiLmApXG4gIH0gZWxzZSBpZiAocGFydHNbMl0gIT09ICd0Y3AnICYmIHBhcnRzWzJdICE9PSAndWRwJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8gcHJvdG9jb2wgd2l0aCBuYW1lOiBcIicke25hbWVzWzFdfSdcIi4gTXVzdCBoYXZlIGEgdmFsaWQgdHJhbnNwb3J0IHByb3RvY29sOiBcInt0Y3AsIHVkcH1cIi5gKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmYW1pbHk6IChjb2Rlc1swXSA9PT0gNDEgfHwgY29kZXNbMF0gPT09IDU1KSA/IDYgOiA0LFxuICAgIGFkZHJlc3M6IHBhcnRzWzFdLCAvLyBpcCBhZGRyXG4gICAgcG9ydDogcGFyc2VJbnQocGFydHNbM10pIC8vIHRjcCBvciB1ZHAgcG9ydFxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIE11bHRpYWRkciBmcm9tIGEgbm9kZS1mcmllbmRseSBhZGRyZXNzIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7e2ZhbWlseTogU3RyaW5nLCBhZGRyZXNzOiBTdHJpbmcsIHBvcnQ6IE51bWJlcn19IGFkZHJcbiAqIEBwYXJhbSB7U3RyaW5nfSB0cmFuc3BvcnRcbiAqIEByZXR1cm5zIHtNdWx0aWFkZHJ9IG11bHRpYWRkclxuICogQHRocm93cyB7RXJyb3J9IFRocm93cyBlcnJvciBpZiBhZGRyIGlzIG5vdCB0cnV0aHlcbiAqIEB0aHJvd3Mge0Vycm9yfSBUaHJvd3MgZXJyb3IgaWYgdHJhbnNwb3J0IGlzIG5vdCB0cnV0aHlcbiAqIEBleGFtcGxlXG4gKiBNdWx0aWFkZHIuZnJvbU5vZGVBZGRyZXNzKHthZGRyZXNzOiAnMTI3LjAuMC4xJywgcG9ydDogJzQwMDEnfSwgJ3RjcCcpXG4gKiAvLyA8TXVsdGlhZGRyIDA0N2YwMDAwMDEwNjBmYTEgLSAvaXA0LzEyNy4wLjAuMS90Y3AvNDAwMT5cbiAqL1xuTXVsdGlhZGRyLmZyb21Ob2RlQWRkcmVzcyA9IGZ1bmN0aW9uIGZyb21Ob2RlQWRkcmVzcyAoYWRkciwgdHJhbnNwb3J0KSB7XG4gIGlmICghYWRkcikgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlcyBub2RlIGFkZHJlc3Mgb2JqZWN0JylcbiAgaWYgKCF0cmFuc3BvcnQpIHRocm93IG5ldyBFcnJvcigncmVxdWlyZXMgdHJhbnNwb3J0IHByb3RvY29sJylcbiAgY29uc3QgaXAgPSAoYWRkci5mYW1pbHkgPT09ICdJUHY2JykgPyAnaXA2JyA6ICdpcDQnXG4gIHJldHVybiBNdWx0aWFkZHIoJy8nICsgW2lwLCBhZGRyLmFkZHJlc3MsIHRyYW5zcG9ydCwgYWRkci5wb3J0XS5qb2luKCcvJykpXG59XG5cbi8vIFRPRE8gZmluZCBhIGJldHRlciBleGFtcGxlLCBub3Qgc3VyZSBhYm91dCBpdCdzIGdvb2QgZW5vdWdoXG4vKipcbiAqIFJldHVybnMgaWYgYSBNdWx0aWFkZHIgaXMgYSBUaGluIFdhaXN0IGFkZHJlc3Mgb3Igbm90LlxuICpcbiAqIFRoaW4gV2Fpc3QgaXMgaWYgYSBNdWx0aWFkZHIgYWRoZXJlcyB0byB0aGUgc3RhbmRhcmQgY29tYmluYXRpb24gb2Y6XG4gKlxuICogYHtJUHY0LCBJUHY2fS97VENQLCBVRFB9YFxuICpcbiAqIEBwYXJhbSB7TXVsdGlhZGRyfSBbYWRkcl0gLSBEZWZhdWx0cyB0byB1c2luZyBgdGhpc2AgaW5zdGFuY2VcbiAqIEByZXR1cm5zIHtCb29sZWFufSBpc1RoaW5XYWlzdEFkZHJlc3NcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtaDEgPSBNdWx0aWFkZHIoJy9pcDQvMTI3LjAuMC4xL3RjcC80MDAxJylcbiAqIC8vIDxNdWx0aWFkZHIgMDQ3ZjAwMDAwMTA2MGZhMSAtIC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxPlxuICogY29uc3QgbWgyID0gTXVsdGlhZGRyKCcvaXA0LzE5Mi4xNjguMi4xL3RjcC81MDAxJylcbiAqIC8vIDxNdWx0aWFkZHIgMDRjMGE4MDIwMTA2MTM4OSAtIC9pcDQvMTkyLjE2OC4yLjEvdGNwLzUwMDE+XG4gKiBjb25zdCBtaDMgPSBtaDEuZW5jYXBzdWxhdGUobWgyKVxuICogLy8gPE11bHRpYWRkciAwNDdmMDAwMDAxMDYwZmExMDRjMGE4MDIwMTA2MTM4OSAtIC9pcDQvMTI3LjAuMC4xL3RjcC80MDAxL2lwNC8xOTIuMTY4LjIuMS90Y3AvNTAwMT5cbiAqIG1oMS5pc1RoaW5XYWlzdEFkZHJlc3MoKVxuICogLy8gdHJ1ZVxuICogbWgyLmlzVGhpbldhaXN0QWRkcmVzcygpXG4gKiAvLyB0cnVlXG4gKiBtaDMuaXNUaGluV2Fpc3RBZGRyZXNzKClcbiAqIC8vIGZhbHNlXG4gKi9cbk11bHRpYWRkci5wcm90b3R5cGUuaXNUaGluV2Fpc3RBZGRyZXNzID0gZnVuY3Rpb24gaXNUaGluV2Fpc3RBZGRyZXNzIChhZGRyKSB7XG4gIGNvbnN0IHByb3RvcyA9IChhZGRyIHx8IHRoaXMpLnByb3RvcygpXG5cbiAgaWYgKHByb3Rvcy5sZW5ndGggIT09IDIpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChwcm90b3NbMF0uY29kZSAhPT0gNCAmJiBwcm90b3NbMF0uY29kZSAhPT0gNDEpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAocHJvdG9zWzFdLmNvZGUgIT09IDYgJiYgcHJvdG9zWzFdLmNvZGUgIT09IDI3Mykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogT2JqZWN0IGNvbnRhaW5pbmcgdGFibGUsIG5hbWVzIGFuZCBjb2RlcyBvZiBhbGwgc3VwcG9ydGVkIHByb3RvY29scy5cbiAqIFRvIGdldCB0aGUgcHJvdG9jb2wgdmFsdWVzIGZyb20gYSBNdWx0aWFkZHIsIHlvdSBjYW4gdXNlXG4gKiBbYC5wcm90b3MoKWBdKCNtdWx0aWFkZHJwcm90b3MpLFxuICogW2AucHJvdG9Db2RlcygpYF0oI211bHRpYWRkcnByb3RvY29kZXMpIG9yXG4gKiBbYC5wcm90b05hbWVzKClgXSgjbXVsdGlhZGRycHJvdG9uYW1lcylcbiAqXG4gKiBAaW5zdGFuY2VcbiAqIEByZXR1cm5zIHt7dGFibGU6IEFycmF5LCBuYW1lczogT2JqZWN0LCBjb2RlczogT2JqZWN0fX1cbiAqXG4gKi9cbk11bHRpYWRkci5wcm90b2NvbHMgPSBwcm90b2NvbHNcblxuLyoqXG4gKiBSZXR1cm5zIGlmIHNvbWV0aGluZyBpcyBhIE11bHRpYWRkciB0aGF0IGlzIGEgbmFtZVxuICpcbiAqIEBwYXJhbSB7TXVsdGlhZGRyfSBhZGRyXG4gKiBAcmV0dXJuIHtCb29sfSBpc05hbWVcbiAqL1xuTXVsdGlhZGRyLmlzTmFtZSA9IGZ1bmN0aW9uIGlzTmFtZSAoYWRkcikge1xuICBpZiAoIU11bHRpYWRkci5pc011bHRpYWRkcihhZGRyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gaWYgYSBwYXJ0IG9mIHRoZSBtdWx0aWFkZHIgaXMgcmVzb2x2YWJsZSwgdGhlbiByZXR1cm4gdHJ1ZVxuICByZXR1cm4gYWRkci5wcm90b3MoKS5zb21lKChwcm90bykgPT4gcHJvdG8ucmVzb2x2YWJsZSlcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIG11bHRpYWRkcnMsIGJ5IHJlc29sdmluZyB0aGUgbXVsdGlhZGRyIHRoYXQgaXMgYSBuYW1lXG4gKlxuICogQGFzeW5jXG4gKiBAcGFyYW0ge011bHRpYWRkcn0gYWRkclxuICogQHJldHVybiB7TXVsdGlhZGRyW119XG4gKi9cbk11bHRpYWRkci5yZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSAoYWRkcikge1xuICBpZiAoIU11bHRpYWRkci5pc011bHRpYWRkcihhZGRyKSB8fCAhTXVsdGlhZGRyLmlzTmFtZShhZGRyKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChFcnJvcignbm90IGEgdmFsaWQgbmFtZScpKVxuICB9XG5cbiAgLypcbiAgICogTmVlZHMgbW9yZSBjb25zaWRlcmF0aW9uIGZyb20gc3BlYyBkZXNpZ246XG4gICAqICAgLSB3aGF0IHRvIHJldHVyblxuICAgKiAgIC0gaG93IHRvIGFjaGlldmUgaXQgaW4gdGhlIGJyb3dzZXI/XG4gICAqL1xuICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQgeWV0JykpXG59XG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IE11bHRpYWRkclxuIiwiJ3VzZSBzdHJpY3QnXG5jb25zdCB2YXJpbnQgPSByZXF1aXJlKCd2YXJpbnQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbnVtYmVyVG9CdWZmZXIsXG4gIGJ1ZmZlclRvTnVtYmVyLFxuICB2YXJpbnRCdWZmZXJFbmNvZGUsXG4gIHZhcmludEJ1ZmZlckRlY29kZSxcbiAgdmFyaW50RW5jb2RlXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlclRvTnVtYmVyIChidWYpIHtcbiAgcmV0dXJuIHBhcnNlSW50KGJ1Zi50b1N0cmluZygnaGV4JyksIDE2KVxufVxuXG5mdW5jdGlvbiBudW1iZXJUb0J1ZmZlciAobnVtKSB7XG4gIGxldCBoZXhTdHJpbmcgPSBudW0udG9TdHJpbmcoMTYpXG4gIGlmIChoZXhTdHJpbmcubGVuZ3RoICUgMiA9PT0gMSkge1xuICAgIGhleFN0cmluZyA9ICcwJyArIGhleFN0cmluZ1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbShoZXhTdHJpbmcsICdoZXgnKVxufVxuXG5mdW5jdGlvbiB2YXJpbnRCdWZmZXJFbmNvZGUgKGlucHV0KSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh2YXJpbnQuZW5jb2RlKGJ1ZmZlclRvTnVtYmVyKGlucHV0KSkpXG59XG5cbmZ1bmN0aW9uIHZhcmludEJ1ZmZlckRlY29kZSAoaW5wdXQpIHtcbiAgcmV0dXJuIG51bWJlclRvQnVmZmVyKHZhcmludC5kZWNvZGUoaW5wdXQpKVxufVxuXG5mdW5jdGlvbiB2YXJpbnRFbmNvZGUgKG51bSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShudW0pKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiB3aXRoSXMoQ2xhc3MsIHsgY2xhc3NOYW1lLCBzeW1ib2xOYW1lIH0pIHtcbiAgICBjb25zdCBzeW1ib2wgPSBTeW1ib2wuZm9yKHN5bWJvbE5hbWUpO1xuXG4gICAgY29uc3QgQ2xhc3NJc1dyYXBwZXIgPSB7XG4gICAgICAgIC8vIFRoZSBjb2RlIGJlbG93IGFzc2lnbnMgdGhlIGNsYXNzIHdyYXBwZXIgdG8gYW4gb2JqZWN0IHRvIHRyaWNrXG4gICAgICAgIC8vIEphdmFTY3JpcHQgZW5naW5lcyB0byBzaG93IHRoZSBuYW1lIG9mIHRoZSBleHRlbmRlZCBjbGFzcyB3aGVuXG4gICAgICAgIC8vIGxvZ2dpbmcgYW4gaW5zdGFuY2VzLlxuICAgICAgICAvLyBXZSBhcmUgYXNzaWduaW5nIGFuIGFub255bW91cyBjbGFzcyAoY2xhc3Mgd3JhcHBlcikgdG8gdGhlIG9iamVjdFxuICAgICAgICAvLyB3aXRoIGtleSBgY2xhc3NOYW1lYCB0byBrZWVwIHRoZSBjb3JyZWN0IG5hbWUuXG4gICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHN1cHBvcnRlZCBpdCBmYWxscyBiYWNrIHRvIGxvZ2dpbmcgYENsYXNzSXNXcmFwcGVyYC5cbiAgICAgICAgW2NsYXNzTmFtZV06IGNsYXNzIGV4dGVuZHMgQ2xhc3Mge1xuICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBzeW1ib2wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1bY2xhc3NOYW1lXTtcblxuICAgIENsYXNzSXNXcmFwcGVyW2BpcyR7Y2xhc3NOYW1lfWBdID0gKG9iaikgPT4gISEob2JqICYmIG9ialtzeW1ib2xdKTtcblxuICAgIHJldHVybiBDbGFzc0lzV3JhcHBlcjtcbn1cblxuZnVuY3Rpb24gd2l0aElzUHJvdG8oQ2xhc3MsIHsgY2xhc3NOYW1lLCBzeW1ib2xOYW1lLCB3aXRob3V0TmV3IH0pIHtcbiAgICBjb25zdCBzeW1ib2wgPSBTeW1ib2wuZm9yKHN5bWJvbE5hbWUpO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgb2JqZWN0LXNob3J0aGFuZCAqL1xuICAgIGNvbnN0IENsYXNzSXNXcmFwcGVyID0ge1xuICAgICAgICBbY2xhc3NOYW1lXTogZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIGlmICh3aXRob3V0TmV3ICYmICEodGhpcyBpbnN0YW5jZW9mIENsYXNzSXNXcmFwcGVyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ2xhc3NJc1dyYXBwZXIoLi4uYXJncyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IF90aGlzID0gQ2xhc3MuY2FsbCh0aGlzLCAuLi5hcmdzKSB8fCB0aGlzO1xuXG4gICAgICAgICAgICBpZiAoX3RoaXMgJiYgIV90aGlzW3N5bWJvbF0pIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX3RoaXMsIHN5bWJvbCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgICAgICB9LFxuICAgIH1bY2xhc3NOYW1lXTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG9iamVjdC1zaG9ydGhhbmQgKi9cblxuICAgIENsYXNzSXNXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ2xhc3MucHJvdG90eXBlKTtcbiAgICBDbGFzc0lzV3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzc0lzV3JhcHBlcjtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDbGFzc0lzV3JhcHBlci5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZywge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgICAgICB9LFxuICAgIH0pO1xuXG4gICAgQ2xhc3NJc1dyYXBwZXJbYGlzJHtjbGFzc05hbWV9YF0gPSAob2JqKSA9PiAhIShvYmogJiYgb2JqW3N5bWJvbF0pO1xuXG4gICAgcmV0dXJuIENsYXNzSXNXcmFwcGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpdGhJcztcbm1vZHVsZS5leHBvcnRzLnByb3RvID0gd2l0aElzUHJvdG87XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMsIHZhbGlkYXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi91dGlsL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IGlzSVBGUyBmcm9tICdpcy1pcGZzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IFBpbmF0YU1ldGFkYXRhIH0gZnJvbSAnLi4vZGF0YS9waW5MaXN0L3Bpbkxpc3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYXNoTWV0YWRhdGEoY29uZmlnOiBQaW5hdGFDb25maWcsIGlwZnNQaW5IYXNoOiBzdHJpbmcsIG1ldGFkYXRhOlBpbmF0YU1ldGFkYXRhKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIWlwZnNQaW5IYXNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaXBmc1Bpbkhhc2ggdmFsdWUgaXMgcmVxdWlyZWQgZm9yIGNoYW5naW5nIHRoZSBwaW4gcG9saWN5IG9mIGEgcGluJyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0lQRlMuY2lkKGlwZnNQaW5IYXNoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lwZnNQaW5IYXNoIHZhbHVlIGlzIGFuIGludmFsaWQgSVBGUyBDSUQnKTtcbiAgICB9XG5cbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gbWV0YWRhdGEgb2JqZWN0IHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVNZXRhZGF0YShtZXRhZGF0YSk7XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2Jhc2VVcmx9L3Bpbm5pbmcvaGFzaE1ldGFkYXRhYDtcbiAgICBjb25zdCBib2R5OiB7XG4gICAgICAgIGlwZnNQaW5IYXNoOiBzdHJpbmcsXG4gICAgICAgIG5hbWU/OiBhbnksXG4gICAgICAgIGtleXZhbHVlcz86IGFueVxuICAgIH0gPSB7XG4gICAgICAgIGlwZnNQaW5IYXNoOiBpcGZzUGluSGFzaFxuICAgIH07XG5cbiAgICBpZiAobWV0YWRhdGEubmFtZSkge1xuICAgICAgICBib2R5Lm5hbWUgPSBtZXRhZGF0YS5uYW1lO1xuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5rZXl2YWx1ZXMpIHtcbiAgICAgICAgYm9keS5rZXl2YWx1ZXMgPSBtZXRhZGF0YS5rZXl2YWx1ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYXhpb3MucHV0KFxuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB1bmtub3duIHNlcnZlciByZXNwb25zZSB3aGlsZSBjaGFuZ2luZyBtZXRhZGF0YSBmb3IgaGFzaDogJHtyZXN1bHR9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3IgPSBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZWplY3QoZm9ybWF0dGVkRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiIsInZhciBDb21iaW5lZFN0cmVhbSA9IHJlcXVpcmUoJ2NvbWJpbmVkLXN0cmVhbScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbnZhciBtaW1lID0gcmVxdWlyZSgnbWltZS10eXBlcycpO1xudmFyIGFzeW5ja2l0ID0gcmVxdWlyZSgnYXN5bmNraXQnKTtcbnZhciBwb3B1bGF0ZSA9IHJlcXVpcmUoJy4vcG9wdWxhdGUuanMnKTtcblxuLy8gUHVibGljIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBGb3JtRGF0YTtcblxuLy8gbWFrZSBpdCBhIFN0cmVhbVxudXRpbC5pbmhlcml0cyhGb3JtRGF0YSwgQ29tYmluZWRTdHJlYW0pO1xuXG4vKipcbiAqIENyZWF0ZSByZWFkYWJsZSBcIm11bHRpcGFydC9mb3JtLWRhdGFcIiBzdHJlYW1zLlxuICogQ2FuIGJlIHVzZWQgdG8gc3VibWl0IGZvcm1zXG4gKiBhbmQgZmlsZSB1cGxvYWRzIHRvIG90aGVyIHdlYiBhcHBsaWNhdGlvbnMuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFByb3BlcnRpZXMgdG8gYmUgYWRkZWQvb3ZlcnJpZGVuIGZvciBGb3JtRGF0YSBhbmQgQ29tYmluZWRTdHJlYW1cbiAqL1xuZnVuY3Rpb24gRm9ybURhdGEob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XG4gICAgcmV0dXJuIG5ldyBGb3JtRGF0YSgpO1xuICB9XG5cbiAgdGhpcy5fb3ZlcmhlYWRMZW5ndGggPSAwO1xuICB0aGlzLl92YWx1ZUxlbmd0aCA9IDA7XG4gIHRoaXMuX3ZhbHVlc1RvTWVhc3VyZSA9IFtdO1xuXG4gIENvbWJpbmVkU3RyZWFtLmNhbGwodGhpcyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGZvciAodmFyIG9wdGlvbiBpbiBvcHRpb25zKSB7XG4gICAgdGhpc1tvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dO1xuICB9XG59XG5cbkZvcm1EYXRhLkxJTkVfQlJFQUsgPSAnXFxyXFxuJztcbkZvcm1EYXRhLkRFRkFVTFRfQ09OVEVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihmaWVsZCwgdmFsdWUsIG9wdGlvbnMpIHtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBhbGxvdyBmaWxlbmFtZSBhcyBzaW5nbGUgb3B0aW9uXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PSAnc3RyaW5nJykge1xuICAgIG9wdGlvbnMgPSB7ZmlsZW5hbWU6IG9wdGlvbnN9O1xuICB9XG5cbiAgdmFyIGFwcGVuZCA9IENvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5hcHBlbmQuYmluZCh0aGlzKTtcblxuICAvLyBhbGwgdGhhdCBzdHJlYW15IGJ1c2luZXNzIGNhbid0IGhhbmRsZSBudW1iZXJzXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICB2YWx1ZSA9ICcnICsgdmFsdWU7XG4gIH1cblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmVsaXhnZS9ub2RlLWZvcm0tZGF0YS9pc3N1ZXMvMzhcbiAgaWYgKHV0aWwuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBQbGVhc2UgY29udmVydCB5b3VyIGFycmF5IGludG8gc3RyaW5nXG4gICAgLy8gdGhlIHdheSB3ZWIgc2VydmVyIGV4cGVjdHMgaXRcbiAgICB0aGlzLl9lcnJvcihuZXcgRXJyb3IoJ0FycmF5cyBhcmUgbm90IHN1cHBvcnRlZC4nKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGhlYWRlciA9IHRoaXMuX211bHRpUGFydEhlYWRlcihmaWVsZCwgdmFsdWUsIG9wdGlvbnMpO1xuICB2YXIgZm9vdGVyID0gdGhpcy5fbXVsdGlQYXJ0Rm9vdGVyKCk7XG5cbiAgYXBwZW5kKGhlYWRlcik7XG4gIGFwcGVuZCh2YWx1ZSk7XG4gIGFwcGVuZChmb290ZXIpO1xuXG4gIC8vIHBhc3MgYWxvbmcgb3B0aW9ucy5rbm93bkxlbmd0aFxuICB0aGlzLl90cmFja0xlbmd0aChoZWFkZXIsIHZhbHVlLCBvcHRpb25zKTtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fdHJhY2tMZW5ndGggPSBmdW5jdGlvbihoZWFkZXIsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB2YWx1ZUxlbmd0aCA9IDA7XG5cbiAgLy8gdXNlZCB3LyBnZXRMZW5ndGhTeW5jKCksIHdoZW4gbGVuZ3RoIGlzIGtub3duLlxuICAvLyBlLmcuIGZvciBzdHJlYW1pbmcgZGlyZWN0bHkgZnJvbSBhIHJlbW90ZSBzZXJ2ZXIsXG4gIC8vIHcvIGEga25vd24gZmlsZSBhIHNpemUsIGFuZCBub3Qgd2FudGluZyB0byB3YWl0IGZvclxuICAvLyBpbmNvbWluZyBmaWxlIHRvIGZpbmlzaCB0byBnZXQgaXRzIHNpemUuXG4gIGlmIChvcHRpb25zLmtub3duTGVuZ3RoICE9IG51bGwpIHtcbiAgICB2YWx1ZUxlbmd0aCArPSArb3B0aW9ucy5rbm93bkxlbmd0aDtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdmFsdWVMZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHZhbHVlTGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUpO1xuICB9XG5cbiAgdGhpcy5fdmFsdWVMZW5ndGggKz0gdmFsdWVMZW5ndGg7XG5cbiAgLy8gQGNoZWNrIHdoeSBhZGQgQ1JMRj8gZG9lcyB0aGlzIGFjY291bnQgZm9yIGN1c3RvbS9tdWx0aXBsZSBDUkxGcz9cbiAgdGhpcy5fb3ZlcmhlYWRMZW5ndGggKz1cbiAgICBCdWZmZXIuYnl0ZUxlbmd0aChoZWFkZXIpICtcbiAgICBGb3JtRGF0YS5MSU5FX0JSRUFLLmxlbmd0aDtcblxuICAvLyBlbXB0eSBvciBlaXRoZXIgZG9lc24ndCBoYXZlIHBhdGggb3Igbm90IGFuIGh0dHAgcmVzcG9uc2VcbiAgaWYgKCF2YWx1ZSB8fCAoICF2YWx1ZS5wYXRoICYmICEodmFsdWUucmVhZGFibGUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBWZXJzaW9uJykpICkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBubyBuZWVkIHRvIGJvdGhlciB3aXRoIHRoZSBsZW5ndGhcbiAgaWYgKCFvcHRpb25zLmtub3duTGVuZ3RoKSB7XG4gICAgdGhpcy5fdmFsdWVzVG9NZWFzdXJlLnB1c2godmFsdWUpO1xuICB9XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX2xlbmd0aFJldHJpZXZlciA9IGZ1bmN0aW9uKHZhbHVlLCBjYWxsYmFjaykge1xuXG4gIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnZmQnKSkge1xuXG4gICAgLy8gdGFrZSByZWFkIHJhbmdlIGludG8gYSBhY2NvdW50XG4gICAgLy8gYGVuZGAgPSBJbmZpbml0eSDigJM+IHJlYWQgZmlsZSB0aWxsIHRoZSBlbmRcbiAgICAvL1xuICAgIC8vIFRPRE86IExvb2tzIGxpa2UgdGhlcmUgaXMgYnVnIGluIE5vZGUgZnMuY3JlYXRlUmVhZFN0cmVhbVxuICAgIC8vIGl0IGRvZXNuJ3QgcmVzcGVjdCBgZW5kYCBvcHRpb25zIHdpdGhvdXQgYHN0YXJ0YCBvcHRpb25zXG4gICAgLy8gRml4IGl0IHdoZW4gbm9kZSBmaXhlcyBpdC5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzc4MTlcbiAgICBpZiAodmFsdWUuZW5kICE9IHVuZGVmaW5lZCAmJiB2YWx1ZS5lbmQgIT0gSW5maW5pdHkgJiYgdmFsdWUuc3RhcnQgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIC8vIHdoZW4gZW5kIHNwZWNpZmllZFxuICAgICAgLy8gbm8gbmVlZCB0byBjYWxjdWxhdGUgcmFuZ2VcbiAgICAgIC8vIGluY2x1c2l2ZSwgc3RhcnRzIHdpdGggMFxuICAgICAgY2FsbGJhY2sobnVsbCwgdmFsdWUuZW5kICsgMSAtICh2YWx1ZS5zdGFydCA/IHZhbHVlLnN0YXJ0IDogMCkpO1xuXG4gICAgLy8gbm90IHRoYXQgZmFzdCBzbm9vcHlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc3RpbGwgbmVlZCB0byBmZXRjaCBmaWxlIHNpemUgZnJvbSBmc1xuICAgICAgZnMuc3RhdCh2YWx1ZS5wYXRoLCBmdW5jdGlvbihlcnIsIHN0YXQpIHtcblxuICAgICAgICB2YXIgZmlsZVNpemU7XG5cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXBkYXRlIGZpbmFsIHNpemUgYmFzZWQgb24gdGhlIHJhbmdlIG9wdGlvbnNcbiAgICAgICAgZmlsZVNpemUgPSBzdGF0LnNpemUgLSAodmFsdWUuc3RhcnQgPyB2YWx1ZS5zdGFydCA6IDApO1xuICAgICAgICBjYWxsYmFjayhudWxsLCBmaWxlU2l6ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgLy8gb3IgaHR0cCByZXNwb25zZVxuICB9IGVsc2UgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdodHRwVmVyc2lvbicpKSB7XG4gICAgY2FsbGJhY2sobnVsbCwgK3ZhbHVlLmhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ10pO1xuXG4gIC8vIG9yIHJlcXVlc3Qgc3RyZWFtIGh0dHA6Ly9naXRodWIuY29tL21pa2VhbC9yZXF1ZXN0XG4gIH0gZWxzZSBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBNb2R1bGUnKSkge1xuICAgIC8vIHdhaXQgdGlsbCByZXNwb25zZSBjb21lIGJhY2tcbiAgICB2YWx1ZS5vbigncmVzcG9uc2UnLCBmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgdmFsdWUucGF1c2UoKTtcbiAgICAgIGNhbGxiYWNrKG51bGwsICtyZXNwb25zZS5oZWFkZXJzWydjb250ZW50LWxlbmd0aCddKTtcbiAgICB9KTtcbiAgICB2YWx1ZS5yZXN1bWUoKTtcblxuICAvLyBzb21ldGhpbmcgZWxzZVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKCdVbmtub3duIHN0cmVhbScpO1xuICB9XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX211bHRpUGFydEhlYWRlciA9IGZ1bmN0aW9uKGZpZWxkLCB2YWx1ZSwgb3B0aW9ucykge1xuICAvLyBjdXN0b20gaGVhZGVyIHNwZWNpZmllZCAoYXMgc3RyaW5nKT9cbiAgLy8gaXQgYmVjb21lcyByZXNwb25zaWJsZSBmb3IgYm91bmRhcnlcbiAgLy8gKGUuZy4gdG8gaGFuZGxlIGV4dHJhIENSTEZzIG9uIC5ORVQgc2VydmVycylcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmhlYWRlciA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBvcHRpb25zLmhlYWRlcjtcbiAgfVxuXG4gIHZhciBjb250ZW50RGlzcG9zaXRpb24gPSB0aGlzLl9nZXRDb250ZW50RGlzcG9zaXRpb24odmFsdWUsIG9wdGlvbnMpO1xuICB2YXIgY29udGVudFR5cGUgPSB0aGlzLl9nZXRDb250ZW50VHlwZSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgdmFyIGNvbnRlbnRzID0gJyc7XG4gIHZhciBoZWFkZXJzICA9IHtcbiAgICAvLyBhZGQgY3VzdG9tIGRpc3Bvc2l0aW9uIGFzIHRoaXJkIGVsZW1lbnQgb3Iga2VlcCBpdCB0d28gZWxlbWVudHMgaWYgbm90XG4gICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBbJ2Zvcm0tZGF0YScsICduYW1lPVwiJyArIGZpZWxkICsgJ1wiJ10uY29uY2F0KGNvbnRlbnREaXNwb3NpdGlvbiB8fCBbXSksXG4gICAgLy8gaWYgbm8gY29udGVudCB0eXBlLiBhbGxvdyBpdCB0byBiZSBlbXB0eSBhcnJheVxuICAgICdDb250ZW50LVR5cGUnOiBbXS5jb25jYXQoY29udGVudFR5cGUgfHwgW10pXG4gIH07XG5cbiAgLy8gYWxsb3cgY3VzdG9tIGhlYWRlcnMuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5oZWFkZXIgPT0gJ29iamVjdCcpIHtcbiAgICBwb3B1bGF0ZShoZWFkZXJzLCBvcHRpb25zLmhlYWRlcik7XG4gIH1cblxuICB2YXIgaGVhZGVyO1xuICBmb3IgKHZhciBwcm9wIGluIGhlYWRlcnMpIHtcbiAgICBpZiAoIWhlYWRlcnMuaGFzT3duUHJvcGVydHkocHJvcCkpIGNvbnRpbnVlO1xuICAgIGhlYWRlciA9IGhlYWRlcnNbcHJvcF07XG5cbiAgICAvLyBza2lwIG51bGxpc2ggaGVhZGVycy5cbiAgICBpZiAoaGVhZGVyID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIGNvbnZlcnQgYWxsIGhlYWRlcnMgdG8gYXJyYXlzLlxuICAgIGlmICghQXJyYXkuaXNBcnJheShoZWFkZXIpKSB7XG4gICAgICBoZWFkZXIgPSBbaGVhZGVyXTtcbiAgICB9XG5cbiAgICAvLyBhZGQgbm9uLWVtcHR5IGhlYWRlcnMuXG4gICAgaWYgKGhlYWRlci5sZW5ndGgpIHtcbiAgICAgIGNvbnRlbnRzICs9IHByb3AgKyAnOiAnICsgaGVhZGVyLmpvaW4oJzsgJykgKyBGb3JtRGF0YS5MSU5FX0JSRUFLO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnLS0nICsgdGhpcy5nZXRCb3VuZGFyeSgpICsgRm9ybURhdGEuTElORV9CUkVBSyArIGNvbnRlbnRzICsgRm9ybURhdGEuTElORV9CUkVBSztcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fZ2V0Q29udGVudERpc3Bvc2l0aW9uID0gZnVuY3Rpb24odmFsdWUsIG9wdGlvbnMpIHtcblxuICB2YXIgZmlsZW5hbWVcbiAgICAsIGNvbnRlbnREaXNwb3NpdGlvblxuICAgIDtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuZmlsZXBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gY3VzdG9tIGZpbGVwYXRoIGZvciByZWxhdGl2ZSBwYXRoc1xuICAgIGZpbGVuYW1lID0gcGF0aC5ub3JtYWxpemUob3B0aW9ucy5maWxlcGF0aCkucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuZmlsZW5hbWUgfHwgdmFsdWUubmFtZSB8fCB2YWx1ZS5wYXRoKSB7XG4gICAgLy8gY3VzdG9tIGZpbGVuYW1lIHRha2UgcHJlY2VkZW5jZVxuICAgIC8vIGZvcm1pZGFibGUgYW5kIHRoZSBicm93c2VyIGFkZCBhIG5hbWUgcHJvcGVydHlcbiAgICAvLyBmcy0gYW5kIHJlcXVlc3QtIHN0cmVhbXMgaGF2ZSBwYXRoIHByb3BlcnR5XG4gICAgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKG9wdGlvbnMuZmlsZW5hbWUgfHwgdmFsdWUubmFtZSB8fCB2YWx1ZS5wYXRoKTtcbiAgfSBlbHNlIGlmICh2YWx1ZS5yZWFkYWJsZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaHR0cFZlcnNpb24nKSkge1xuICAgIC8vIG9yIHRyeSBodHRwIHJlc3BvbnNlXG4gICAgZmlsZW5hbWUgPSBwYXRoLmJhc2VuYW1lKHZhbHVlLmNsaWVudC5faHR0cE1lc3NhZ2UucGF0aCB8fCAnJyk7XG4gIH1cblxuICBpZiAoZmlsZW5hbWUpIHtcbiAgICBjb250ZW50RGlzcG9zaXRpb24gPSAnZmlsZW5hbWU9XCInICsgZmlsZW5hbWUgKyAnXCInO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRlbnREaXNwb3NpdGlvbjtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fZ2V0Q29udGVudFR5cGUgPSBmdW5jdGlvbih2YWx1ZSwgb3B0aW9ucykge1xuXG4gIC8vIHVzZSBjdXN0b20gY29udGVudC10eXBlIGFib3ZlIGFsbFxuICB2YXIgY29udGVudFR5cGUgPSBvcHRpb25zLmNvbnRlbnRUeXBlO1xuXG4gIC8vIG9yIHRyeSBgbmFtZWAgZnJvbSBmb3JtaWRhYmxlLCBicm93c2VyXG4gIGlmICghY29udGVudFR5cGUgJiYgdmFsdWUubmFtZSkge1xuICAgIGNvbnRlbnRUeXBlID0gbWltZS5sb29rdXAodmFsdWUubmFtZSk7XG4gIH1cblxuICAvLyBvciB0cnkgYHBhdGhgIGZyb20gZnMtLCByZXF1ZXN0LSBzdHJlYW1zXG4gIGlmICghY29udGVudFR5cGUgJiYgdmFsdWUucGF0aCkge1xuICAgIGNvbnRlbnRUeXBlID0gbWltZS5sb29rdXAodmFsdWUucGF0aCk7XG4gIH1cblxuICAvLyBvciBpZiBpdCdzIGh0dHAtcmVwb25zZVxuICBpZiAoIWNvbnRlbnRUeXBlICYmIHZhbHVlLnJlYWRhYmxlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCdodHRwVmVyc2lvbicpKSB7XG4gICAgY29udGVudFR5cGUgPSB2YWx1ZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXTtcbiAgfVxuXG4gIC8vIG9yIGd1ZXNzIGl0IGZyb20gdGhlIGZpbGVwYXRoIG9yIGZpbGVuYW1lXG4gIGlmICghY29udGVudFR5cGUgJiYgKG9wdGlvbnMuZmlsZXBhdGggfHwgb3B0aW9ucy5maWxlbmFtZSkpIHtcbiAgICBjb250ZW50VHlwZSA9IG1pbWUubG9va3VwKG9wdGlvbnMuZmlsZXBhdGggfHwgb3B0aW9ucy5maWxlbmFtZSk7XG4gIH1cblxuICAvLyBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaWYgYHZhbHVlYCBpcyBub3Qgc2ltcGxlIHZhbHVlXG4gIGlmICghY29udGVudFR5cGUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgY29udGVudFR5cGUgPSBGb3JtRGF0YS5ERUZBVUxUX0NPTlRFTlRfVFlQRTtcbiAgfVxuXG4gIHJldHVybiBjb250ZW50VHlwZTtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fbXVsdGlQYXJ0Rm9vdGVyID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBmdW5jdGlvbihuZXh0KSB7XG4gICAgdmFyIGZvb3RlciA9IEZvcm1EYXRhLkxJTkVfQlJFQUs7XG5cbiAgICB2YXIgbGFzdFBhcnQgPSAodGhpcy5fc3RyZWFtcy5sZW5ndGggPT09IDApO1xuICAgIGlmIChsYXN0UGFydCkge1xuICAgICAgZm9vdGVyICs9IHRoaXMuX2xhc3RCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIG5leHQoZm9vdGVyKTtcbiAgfS5iaW5kKHRoaXMpO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9sYXN0Qm91bmRhcnkgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuICctLScgKyB0aGlzLmdldEJvdW5kYXJ5KCkgKyAnLS0nICsgRm9ybURhdGEuTElORV9CUkVBSztcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5nZXRIZWFkZXJzID0gZnVuY3Rpb24odXNlckhlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcjtcbiAgdmFyIGZvcm1IZWFkZXJzID0ge1xuICAgICdjb250ZW50LXR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JyArIHRoaXMuZ2V0Qm91bmRhcnkoKVxuICB9O1xuXG4gIGZvciAoaGVhZGVyIGluIHVzZXJIZWFkZXJzKSB7XG4gICAgaWYgKHVzZXJIZWFkZXJzLmhhc093blByb3BlcnR5KGhlYWRlcikpIHtcbiAgICAgIGZvcm1IZWFkZXJzW2hlYWRlci50b0xvd2VyQ2FzZSgpXSA9IHVzZXJIZWFkZXJzW2hlYWRlcl07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZvcm1IZWFkZXJzO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLmdldEJvdW5kYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5fYm91bmRhcnkpIHtcbiAgICB0aGlzLl9nZW5lcmF0ZUJvdW5kYXJ5KCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fYm91bmRhcnk7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBkYXRhQnVmZmVyID0gbmV3IEJ1ZmZlci5hbGxvYyggMCApO1xuICB2YXIgYm91bmRhcnkgPSB0aGlzLmdldEJvdW5kYXJ5KCk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBmb3JtIGNvbnRlbnQuIEFkZCBMaW5lIGJyZWFrcyB0byB0aGUgZW5kIG9mIGRhdGEuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLl9zdHJlYW1zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9zdHJlYW1zW2ldICE9PSAnZnVuY3Rpb24nKSB7XG5cbiAgICAgIC8vIEFkZCBjb250ZW50IHRvIHRoZSBidWZmZXIuXG4gICAgICBpZihCdWZmZXIuaXNCdWZmZXIodGhpcy5fc3RyZWFtc1tpXSkpIHtcbiAgICAgICAgZGF0YUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoIFtkYXRhQnVmZmVyLCB0aGlzLl9zdHJlYW1zW2ldXSk7XG4gICAgICB9ZWxzZSB7XG4gICAgICAgIGRhdGFCdWZmZXIgPSBCdWZmZXIuY29uY2F0KCBbZGF0YUJ1ZmZlciwgQnVmZmVyLmZyb20odGhpcy5fc3RyZWFtc1tpXSldKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGJyZWFrIGFmdGVyIGNvbnRlbnQuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuX3N0cmVhbXNbaV0gIT09ICdzdHJpbmcnIHx8IHRoaXMuX3N0cmVhbXNbaV0uc3Vic3RyaW5nKCAyLCBib3VuZGFyeS5sZW5ndGggKyAyICkgIT09IGJvdW5kYXJ5KSB7XG4gICAgICAgIGRhdGFCdWZmZXIgPSBCdWZmZXIuY29uY2F0KCBbZGF0YUJ1ZmZlciwgQnVmZmVyLmZyb20oRm9ybURhdGEuTElORV9CUkVBSyldICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBmb290ZXIgYW5kIHJldHVybiB0aGUgQnVmZmVyIG9iamVjdC5cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoIFtkYXRhQnVmZmVyLCBCdWZmZXIuZnJvbSh0aGlzLl9sYXN0Qm91bmRhcnkoKSldICk7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX2dlbmVyYXRlQm91bmRhcnkgPSBmdW5jdGlvbigpIHtcbiAgLy8gVGhpcyBnZW5lcmF0ZXMgYSA1MCBjaGFyYWN0ZXIgYm91bmRhcnkgc2ltaWxhciB0byB0aG9zZSB1c2VkIGJ5IEZpcmVmb3guXG4gIC8vIFRoZXkgYXJlIG9wdGltaXplZCBmb3IgYm95ZXItbW9vcmUgcGFyc2luZy5cbiAgdmFyIGJvdW5kYXJ5ID0gJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgYm91bmRhcnkgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKDE2KTtcbiAgfVxuXG4gIHRoaXMuX2JvdW5kYXJ5ID0gYm91bmRhcnk7XG59O1xuXG4vLyBOb3RlOiBnZXRMZW5ndGhTeW5jIERPRVNOJ1QgY2FsY3VsYXRlIHN0cmVhbXMgbGVuZ3RoXG4vLyBBcyB3b3JrYXJvdW5kIG9uZSBjYW4gY2FsY3VsYXRlIGZpbGUgc2l6ZSBtYW51YWxseVxuLy8gYW5kIGFkZCBpdCBhcyBrbm93bkxlbmd0aCBvcHRpb25cbkZvcm1EYXRhLnByb3RvdHlwZS5nZXRMZW5ndGhTeW5jID0gZnVuY3Rpb24oKSB7XG4gIHZhciBrbm93bkxlbmd0aCA9IHRoaXMuX292ZXJoZWFkTGVuZ3RoICsgdGhpcy5fdmFsdWVMZW5ndGg7XG5cbiAgLy8gRG9uJ3QgZ2V0IGNvbmZ1c2VkLCB0aGVyZSBhcmUgMyBcImludGVybmFsXCIgc3RyZWFtcyBmb3IgZWFjaCBrZXl2YWwgcGFpclxuICAvLyBzbyBpdCBiYXNpY2FsbHkgY2hlY2tzIGlmIHRoZXJlIGlzIGFueSB2YWx1ZSBhZGRlZCB0byB0aGUgZm9ybVxuICBpZiAodGhpcy5fc3RyZWFtcy5sZW5ndGgpIHtcbiAgICBrbm93bkxlbmd0aCArPSB0aGlzLl9sYXN0Qm91bmRhcnkoKS5sZW5ndGg7XG4gIH1cblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm9ybS1kYXRhL2Zvcm0tZGF0YS9pc3N1ZXMvNDBcbiAgaWYgKCF0aGlzLmhhc0tub3duTGVuZ3RoKCkpIHtcbiAgICAvLyBTb21lIGFzeW5jIGxlbmd0aCByZXRyaWV2ZXJzIGFyZSBwcmVzZW50XG4gICAgLy8gdGhlcmVmb3JlIHN5bmNocm9ub3VzIGxlbmd0aCBjYWxjdWxhdGlvbiBpcyBmYWxzZS5cbiAgICAvLyBQbGVhc2UgdXNlIGdldExlbmd0aChjYWxsYmFjaykgdG8gZ2V0IHByb3BlciBsZW5ndGhcbiAgICB0aGlzLl9lcnJvcihuZXcgRXJyb3IoJ0Nhbm5vdCBjYWxjdWxhdGUgcHJvcGVyIGxlbmd0aCBpbiBzeW5jaHJvbm91cyB3YXkuJykpO1xuICB9XG5cbiAgcmV0dXJuIGtub3duTGVuZ3RoO1xufTtcblxuLy8gUHVibGljIEFQSSB0byBjaGVjayBpZiBsZW5ndGggb2YgYWRkZWQgdmFsdWVzIGlzIGtub3duXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZm9ybS1kYXRhL2Zvcm0tZGF0YS9pc3N1ZXMvMTk2XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZm9ybS1kYXRhL2Zvcm0tZGF0YS9pc3N1ZXMvMjYyXG5Gb3JtRGF0YS5wcm90b3R5cGUuaGFzS25vd25MZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgdmFyIGhhc0tub3duTGVuZ3RoID0gdHJ1ZTtcblxuICBpZiAodGhpcy5fdmFsdWVzVG9NZWFzdXJlLmxlbmd0aCkge1xuICAgIGhhc0tub3duTGVuZ3RoID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaGFzS25vd25MZW5ndGg7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuZ2V0TGVuZ3RoID0gZnVuY3Rpb24oY2IpIHtcbiAgdmFyIGtub3duTGVuZ3RoID0gdGhpcy5fb3ZlcmhlYWRMZW5ndGggKyB0aGlzLl92YWx1ZUxlbmd0aDtcblxuICBpZiAodGhpcy5fc3RyZWFtcy5sZW5ndGgpIHtcbiAgICBrbm93bkxlbmd0aCArPSB0aGlzLl9sYXN0Qm91bmRhcnkoKS5sZW5ndGg7XG4gIH1cblxuICBpZiAoIXRoaXMuX3ZhbHVlc1RvTWVhc3VyZS5sZW5ndGgpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLmJpbmQodGhpcywgbnVsbCwga25vd25MZW5ndGgpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhc3luY2tpdC5wYXJhbGxlbCh0aGlzLl92YWx1ZXNUb01lYXN1cmUsIHRoaXMuX2xlbmd0aFJldHJpZXZlciwgZnVuY3Rpb24oZXJyLCB2YWx1ZXMpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjYihlcnIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGxlbmd0aCkge1xuICAgICAga25vd25MZW5ndGggKz0gbGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgY2IobnVsbCwga25vd25MZW5ndGgpO1xuICB9KTtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5zdWJtaXQgPSBmdW5jdGlvbihwYXJhbXMsIGNiKSB7XG4gIHZhciByZXF1ZXN0XG4gICAgLCBvcHRpb25zXG4gICAgLCBkZWZhdWx0cyA9IHttZXRob2Q6ICdwb3N0J31cbiAgICA7XG5cbiAgLy8gcGFyc2UgcHJvdmlkZWQgdXJsIGlmIGl0J3Mgc3RyaW5nXG4gIC8vIG9yIHRyZWF0IGl0IGFzIG9wdGlvbnMgb2JqZWN0XG4gIGlmICh0eXBlb2YgcGFyYW1zID09ICdzdHJpbmcnKSB7XG5cbiAgICBwYXJhbXMgPSBwYXJzZVVybChwYXJhbXMpO1xuICAgIG9wdGlvbnMgPSBwb3B1bGF0ZSh7XG4gICAgICBwb3J0OiBwYXJhbXMucG9ydCxcbiAgICAgIHBhdGg6IHBhcmFtcy5wYXRobmFtZSxcbiAgICAgIGhvc3Q6IHBhcmFtcy5ob3N0bmFtZSxcbiAgICAgIHByb3RvY29sOiBwYXJhbXMucHJvdG9jb2xcbiAgICB9LCBkZWZhdWx0cyk7XG5cbiAgLy8gdXNlIGN1c3RvbSBwYXJhbXNcbiAgfSBlbHNlIHtcblxuICAgIG9wdGlvbnMgPSBwb3B1bGF0ZShwYXJhbXMsIGRlZmF1bHRzKTtcbiAgICAvLyBpZiBubyBwb3J0IHByb3ZpZGVkIHVzZSBkZWZhdWx0IG9uZVxuICAgIGlmICghb3B0aW9ucy5wb3J0KSB7XG4gICAgICBvcHRpb25zLnBvcnQgPSBvcHRpb25zLnByb3RvY29sID09ICdodHRwczonID8gNDQzIDogODA7XG4gICAgfVxuICB9XG5cbiAgLy8gcHV0IHRoYXQgZ29vZCBjb2RlIGluIGdldEhlYWRlcnMgdG8gc29tZSB1c2VcbiAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKHBhcmFtcy5oZWFkZXJzKTtcblxuICAvLyBodHRwcyBpZiBzcGVjaWZpZWQsIGZhbGxiYWNrIHRvIGh0dHAgaW4gYW55IG90aGVyIGNhc2VcbiAgaWYgKG9wdGlvbnMucHJvdG9jb2wgPT0gJ2h0dHBzOicpIHtcbiAgICByZXF1ZXN0ID0gaHR0cHMucmVxdWVzdChvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXF1ZXN0ID0gaHR0cC5yZXF1ZXN0KG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gZ2V0IGNvbnRlbnQgbGVuZ3RoIGFuZCBmaXJlIGF3YXlcbiAgdGhpcy5nZXRMZW5ndGgoZnVuY3Rpb24oZXJyLCBsZW5ndGgpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICB0aGlzLl9lcnJvcihlcnIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFkZCBjb250ZW50IGxlbmd0aFxuICAgIHJlcXVlc3Quc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIGxlbmd0aCk7XG5cbiAgICB0aGlzLnBpcGUocmVxdWVzdCk7XG4gICAgaWYgKGNiKSB7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIGNiKTtcbiAgICAgIHJlcXVlc3Qub24oJ3Jlc3BvbnNlJywgY2IuYmluZCh0aGlzLCBudWxsKSk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xuXG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uKGVycikge1xuICBpZiAoIXRoaXMuZXJyb3IpIHtcbiAgICB0aGlzLmVycm9yID0gZXJyO1xuICAgIHRoaXMucGF1c2UoKTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgfVxufTtcblxuRm9ybURhdGEucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gJ1tvYmplY3QgRm9ybURhdGFdJztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmc1wiKTsiLCJ2YXIgYXN5bmMgPSByZXF1aXJlKCcuL2FzeW5jLmpzJylcbiAgLCBhYm9ydCA9IHJlcXVpcmUoJy4vYWJvcnQuanMnKVxuICA7XG5cbi8vIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBpdGVyYXRlO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWFjaCBqb2Igb2JqZWN0XG4gKlxuICogQHBhcmFtIHthcnJheXxvYmplY3R9IGxpc3QgLSBhcnJheSBvciBvYmplY3QgKG5hbWVkIGxpc3QpIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gaXRlcmF0b3IgLSBpdGVyYXRvciB0byBydW5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgam9iIHN0YXR1c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBpbnZva2VkIHdoZW4gYWxsIGVsZW1lbnRzIHByb2Nlc3NlZFxuICovXG5mdW5jdGlvbiBpdGVyYXRlKGxpc3QsIGl0ZXJhdG9yLCBzdGF0ZSwgY2FsbGJhY2spXG57XG4gIC8vIHN0b3JlIGN1cnJlbnQgaW5kZXhcbiAgdmFyIGtleSA9IHN0YXRlWydrZXllZExpc3QnXSA/IHN0YXRlWydrZXllZExpc3QnXVtzdGF0ZS5pbmRleF0gOiBzdGF0ZS5pbmRleDtcblxuICBzdGF0ZS5qb2JzW2tleV0gPSBydW5Kb2IoaXRlcmF0b3IsIGtleSwgbGlzdFtrZXldLCBmdW5jdGlvbihlcnJvciwgb3V0cHV0KVxuICB7XG4gICAgLy8gZG9uJ3QgcmVwZWF0IHlvdXJzZWxmXG4gICAgLy8gc2tpcCBzZWNvbmRhcnkgY2FsbGJhY2tzXG4gICAgaWYgKCEoa2V5IGluIHN0YXRlLmpvYnMpKVxuICAgIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjbGVhbiB1cCBqb2JzXG4gICAgZGVsZXRlIHN0YXRlLmpvYnNba2V5XTtcblxuICAgIGlmIChlcnJvcilcbiAgICB7XG4gICAgICAvLyBkb24ndCBwcm9jZXNzIHJlc3Qgb2YgdGhlIHJlc3VsdHNcbiAgICAgIC8vIHN0b3Agc3RpbGwgYWN0aXZlIGpvYnNcbiAgICAgIC8vIGFuZCByZXNldCB0aGUgbGlzdFxuICAgICAgYWJvcnQoc3RhdGUpO1xuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgc3RhdGUucmVzdWx0c1trZXldID0gb3V0cHV0O1xuICAgIH1cblxuICAgIC8vIHJldHVybiBzYWx2YWdlZCByZXN1bHRzXG4gICAgY2FsbGJhY2soZXJyb3IsIHN0YXRlLnJlc3VsdHMpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGl0ZXJhdG9yIG92ZXIgcHJvdmlkZWQgam9iIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGl0ZXJhdG9yIC0gaXRlcmF0b3IgdG8gaW52b2tlXG4gKiBAcGFyYW0gICB7c3RyaW5nfG51bWJlcn0ga2V5IC0ga2V5L2luZGV4IG9mIHRoZSBlbGVtZW50IGluIHRoZSBsaXN0IG9mIGpvYnNcbiAqIEBwYXJhbSAgIHttaXhlZH0gaXRlbSAtIGpvYiBkZXNjcmlwdGlvblxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGludm9rZWQgYWZ0ZXIgaXRlcmF0b3IgaXMgZG9uZSB3aXRoIHRoZSBqb2JcbiAqIEByZXR1cm5zIHtmdW5jdGlvbnxtaXhlZH0gLSBqb2IgYWJvcnQgZnVuY3Rpb24gb3Igc29tZXRoaW5nIGVsc2VcbiAqL1xuZnVuY3Rpb24gcnVuSm9iKGl0ZXJhdG9yLCBrZXksIGl0ZW0sIGNhbGxiYWNrKVxue1xuICB2YXIgYWJvcnRlcjtcblxuICAvLyBhbGxvdyBzaG9ydGN1dCBpZiBpdGVyYXRvciBleHBlY3RzIG9ubHkgdHdvIGFyZ3VtZW50c1xuICBpZiAoaXRlcmF0b3IubGVuZ3RoID09IDIpXG4gIHtcbiAgICBhYm9ydGVyID0gaXRlcmF0b3IoaXRlbSwgYXN5bmMoY2FsbGJhY2spKTtcbiAgfVxuICAvLyBvdGhlcndpc2UgZ28gd2l0aCBmdWxsIHRocmVlIGFyZ3VtZW50c1xuICBlbHNlXG4gIHtcbiAgICBhYm9ydGVyID0gaXRlcmF0b3IoaXRlbSwga2V5LCBhc3luYyhjYWxsYmFjaykpO1xuICB9XG5cbiAgcmV0dXJuIGFib3J0ZXI7XG59XG4iLCJ2YXIgZGVmZXIgPSByZXF1aXJlKCcuL2RlZmVyLmpzJyk7XG5cbi8vIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBhc3luYztcblxuLyoqXG4gKiBSdW5zIHByb3ZpZGVkIGNhbGxiYWNrIGFzeW5jaHJvbm91c2x5XG4gKiBldmVuIGlmIGNhbGxiYWNrIGl0c2VsZiBpcyBub3RcbiAqXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gY2FsbGJhY2sgdG8gaW52b2tlXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IC0gYXVnbWVudGVkIGNhbGxiYWNrXG4gKi9cbmZ1bmN0aW9uIGFzeW5jKGNhbGxiYWNrKVxue1xuICB2YXIgaXNBc3luYyA9IGZhbHNlO1xuXG4gIC8vIGNoZWNrIGlmIGFzeW5jIGhhcHBlbmVkXG4gIGRlZmVyKGZ1bmN0aW9uKCkgeyBpc0FzeW5jID0gdHJ1ZTsgfSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGFzeW5jX2NhbGxiYWNrKGVyciwgcmVzdWx0KVxuICB7XG4gICAgaWYgKGlzQXN5bmMpXG4gICAge1xuICAgICAgY2FsbGJhY2soZXJyLCByZXN1bHQpO1xuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgZGVmZXIoZnVuY3Rpb24gbmV4dFRpY2tfY2FsbGJhY2soKVxuICAgICAge1xuICAgICAgICBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG4iLCIvLyBBUElcbm1vZHVsZS5leHBvcnRzID0gYWJvcnQ7XG5cbi8qKlxuICogQWJvcnRzIGxlZnRvdmVyIGFjdGl2ZSBqb2JzXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvYmplY3RcbiAqL1xuZnVuY3Rpb24gYWJvcnQoc3RhdGUpXG57XG4gIE9iamVjdC5rZXlzKHN0YXRlLmpvYnMpLmZvckVhY2goY2xlYW4uYmluZChzdGF0ZSkpO1xuXG4gIC8vIHJlc2V0IGxlZnRvdmVyIGpvYnNcbiAgc3RhdGUuam9icyA9IHt9O1xufVxuXG4vKipcbiAqIENsZWFucyB1cCBsZWZ0b3ZlciBqb2IgYnkgaW52b2tpbmcgYWJvcnQgZnVuY3Rpb24gZm9yIHRoZSBwcm92aWRlZCBqb2IgaWRcbiAqXG4gKiBAdGhpcyAgc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0ga2V5IC0gam9iIGlkIHRvIGFib3J0XG4gKi9cbmZ1bmN0aW9uIGNsZWFuKGtleSlcbntcbiAgaWYgKHR5cGVvZiB0aGlzLmpvYnNba2V5XSA9PSAnZnVuY3Rpb24nKVxuICB7XG4gICAgdGhpcy5qb2JzW2tleV0oKTtcbiAgfVxufVxuIiwiLy8gQVBJXG5tb2R1bGUuZXhwb3J0cyA9IHN0YXRlO1xuXG4vKipcbiAqIENyZWF0ZXMgaW5pdGlhbCBzdGF0ZSBvYmplY3RcbiAqIGZvciBpdGVyYXRpb24gb3ZlciBsaXN0XG4gKlxuICogQHBhcmFtICAge2FycmF5fG9iamVjdH0gbGlzdCAtIGxpc3QgdG8gaXRlcmF0ZSBvdmVyXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb258bnVsbH0gc29ydE1ldGhvZCAtIGZ1bmN0aW9uIHRvIHVzZSBmb3Iga2V5cyBzb3J0LFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYG51bGxgIHRvIGtlZXAgdGhlbSBhcyBpc1xuICogQHJldHVybnMge29iamVjdH0gLSBpbml0aWFsIHN0YXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBzdGF0ZShsaXN0LCBzb3J0TWV0aG9kKVxue1xuICB2YXIgaXNOYW1lZExpc3QgPSAhQXJyYXkuaXNBcnJheShsaXN0KVxuICAgICwgaW5pdFN0YXRlID1cbiAgICB7XG4gICAgICBpbmRleCAgICA6IDAsXG4gICAgICBrZXllZExpc3Q6IGlzTmFtZWRMaXN0IHx8IHNvcnRNZXRob2QgPyBPYmplY3Qua2V5cyhsaXN0KSA6IG51bGwsXG4gICAgICBqb2JzICAgICA6IHt9LFxuICAgICAgcmVzdWx0cyAgOiBpc05hbWVkTGlzdCA/IHt9IDogW10sXG4gICAgICBzaXplICAgICA6IGlzTmFtZWRMaXN0ID8gT2JqZWN0LmtleXMobGlzdCkubGVuZ3RoIDogbGlzdC5sZW5ndGhcbiAgICB9XG4gICAgO1xuXG4gIGlmIChzb3J0TWV0aG9kKVxuICB7XG4gICAgLy8gc29ydCBhcnJheSBrZXlzIGJhc2VkIG9uIGl0J3MgdmFsdWVzXG4gICAgLy8gc29ydCBvYmplY3QncyBrZXlzIGp1c3Qgb24gb3duIG1lcml0XG4gICAgaW5pdFN0YXRlLmtleWVkTGlzdC5zb3J0KGlzTmFtZWRMaXN0ID8gc29ydE1ldGhvZCA6IGZ1bmN0aW9uKGEsIGIpXG4gICAge1xuICAgICAgcmV0dXJuIHNvcnRNZXRob2QobGlzdFthXSwgbGlzdFtiXSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaW5pdFN0YXRlO1xufVxuIiwidmFyIGFib3J0ID0gcmVxdWlyZSgnLi9hYm9ydC5qcycpXG4gICwgYXN5bmMgPSByZXF1aXJlKCcuL2FzeW5jLmpzJylcbiAgO1xuXG4vLyBBUElcbm1vZHVsZS5leHBvcnRzID0gdGVybWluYXRvcjtcblxuLyoqXG4gKiBUZXJtaW5hdGVzIGpvYnMgaW4gdGhlIGF0dGFjaGVkIHN0YXRlIGNvbnRleHRcbiAqXG4gKiBAdGhpcyAgQXN5bmNLaXRTdGF0ZSNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZmluYWwgY2FsbGJhY2sgdG8gaW52b2tlIGFmdGVyIHRlcm1pbmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHRlcm1pbmF0b3IoY2FsbGJhY2spXG57XG4gIGlmICghT2JqZWN0LmtleXModGhpcy5qb2JzKS5sZW5ndGgpXG4gIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBmYXN0IGZvcndhcmQgaXRlcmF0aW9uIGluZGV4XG4gIHRoaXMuaW5kZXggPSB0aGlzLnNpemU7XG5cbiAgLy8gYWJvcnQgam9ic1xuICBhYm9ydCh0aGlzKTtcblxuICAvLyBzZW5kIGJhY2sgcmVzdWx0cyB3ZSBoYXZlIHNvIGZhclxuICBhc3luYyhjYWxsYmFjaykobnVsbCwgdGhpcy5yZXN1bHRzKTtcbn1cbiIsInZhciBpdGVyYXRlICAgID0gcmVxdWlyZSgnLi9saWIvaXRlcmF0ZS5qcycpXG4gICwgaW5pdFN0YXRlICA9IHJlcXVpcmUoJy4vbGliL3N0YXRlLmpzJylcbiAgLCB0ZXJtaW5hdG9yID0gcmVxdWlyZSgnLi9saWIvdGVybWluYXRvci5qcycpXG4gIDtcblxuLy8gUHVibGljIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxPcmRlcmVkO1xuLy8gc29ydGluZyBoZWxwZXJzXG5tb2R1bGUuZXhwb3J0cy5hc2NlbmRpbmcgID0gYXNjZW5kaW5nO1xubW9kdWxlLmV4cG9ydHMuZGVzY2VuZGluZyA9IGRlc2NlbmRpbmc7XG5cbi8qKlxuICogUnVucyBpdGVyYXRvciBvdmVyIHByb3ZpZGVkIHNvcnRlZCBhcnJheSBlbGVtZW50cyBpbiBzZXJpZXNcbiAqXG4gKiBAcGFyYW0gICB7YXJyYXl8b2JqZWN0fSBsaXN0IC0gYXJyYXkgb3Igb2JqZWN0IChuYW1lZCBsaXN0KSB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gaXRlcmF0b3IgLSBpdGVyYXRvciB0byBydW5cbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gc29ydE1ldGhvZCAtIGN1c3RvbSBzb3J0IGZ1bmN0aW9uXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gaW52b2tlZCB3aGVuIGFsbCBlbGVtZW50cyBwcm9jZXNzZWRcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn0gLSBqb2JzIHRlcm1pbmF0b3JcbiAqL1xuZnVuY3Rpb24gc2VyaWFsT3JkZXJlZChsaXN0LCBpdGVyYXRvciwgc29ydE1ldGhvZCwgY2FsbGJhY2spXG57XG4gIHZhciBzdGF0ZSA9IGluaXRTdGF0ZShsaXN0LCBzb3J0TWV0aG9kKTtcblxuICBpdGVyYXRlKGxpc3QsIGl0ZXJhdG9yLCBzdGF0ZSwgZnVuY3Rpb24gaXRlcmF0b3JIYW5kbGVyKGVycm9yLCByZXN1bHQpXG4gIHtcbiAgICBpZiAoZXJyb3IpXG4gICAge1xuICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGUuaW5kZXgrKztcblxuICAgIC8vIGFyZSB3ZSB0aGVyZSB5ZXQ/XG4gICAgaWYgKHN0YXRlLmluZGV4IDwgKHN0YXRlWydrZXllZExpc3QnXSB8fCBsaXN0KS5sZW5ndGgpXG4gICAge1xuICAgICAgaXRlcmF0ZShsaXN0LCBpdGVyYXRvciwgc3RhdGUsIGl0ZXJhdG9ySGFuZGxlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZG9uZSBoZXJlXG4gICAgY2FsbGJhY2sobnVsbCwgc3RhdGUucmVzdWx0cyk7XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtaW5hdG9yLmJpbmQoc3RhdGUsIGNhbGxiYWNrKTtcbn1cblxuLypcbiAqIC0tIFNvcnQgbWV0aG9kc1xuICovXG5cbi8qKlxuICogc29ydCBoZWxwZXIgdG8gc29ydCBhcnJheSBlbGVtZW50cyBpbiBhc2NlbmRpbmcgb3JkZXJcbiAqXG4gKiBAcGFyYW0gICB7bWl4ZWR9IGEgLSBhbiBpdGVtIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSAgIHttaXhlZH0gYiAtIGFuIGl0ZW0gdG8gY29tcGFyZVxuICogQHJldHVybnMge251bWJlcn0gLSBjb21wYXJpc29uIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYilcbntcbiAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwO1xufVxuXG4vKipcbiAqIHNvcnQgaGVscGVyIHRvIHNvcnQgYXJyYXkgZWxlbWVudHMgaW4gZGVzY2VuZGluZyBvcmRlclxuICpcbiAqIEBwYXJhbSAgIHttaXhlZH0gYSAtIGFuIGl0ZW0gdG8gY29tcGFyZVxuICogQHBhcmFtICAge21peGVkfSBiIC0gYW4gaXRlbSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIGNvbXBhcmlzb24gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGRlc2NlbmRpbmcoYSwgYilcbntcbiAgcmV0dXJuIC0xICogYXNjZW5kaW5nKGEsIGIpO1xufVxuIiwiXG5pbXBvcnQgTm9kZUZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5cbmltcG9ydCBiYXNlUGF0aENvbnZlcnRlciBmcm9tICdiYXNlLXBhdGgtY29udmVydGVyJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7XG4gICAgUGluYXRhUGluT3B0aW9ucyxcbiAgICBQaW5hdGFQaW5SZXNwb25zZSxcbiAgICB1cGxvYWRUb0lQRlNcbn0gZnJvbSAnLi9waW5GaWxlVG9JUEZTJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaW5Gcm9tRlMoXG4gICAgY29uZmlnOiBQaW5hdGFDb25maWcsXG4gICAgc291cmNlUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBQaW5hdGFQaW5PcHRpb25zXG4pOiBQcm9taXNlPFBpbmF0YVBpblJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KHNvdXJjZVBhdGgpO1xuICAgICAgICBpZiAoc3RhdHMuaXNGaWxlKCkpIHtcblxuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShzb3VyY2VQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgTm9kZUZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdmaWxlJywgc3RyZWFtLCB7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBhdGguYmFzZW5hbWUoc291cmNlUGF0aClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdXBsb2FkVG9JUEZTKGNvbmZpZywgZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihzb3VyY2VQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgTm9kZUZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIC8vZm9yIGVhY2ggZmlsZSBzdHJlYW0sIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgY29ycmVjdCByZWxhdGl2ZSBmaWxlIHBhdGhcbiAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnZmlsZScsIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZSksIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg6IGJhc2VQYXRoQ29udmVydGVyKHNvdXJjZVBhdGgsIGZpbGUpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHVwbG9hZFRvSVBGUyhjb25maWcsIGRhdGEsIG9wdGlvbnMpO1xuXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbn1cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycywgdmFsaWRhdGVNZXRhZGF0YSwgdmFsaWRhdGVQaW5hdGFPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IFBpbmF0YVBpbk9wdGlvbnMsIFBpbmF0YVBpblJlc3BvbnNlIH0gZnJvbSAnLi9waW5GaWxlVG9JUEZTJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGluSlNPTlRvSVBGUyhjb25maWc6IFBpbmF0YUNvbmZpZywgYm9keTogYW55LCBvcHRpb25zPyA6IFBpbmF0YVBpbk9wdGlvbnMpOlByb21pc2U8UGluYXRhUGluUmVzcG9uc2U+IHtcblxuICAgIGxldCByZXF1ZXN0Qm9keTogYW55ID0gYm9keTtcblxuICAgIGlmICh0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdib2R5IG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdCcpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICAgICAgcGluYXRhQ29udGVudDogYm9keVxuICAgICAgICB9O1xuICAgICAgICBpZiAob3B0aW9ucy5waW5hdGFNZXRhZGF0YSkge1xuICAgICAgICAgICAgdmFsaWRhdGVNZXRhZGF0YShvcHRpb25zLnBpbmF0YU1ldGFkYXRhKTtcbiAgICAgICAgICAgIHJlcXVlc3RCb2R5LnBpbmF0YU1ldGFkYXRhID0gb3B0aW9ucy5waW5hdGFNZXRhZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5waW5hdGFPcHRpb25zKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZVBpbmF0YU9wdGlvbnMob3B0aW9ucy5waW5hdGFPcHRpb25zKTtcbiAgICAgICAgICAgIHJlcXVlc3RCb2R5LnBpbmF0YU9wdGlvbnMgPSBvcHRpb25zLnBpbmF0YU9wdGlvbnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2Jhc2VVcmx9L3Bpbm5pbmcvcGluSlNPTlRvSVBGU2A7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5wb3N0KFxuICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICByZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgIHsuLi5jcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMoY29uZmlnKX0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB1bmtub3duIHNlcnZlciByZXNwb25zZSB3aGlsZSBwaW5uaW5nIEpTT04gdG8gSVBGUzogJHtyZXN1bHR9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3IgPSBoYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZWplY3QoZm9ybWF0dGVkRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgcXVlcnlCdWlsZGVyIGZyb20gJy4vcXVlcnlCdWlsZGVyJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uJztcblxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFQaW5Kb2JzUmVzcG9uc2VSb3cge1xuICAgIGlkOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgaXBmc19waW5faGFzaDogc3RyaW5nO1xuICAgIGRhdGVfcXVldWVkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgICBzdGF0dXM6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhUGluSm9ic1Jlc3BvbnNlIHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIHJvd3M6IFBpbmF0YVBpbkpvYnNSZXNwb25zZVJvd1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmF0YVBpbkpvYnNGaWx0ZXJPcHRpb25zIHtcbiAgICBzb3J0OiAnQVNDJyB8ICdERVNDJztcbiAgICBzdGF0dXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaXBmc19waW5faGFzaD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsaW1pdD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBvZmZzZXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpbkpvYnMoY29uZmlnOiBQaW5hdGFDb25maWcsIGZpbHRlcnM/IDogUGluYXRhUGluSm9ic0ZpbHRlck9wdGlvbnMpOiBQcm9taXNlPFBpbmF0YVBpbkpvYnNSZXNwb25zZT4ge1xuXG4gICAgbGV0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vcGlubmluZy9waW5Kb2JzYDtcblxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICAgIGVuZHBvaW50ID0gcXVlcnlCdWlsZGVyKGVuZHBvaW50LCBmaWx0ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBheGlvcy5nZXQoXG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHsuLi5jcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMoY29uZmlnKX0pXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB1bmtub3duIHNlcnZlciByZXNwb25zZSB3aGlsZSBhdHRlbXB0aW5nIHRvIHJldHJpZXZlIHBpbiBqb2JzOiAke3Jlc3VsdH1gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiaW1wb3J0IGlzSVBGUyBmcm9tICdpcy1pcGZzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVlcnlCdWlsZGVyKGJhc2VVcmw6IHN0cmluZywgZmlsdGVycz86IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFiYXNlVXJsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gYmFzZVVybCBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVycykge1xuICAgICAgICByZXR1cm4gYmFzZVVybDtcbiAgICB9XG5cbiAgICBsZXQgbmV3VXJsID0gYmFzZVVybDtcblxuICAgIGxldCBmaXJzdEZpbHRlckFwcGxpZWQgPSBmYWxzZTsgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgXCI/XCIgY2hhcmFjdGVyIGlzIG9ubHkgYXBwbGllZCBvbmNlXG5cbiAgICBmdW5jdGlvbiBhZGRGaWx0ZXIobmV3RmlsdGVyOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZpcnN0RmlsdGVyQXBwbGllZCkge1xuICAgICAgICAgICAgbmV3VXJsID0gYCR7bmV3VXJsfSYke25ld0ZpbHRlcn1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlyc3RGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld1VybCA9IGAke25ld1VybH0/JHtuZXdGaWx0ZXJ9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICAgIC8vICBub3cgd2UgbmVlZCB0byBjb25zdHJ1Y3QgdGhlIGFjdHVhbCBVUkwgYmFzZWQgb24gdGhlIGdpdmVuIGZpbHRlcnMgcHJvdmlkZWRcbiAgICAgICAgaWYgKGZpbHRlcnMuc29ydCkge1xuICAgICAgICAgICAgaWYgKGZpbHRlcnMuc29ydCA9PT0gJ0FTQycgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnNvcnQgPT09ICdERVNDJykge1xuICAgICAgICAgICAgICAgIGFkZEZpbHRlcihgc29ydD0ke2ZpbHRlcnMuc29ydH1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHNvcnQgdmFsdWU6ICR7ZmlsdGVycy5zb3J0fSBwcm92aWRlZGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlcnMuc3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVycy5zdGF0dXMgPT09ICdzZWFyY2hpbmcnIHx8XG4gICAgICAgICAgICAgICAgZmlsdGVycy5zdGF0dXMgPT09ICdleHBpcmVkJyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlcnMuc3RhdHVzID09PSAnb3Zlcl9mcmVlX2xpbWl0JyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlcnMuc3RhdHVzID09PSAnb3Zlcl9tYXhfc2l6ZScgfHxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnN0YXR1cyA9PT0gJ2ludmFsaWRfb2JqZWN0JyB8fFxuICAgICAgICAgICAgICAgIGZpbHRlcnMuc3RhdHVzID09PSAnYmFkX2hvc3Rfbm9kZSdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGFkZEZpbHRlcihgc3RhdHVzPSR7ZmlsdGVycy5zdGF0dXN9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzdGF0dXMgdmFsdWU6ICR7ZmlsdGVycy5zdGF0dXN9IHByb3ZpZGVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsdGVycy5pcGZzX3Bpbl9oYXNoKSB7XG4gICAgICAgICAgICBpZiAoaXNJUEZTLmNpZChmaWx0ZXJzLmlwZnNfcGluX2hhc2gpKSB7XG4gICAgICAgICAgICAgICAgYWRkRmlsdGVyKGBpcGZzX3Bpbl9oYXNoPSR7ZmlsdGVycy5pcGZzX3Bpbl9oYXNofWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSVBGUyBoYXNoOiAke2ZpbHRlcnMuaXBmc19waW5faGFzaH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJzLmxpbWl0KSB7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihmaWx0ZXJzLmxpbWl0KSAmJiAoZmlsdGVycy5saW1pdCA+IDApICYmIChmaWx0ZXJzLmxpbWl0IDwgMTAwKSkge1xuICAgICAgICAgICAgICAgIGFkZEZpbHRlcihgbGltaXQ9JHtmaWx0ZXJzLmxpbWl0fWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbGltaXQ6ICR7ZmlsdGVycy5saW1pdH0uIFZhbGlkIGxpbWl0cyBhcmUgMS0xMDBgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJzLm9mZnNldCkge1xuICAgICAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIoZmlsdGVycy5vZmZzZXQpICYmIChmaWx0ZXJzLm9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgYWRkRmlsdGVyKGBvZmZzZXQ9JHtmaWx0ZXJzLm9mZnNldH1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG9mZnNldDogJHtmaWx0ZXJzLm9mZnNldH0uIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgaW50ZWdlciBmb3IgdGhlIG9mZnNldGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVcmw7XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVDb25maWdGb3JBeGlvc0hlYWRlcnMgfSBmcm9tICcuLi8uLi91dGlsL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IGlzSVBGUyBmcm9tICdpcy1pcGZzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5waW4oY29uZmlnOiBQaW5hdGFDb25maWcsIGhhc2hUb1VucGluOiBzdHJpbmcpIHtcbiAgICBpZiAoIWhhc2hUb1VucGluKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGFzaFRvVW5waW4gdmFsdWUgaXMgcmVxdWlyZWQgZm9yIHJlbW92aW5nIGEgcGluIGZyb20gUGluYXRhJyk7XG4gICAgfVxuICAgIGlmICghaXNJUEZTLmNpZChoYXNoVG9VbnBpbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2hhc2hUb1VucGlufSBpcyBhbiBpbnZhbGlkIElQRlMgQ0lEYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtiYXNlVXJsfS9waW5uaW5nL3VucGluLyR7aGFzaFRvVW5waW59YDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLmRlbGV0ZShcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIHJlbW92aW5nIHBpbiBmcm9tIElQRlM6ICR7cmVzdWx0fWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0gaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmVqZWN0KGZvcm1hdHRlZEVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2NyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVyc30gZnJvbSAnLi4vLi4vdXRpbC92YWxpZGF0b3JzJztcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbC9lcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFBpbmF0YUNvbmZpZyB9IGZyb20gJy4uLy4uJztcblxuZXhwb3J0IGludGVyZmFjZSBQaW5hdGFUZXN0QXV0aGVudGljYXRpb25SZXNwb25zZSB7XG4gICAgYXV0aGVudGljYXRlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGVzdEF1dGhlbnRpY2F0aW9uKGNvbmZpZzogUGluYXRhQ29uZmlnKTogUHJvbWlzZTxQaW5hdGFUZXN0QXV0aGVudGljYXRpb25SZXNwb25zZT4ge1xuICAgIC8vICB0ZXN0IGF1dGhlbnRpY2F0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSB1c2VyJ3MgcHJvdmlkZWQga2V5cyBhcmUgbGVnaXRcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2Jhc2VVcmx9L2RhdGEvdGVzdEF1dGhlbnRpY2F0aW9uYDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLmdldChcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIGF1dGhlbnRpY2F0aW5nOiAke3Jlc3VsdH1gKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IGhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJlamVjdChmb3JtYXR0ZWRFcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiXG5mdW5jdGlvbiB2YWxpZGF0ZUFuZFJldHVybkRhdGUoZGF0ZVRvVmFsaWRhdGU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgZGF0ZVBhcnNlZCA9IG5ldyBEYXRlKERhdGUucGFyc2UoZGF0ZVRvVmFsaWRhdGUpKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGlmIChkYXRlUGFyc2VkLnRvSVNPU3RyaW5nKCkgPT09IGRhdGVUb1ZhbGlkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVRvVmFsaWRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRlcyBtdXN0IGJlIGluIHZhbGlkIElTT184NjAxIGZvcm1hdCcpO1xuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGVzIG11c3QgYmUgaW4gdmFsaWQgSVNPXzg2MDEgZm9ybWF0Jyk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWVyeUJ1aWxkZXIoYmFzZVVybDogc3RyaW5nLCBmaWx0ZXJzPzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWJhc2VVcmwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBiYXNlVXJsIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgLy8gIHByZXNldCBmaWx0ZXIgdmFsdWVzXG4gICAgbGV0IGZpbHRlclF1ZXJ5ID0gJz8nO1xuXG4gICAgbGV0IG1ldGFkYXRhUXVlcnkgPSAnJztcblxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICAgIC8vICBub3cgd2UgbmVlZCB0byBjb25zdHJ1Y3QgdGhlIGFjdHVhbCBVUkwgYmFzZWQgb24gdGhlIGdpdmVuIGZpbHRlcnMgcHJvdmlkZWRcbiAgICAgICAgaWYgKGZpbHRlcnMuaW5jbHVkZUNvdW50KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYGluY2x1ZGVDb3VudD0ke2ZpbHRlcnMuaW5jbHVkZUNvdW50fSZgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlcnMuaGFzaENvbnRhaW5zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlcnMuaGFzaENvbnRhaW5zICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaGFzaENvbnRhaW5zIHZhbHVlIGlzIG5vdCBhIHN0cmluZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGBoYXNoQ29udGFpbnM9JHtmaWx0ZXJzLmhhc2hDb250YWluc30mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5waW5TdGFydCkge1xuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGBwaW5TdGFydD0ke3ZhbGlkYXRlQW5kUmV0dXJuRGF0ZShmaWx0ZXJzLnBpblN0YXJ0KX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5waW5FbmQpIHtcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gZmlsdGVyUXVlcnkgKyBgcGluRW5kPSR7dmFsaWRhdGVBbmRSZXR1cm5EYXRlKGZpbHRlcnMucGluRW5kKX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy51bnBpblN0YXJ0KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHVucGluU3RhcnQ9JHt2YWxpZGF0ZUFuZFJldHVybkRhdGUoZmlsdGVycy51bnBpblN0YXJ0KX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy51bnBpbkVuZCkge1xuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGB1bnBpbkVuZD0ke3ZhbGlkYXRlQW5kUmV0dXJuRGF0ZShmaWx0ZXJzLnVucGluRW5kKX0mYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5waW5TaXplTWluKSB7XG4gICAgICAgICAgICBpZiAoaXNOYU4oZmlsdGVycy5waW5TaXplTWluKSB8fCBmaWx0ZXJzLnBpblNpemVNaW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgbWFrZSBzdXJlIHRoZSBwaW5TaXplTWluIGlzIGEgdmFsaWQgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyUXVlcnkgPSBmaWx0ZXJRdWVyeSArIGBwaW5TaXplTWluPSR7ZmlsdGVycy5waW5TaXplTWlufSZgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJzLnBpblNpemVNYXgpIHtcbiAgICAgICAgICAgIGlmIChpc05hTihmaWx0ZXJzLnBpblNpemVNYXgpIHx8IGZpbHRlcnMucGluU2l6ZU1heCA8IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIHBpblNpemVNYXggaXMgYSB2YWxpZCBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHBpblNpemVNYXg9JHtmaWx0ZXJzLnBpblNpemVNYXh9JmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMuc3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVycy5zdGF0dXMgIT09ICdhbGwnICYmIGZpbHRlcnMuc3RhdHVzICE9PSAncGlubmVkJyAmJiBmaWx0ZXJzLnN0YXR1cyAhPT0gJ3VucGlubmVkJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc3RhdHVzIHZhbHVlIG11c3QgYmUgZWl0aGVyOiBhbGwsIHBpbm5lZCwgb3IgdW5waW5uZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gZmlsdGVyUXVlcnkgKyBgc3RhdHVzPSR7ZmlsdGVycy5zdGF0dXN9JmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMucGFnZUxpbWl0KSB7XG4gICAgICAgICAgICBpZiAoaXNOYU4oZmlsdGVycy5wYWdlTGltaXQpIHx8IGZpbHRlcnMucGFnZUxpbWl0IDw9IDAgfHwgZmlsdGVycy5wYWdlTGltaXQgPiAxMDAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgbWFrZSBzdXJlIHRoZSBwYWdlTGltaXQgaXMgYSB2YWxpZCBpbnRlZ2VyIGJldHdlZW4gMS0xMDAwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHBhZ2VMaW1pdD0ke3BhcnNlSW50KGZpbHRlcnMucGFnZUxpbWl0KX0mYDsgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBkZWNpbWFscyBnZXQgcm91bmRlZCB0byBpbnRlZ2Vyc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlcnMucGFnZU9mZnNldCkge1xuICAgICAgICAgICAgaWYgKGlzTmFOKGZpbHRlcnMucGFnZU9mZnNldCkgfHwgZmlsdGVycy5wYWdlT2Zmc2V0IDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIHBhZ2VPZmZzZXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGZpbHRlclF1ZXJ5ICsgYHBhZ2VPZmZzZXQ9JHtwYXJzZUludChmaWx0ZXJzLnBhZ2VPZmZzZXQpfSZgOyAvLyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGRlY2ltYWxzIGdldCByb3VuZGVkIHRvIGludGVnZXJzXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsdGVycy5tZXRhZGF0YSkge1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlcnMubWV0YWRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtZXRhZGF0YSB2YWx1ZSBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmlsdGVycy5tZXRhZGF0YS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFRdWVyeSA9IGBtZXRhZGF0YVtuYW1lXT0ke2ZpbHRlcnMubWV0YWRhdGEubmFtZX0mYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpbHRlcnMubWV0YWRhdGEua2V5dmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFRdWVyeSA9IG1ldGFkYXRhUXVlcnkgKyAnbWV0YWRhdGFba2V5dmFsdWVzXT0nO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWx0ZXJzLm1ldGFkYXRhLmtleXZhbHVlcyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtZXRhZGF0YSBrZXl2YWx1ZXMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwcnVuZWRLZXlWYWx1ZXM6IGFueSA9IHt9OyAvLyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSdyZSBvbmx5IGdyYWJiaW5nIHRoZSB2YWx1ZXMgd2Ugd2FudCBmb3IgdGhlIHF1ZXJ5LCBhbmQgbm90aGluZyBleHRyYVxuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmlsdGVycy5tZXRhZGF0YS5rZXl2YWx1ZXMpLmZvckVhY2goKGtleVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleVZhbHVlWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0ga2V5VmFsdWVbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihga2V5VmFsdWU6ICR7a2V5fSBpcyBub3QgYW4gb2JqZWN0YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUudmFsdWUgfHwgIXZhbHVlLm9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGtleVZhbHVlOiAke2tleX0gbXVzdCBoYXZlIGJvdGggdmFsdWUgYW5kIG9wIGF0dHJpYnV0ZXNgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiB2YWx1ZS52YWx1ZSAhPT0gJ3N0cmluZycpICYmICh0eXBlb2YgdmFsdWUudmFsdWUgIT09ICdib29sZWFuJykgJiYgKHR5cGVvZiB2YWx1ZS52YWx1ZSAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGFkYXRhIGtleXZhbHVlIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJvb2xlYW5zLCBvciBudW1iZXJzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBSdW4gY2hlY2tzIHRvIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIGtleXZhbHVlcyBhcmUgdmFsaWRcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS5vcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dyZWF0ZXIgdGhhbiBvciBlcXVhbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3RlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVzcyB0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlc3MgdGhhbiBvciBlcXVhbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbHRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGVxdWFsIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVxdWFsIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlcSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUuc2Vjb25kVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCZWNhdXNlIGJldHdlZW4gb3AgY29kZSB3YXMgcGFzc2VkIGluLCBrZXlWYWx1ZTogJHtrZXlWYWx1ZVswXX0gbXVzdCBoYXZlIGJvdGggYWxzbyBpbmNsdWRlIGEgc2Vjb25kVmFsdWVgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUuc2Vjb25kVmFsdWUgIT09ICdzdHJpbmcnKSAmJiAodHlwZW9mIHZhbHVlLnNlY29uZFZhbHVlICE9PSAnYm9vbGVhbicpICYmICh0eXBlb2YgdmFsdWUuc2Vjb25kVmFsdWUgIT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGFkYXRhIGtleXZhbHVlIHNlY29uZFZhbHVlIG11c3QgYmUgYSBzdHJpbmcsIGJvb2xlYW4sIG9yIG51bWJlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZFZhbHVlOiB2YWx1ZS5zZWNvbmRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90QmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5zZWNvbmRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJlY2F1c2Ugbm90QmV0d2VlbiBvcCBjb2RlIHdhcyBwYXNzZWQgaW4sIGtleVZhbHVlOiAke2tleVZhbHVlWzBdfSBtdXN0IGhhdmUgYm90aCBhbHNvIGluY2x1ZGUgYSBzZWNvbmRWYWx1ZWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiB2YWx1ZS5zZWNvbmRWYWx1ZSAhPT0gJ3N0cmluZycpICYmICh0eXBlb2YgdmFsdWUuc2Vjb25kVmFsdWUgIT09ICdib29sZWFuJykgJiYgKHR5cGVvZiB2YWx1ZS5zZWNvbmRWYWx1ZSAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0YWRhdGEga2V5dmFsdWUgc2Vjb25kVmFsdWUgbXVzdCBiZSBhIHN0cmluZywgYm9vbGVhbiwgb3IgbnVtYmVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kVmFsdWU6IHZhbHVlLnNlY29uZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpa2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgbGlrZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90TGlrZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgaW5zZW5zaXRpdmUgbGlrZVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaUxpa2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIGluc2Vuc2l0aXZlIG5vdCBsaWtlXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3RJTGlrZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkS2V5VmFsdWVzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHZhbHVlLm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2V4XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5lZEtleVZhbHVlc1trZXldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wOiB2YWx1ZS5vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIGluc2Vuc2l0aXZlIHJlZ2V4XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpUmVnZXhwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnVuZWRLZXlWYWx1ZXNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcDogdmFsdWUub3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGtleVZhbHVlIG9wOiAke3ZhbHVlLm9wfSBpcyBub3QgYSB2YWxpZCBvcCBjb2RlYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1ldGFkYXRhUXVlcnkgPSBtZXRhZGF0YVF1ZXJ5ICsgYCR7SlNPTi5zdHJpbmdpZnkocHJ1bmVkS2V5VmFsdWVzKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtiYXNlVXJsfSR7ZmlsdGVyUXVlcnl9JHttZXRhZGF0YVF1ZXJ5fWA7XG59XG5cbiIsImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWwvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4uLy4uL3V0aWwvZXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBQaW5hdGFDb25maWcgfSBmcm9tICcuLi8uLic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZXJQaW5uZWREYXRhVG90YWwoY29uZmlnOiBQaW5hdGFDb25maWcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YmFzZVVybH0vZGF0YS91c2VyUGlubmVkRGF0YVRvdGFsYDtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGF4aW9zLmdldChcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgey4uLmNyZWF0ZUNvbmZpZ0ZvckF4aW9zSGVhZGVycyhjb25maWcpfSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHVua25vd24gc2VydmVyIHJlc3BvbnNlIHdoaWxlIGF0dGVtcHRpbmcgdG8gcmV0cmlldmUgcGlubmVkIGRhdGEgdG90YWw6ICR7cmVzdWx0fWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmRhdGEpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0gaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmVqZWN0KGZvcm1hdHRlZEVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxucmVxdWlyZShcImNvcmUtanMvc2hpbVwiKTtcblxucmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZVwiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vcmVnZXhwL2VzY2FwZVwiKTtcblxuaWYgKGdsb2JhbC5fYmFiZWxQb2x5ZmlsbCkge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJvbmx5IG9uZSBpbnN0YW5jZSBvZiBiYWJlbC1wb2x5ZmlsbCBpcyBhbGxvd2VkXCIpO1xufVxuZ2xvYmFsLl9iYWJlbFBvbHlmaWxsID0gdHJ1ZTtcblxudmFyIERFRklORV9QUk9QRVJUWSA9IFwiZGVmaW5lUHJvcGVydHlcIjtcbmZ1bmN0aW9uIGRlZmluZShPLCBrZXksIHZhbHVlKSB7XG4gIE9ba2V5XSB8fCBPYmplY3RbREVGSU5FX1BST1BFUlRZXShPLCBrZXksIHtcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5kZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgXCJwYWRMZWZ0XCIsIFwiXCIucGFkU3RhcnQpO1xuZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIFwicGFkUmlnaHRcIiwgXCJcIi5wYWRFbmQpO1xuXG5cInBvcCxyZXZlcnNlLHNoaWZ0LGtleXMsdmFsdWVzLGVudHJpZXMsaW5kZXhPZixldmVyeSxzb21lLGZvckVhY2gsbWFwLGZpbHRlcixmaW5kLGZpbmRJbmRleCxpbmNsdWRlcyxqb2luLHNsaWNlLGNvbmNhdCxwdXNoLHNwbGljZSx1bnNoaWZ0LHNvcnQsbGFzdEluZGV4T2YscmVkdWNlLHJlZHVjZVJpZ2h0LGNvcHlXaXRoaW4sZmlsbFwiLnNwbGl0KFwiLFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgW11ba2V5XSAmJiBkZWZpbmUoQXJyYXksIGtleSwgRnVuY3Rpb24uY2FsbC5iaW5kKFtdW2tleV0pKTtcbn0pOyIsInJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3ltYm9sJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYWNvc2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY2JydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNsejMyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY29zaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmV4cG0xJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguZnJvdW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5pbXVsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMTAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cxcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5zaWduJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnRhbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC50cnVuYycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yYXcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yZXBlYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJpZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5saW5rJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RyaWtlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdWInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN1cCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLm5vdycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuam9pbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zbGljZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zb3J0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lm1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc29tZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmlsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbmQtaW5kZXgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLmV4ZWMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLW1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLXNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVsZXRlLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmhhcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdHRlbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcuYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1zdGFydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1sZWZ0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy50cmltLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5tYXRjaC1hbGwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC52YWx1ZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmVudHJpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1nZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcub2JqZWN0Lmxvb2t1cC1zZXR0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc2V0LnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWFwLm9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLXNldC5vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXAuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zZXQuZnJvbScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy53ZWFrLW1hcC5mcm9tJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LndlYWstc2V0LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZ2xvYmFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5jbGFtcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmRlZy1wZXItcmFkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguZGVncmVlcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmZzY2FsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaXN1YmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pbXVsaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnJhZC1wZXItZGVnJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgucmFkaWFucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLnNjYWxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGgudW11bGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5zaWduYml0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hc2FwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9ic2VydmFibGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIudGltZXJzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLmltbWVkaWF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tb2R1bGVzL19jb3JlJyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuIiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKSB9KTtcbiIsIi8vIDE5LjEuMi45IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldFByb3RvdHlwZU9mJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoaXQpIHtcbiAgICByZXR1cm4gJGdldFByb3RvdHlwZU9mKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5TmFtZXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKS5mO1xufSk7XG4iLCIvLyAxOS4xLjIuNSBPYmplY3QuZnJlZXplKE8pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpLm9uRnJlZXplO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2ZyZWV6ZScsIGZ1bmN0aW9uICgkZnJlZXplKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmcmVlemUoaXQpIHtcbiAgICByZXR1cm4gJGZyZWV6ZSAmJiBpc09iamVjdChpdCkgPyAkZnJlZXplKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTcgT2JqZWN0LnNlYWwoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnc2VhbCcsIGZ1bmN0aW9uICgkc2VhbCkge1xuICByZXR1cm4gZnVuY3Rpb24gc2VhbChpdCkge1xuICAgIHJldHVybiAkc2VhbCAmJiBpc09iamVjdChpdCkgPyAkc2VhbChtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjE1IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdwcmV2ZW50RXh0ZW5zaW9ucycsIGZ1bmN0aW9uICgkcHJldmVudEV4dGVuc2lvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKGl0KSB7XG4gICAgcmV0dXJuICRwcmV2ZW50RXh0ZW5zaW9ucyAmJiBpc09iamVjdChpdCkgPyAkcHJldmVudEV4dGVuc2lvbnMobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xMiBPYmplY3QuaXNGcm96ZW4oTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRnJvemVuJywgZnVuY3Rpb24gKCRpc0Zyb3plbikge1xuICByZXR1cm4gZnVuY3Rpb24gaXNGcm96ZW4oaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRnJvemVuID8gJGlzRnJvemVuKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjEzIE9iamVjdC5pc1NlYWxlZChPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNTZWFsZWQnLCBmdW5jdGlvbiAoJGlzU2VhbGVkKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc1NlYWxlZChpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNTZWFsZWQgPyAkaXNTZWFsZWQoaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTEgT2JqZWN0LmlzRXh0ZW5zaWJsZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNFeHRlbnNpYmxlJywgZnVuY3Rpb24gKCRpc0V4dGVuc2libGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZShpdCkgOiB0cnVlIDogZmFsc2U7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG4iLCIvLyAxOS4xLjMuMTAgT2JqZWN0LmlzKHZhbHVlMSwgdmFsdWUyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBpczogcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpIH0pO1xuIiwiLy8gMTkuMS4zLjE5IE9iamVjdC5zZXRQcm90b3R5cGVPZihPLCBwcm90bylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgc2V0UHJvdG90eXBlT2Y6IHJlcXVpcmUoJy4vX3NldC1wcm90bycpLnNldCB9KTtcbiIsIi8vIDE5LjIuMy4yIC8gMTUuMy40LjUgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQodGhpc0FyZywgYXJncy4uLilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnRnVuY3Rpb24nLCB7IGJpbmQ6IHJlcXVpcmUoJy4vX2JpbmQnKSB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIEhBU19JTlNUQU5DRSA9IHJlcXVpcmUoJy4vX3drcycpKCdoYXNJbnN0YW5jZScpO1xudmFyIEZ1bmN0aW9uUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyAxOS4yLjMuNiBGdW5jdGlvbi5wcm90b3R5cGVbQEBoYXNJbnN0YW5jZV0oVilcbmlmICghKEhBU19JTlNUQU5DRSBpbiBGdW5jdGlvblByb3RvKSkgcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZihGdW5jdGlvblByb3RvLCBIQVNfSU5TVEFOQ0UsIHsgdmFsdWU6IGZ1bmN0aW9uIChPKSB7XG4gIGlmICh0eXBlb2YgdGhpcyAhPSAnZnVuY3Rpb24nIHx8ICFpc09iamVjdChPKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWlzT2JqZWN0KHRoaXMucHJvdG90eXBlKSkgcmV0dXJuIE8gaW5zdGFuY2VvZiB0aGlzO1xuICAvLyBmb3IgZW52aXJvbm1lbnQgdy9vIG5hdGl2ZSBgQEBoYXNJbnN0YW5jZWAgbG9naWMgZW5vdWdoIGBpbnN0YW5jZW9mYCwgYnV0IGFkZCB0aGlzOlxuICB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKSBpZiAodGhpcy5wcm90b3R5cGUgPT09IE8pIHJldHVybiB0cnVlO1xuICByZXR1cm4gZmFsc2U7XG59IH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19wYXJzZS1pbnQnKTtcbi8vIDE4LjIuNSBwYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgeyBwYXJzZUludDogJHBhcnNlSW50IH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX3BhcnNlLWZsb2F0Jyk7XG4vLyAxOC4yLjQgcGFyc2VGbG9hdChzdHJpbmcpXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuRiAqIChwYXJzZUZsb2F0ICE9ICRwYXJzZUZsb2F0KSwgeyBwYXJzZUZsb2F0OiAkcGFyc2VGbG9hdCB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGFOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4vX2EtbnVtYmVyLXZhbHVlJyk7XG52YXIgcmVwZWF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpO1xudmFyICR0b0ZpeGVkID0gMS4wLnRvRml4ZWQ7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGRhdGEgPSBbMCwgMCwgMCwgMCwgMCwgMF07XG52YXIgRVJST1IgPSAnTnVtYmVyLnRvRml4ZWQ6IGluY29ycmVjdCBpbnZvY2F0aW9uISc7XG52YXIgWkVSTyA9ICcwJztcblxudmFyIG11bHRpcGx5ID0gZnVuY3Rpb24gKG4sIGMpIHtcbiAgdmFyIGkgPSAtMTtcbiAgdmFyIGMyID0gYztcbiAgd2hpbGUgKCsraSA8IDYpIHtcbiAgICBjMiArPSBuICogZGF0YVtpXTtcbiAgICBkYXRhW2ldID0gYzIgJSAxZTc7XG4gICAgYzIgPSBmbG9vcihjMiAvIDFlNyk7XG4gIH1cbn07XG52YXIgZGl2aWRlID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIGkgPSA2O1xuICB2YXIgYyA9IDA7XG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIGMgKz0gZGF0YVtpXTtcbiAgICBkYXRhW2ldID0gZmxvb3IoYyAvIG4pO1xuICAgIGMgPSAoYyAlIG4pICogMWU3O1xuICB9XG59O1xudmFyIG51bVRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaSA9IDY7XG4gIHZhciBzID0gJyc7XG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIGlmIChzICE9PSAnJyB8fCBpID09PSAwIHx8IGRhdGFbaV0gIT09IDApIHtcbiAgICAgIHZhciB0ID0gU3RyaW5nKGRhdGFbaV0pO1xuICAgICAgcyA9IHMgPT09ICcnID8gdCA6IHMgKyByZXBlYXQuY2FsbChaRVJPLCA3IC0gdC5sZW5ndGgpICsgdDtcbiAgICB9XG4gIH0gcmV0dXJuIHM7XG59O1xudmFyIHBvdyA9IGZ1bmN0aW9uICh4LCBuLCBhY2MpIHtcbiAgcmV0dXJuIG4gPT09IDAgPyBhY2MgOiBuICUgMiA9PT0gMSA/IHBvdyh4LCBuIC0gMSwgYWNjICogeCkgOiBwb3coeCAqIHgsIG4gLyAyLCBhY2MpO1xufTtcbnZhciBsb2cgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbiA9IDA7XG4gIHZhciB4MiA9IHg7XG4gIHdoaWxlICh4MiA+PSA0MDk2KSB7XG4gICAgbiArPSAxMjtcbiAgICB4MiAvPSA0MDk2O1xuICB9XG4gIHdoaWxlICh4MiA+PSAyKSB7XG4gICAgbiArPSAxO1xuICAgIHgyIC89IDI7XG4gIH0gcmV0dXJuIG47XG59O1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICghISR0b0ZpeGVkICYmIChcbiAgMC4wMDAwOC50b0ZpeGVkKDMpICE9PSAnMC4wMDAnIHx8XG4gIDAuOS50b0ZpeGVkKDApICE9PSAnMScgfHxcbiAgMS4yNTUudG9GaXhlZCgyKSAhPT0gJzEuMjUnIHx8XG4gIDEwMDAwMDAwMDAwMDAwMDAxMjguMC50b0ZpeGVkKDApICE9PSAnMTAwMDAwMDAwMDAwMDAwMDEyOCdcbikgfHwgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICAvLyBWOCB+IEFuZHJvaWQgNC4zLVxuICAkdG9GaXhlZC5jYWxsKHt9KTtcbn0pKSwgJ051bWJlcicsIHtcbiAgdG9GaXhlZDogZnVuY3Rpb24gdG9GaXhlZChmcmFjdGlvbkRpZ2l0cykge1xuICAgIHZhciB4ID0gYU51bWJlclZhbHVlKHRoaXMsIEVSUk9SKTtcbiAgICB2YXIgZiA9IHRvSW50ZWdlcihmcmFjdGlvbkRpZ2l0cyk7XG4gICAgdmFyIHMgPSAnJztcbiAgICB2YXIgbSA9IFpFUk87XG4gICAgdmFyIGUsIHosIGosIGs7XG4gICAgaWYgKGYgPCAwIHx8IGYgPiAyMCkgdGhyb3cgUmFuZ2VFcnJvcihFUlJPUik7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmICh4ICE9IHgpIHJldHVybiAnTmFOJztcbiAgICBpZiAoeCA8PSAtMWUyMSB8fCB4ID49IDFlMjEpIHJldHVybiBTdHJpbmcoeCk7XG4gICAgaWYgKHggPCAwKSB7XG4gICAgICBzID0gJy0nO1xuICAgICAgeCA9IC14O1xuICAgIH1cbiAgICBpZiAoeCA+IDFlLTIxKSB7XG4gICAgICBlID0gbG9nKHggKiBwb3coMiwgNjksIDEpKSAtIDY5O1xuICAgICAgeiA9IGUgPCAwID8geCAqIHBvdygyLCAtZSwgMSkgOiB4IC8gcG93KDIsIGUsIDEpO1xuICAgICAgeiAqPSAweDEwMDAwMDAwMDAwMDAwO1xuICAgICAgZSA9IDUyIC0gZTtcbiAgICAgIGlmIChlID4gMCkge1xuICAgICAgICBtdWx0aXBseSgwLCB6KTtcbiAgICAgICAgaiA9IGY7XG4gICAgICAgIHdoaWxlIChqID49IDcpIHtcbiAgICAgICAgICBtdWx0aXBseSgxZTcsIDApO1xuICAgICAgICAgIGogLT0gNztcbiAgICAgICAgfVxuICAgICAgICBtdWx0aXBseShwb3coMTAsIGosIDEpLCAwKTtcbiAgICAgICAgaiA9IGUgLSAxO1xuICAgICAgICB3aGlsZSAoaiA+PSAyMykge1xuICAgICAgICAgIGRpdmlkZSgxIDw8IDIzKTtcbiAgICAgICAgICBqIC09IDIzO1xuICAgICAgICB9XG4gICAgICAgIGRpdmlkZSgxIDw8IGopO1xuICAgICAgICBtdWx0aXBseSgxLCAxKTtcbiAgICAgICAgZGl2aWRlKDIpO1xuICAgICAgICBtID0gbnVtVG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpcGx5KDAsIHopO1xuICAgICAgICBtdWx0aXBseSgxIDw8IC1lLCAwKTtcbiAgICAgICAgbSA9IG51bVRvU3RyaW5nKCkgKyByZXBlYXQuY2FsbChaRVJPLCBmKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGYgPiAwKSB7XG4gICAgICBrID0gbS5sZW5ndGg7XG4gICAgICBtID0gcyArIChrIDw9IGYgPyAnMC4nICsgcmVwZWF0LmNhbGwoWkVSTywgZiAtIGspICsgbSA6IG0uc2xpY2UoMCwgayAtIGYpICsgJy4nICsgbS5zbGljZShrIC0gZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gcyArIG07XG4gICAgfSByZXR1cm4gbTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYU51bWJlclZhbHVlID0gcmVxdWlyZSgnLi9fYS1udW1iZXItdmFsdWUnKTtcbnZhciAkdG9QcmVjaXNpb24gPSAxLjAudG9QcmVjaXNpb247XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKCRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFNy1cbiAgcmV0dXJuICR0b1ByZWNpc2lvbi5jYWxsKDEsIHVuZGVmaW5lZCkgIT09ICcxJztcbn0pIHx8ICEkZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCB+IEFuZHJvaWQgNC4zLVxuICAkdG9QcmVjaXNpb24uY2FsbCh7fSk7XG59KSksICdOdW1iZXInLCB7XG4gIHRvUHJlY2lzaW9uOiBmdW5jdGlvbiB0b1ByZWNpc2lvbihwcmVjaXNpb24pIHtcbiAgICB2YXIgdGhhdCA9IGFOdW1iZXJWYWx1ZSh0aGlzLCAnTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgICByZXR1cm4gcHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyAkdG9QcmVjaXNpb24uY2FsbCh0aGF0KSA6ICR0b1ByZWNpc2lvbi5jYWxsKHRoYXQsIHByZWNpc2lvbik7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMS4yLjEgTnVtYmVyLkVQU0lMT05cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBFUFNJTE9OOiBNYXRoLnBvdygyLCAtNTIpIH0pO1xuIiwiLy8gMjAuMS4yLjIgTnVtYmVyLmlzRmluaXRlKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgX2lzRmluaXRlID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuaXNGaW5pdGU7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge1xuICBpc0Zpbml0ZTogZnVuY3Rpb24gaXNGaW5pdGUoaXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIGl0ID09ICdudW1iZXInICYmIF9pc0Zpbml0ZShpdCk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMS4yLjQgTnVtYmVyLmlzTmFOKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge1xuICBpc05hTjogZnVuY3Rpb24gaXNOYU4obnVtYmVyKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiBudW1iZXIgIT0gbnVtYmVyO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi41IE51bWJlci5pc1NhZmVJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNJbnRlZ2VyID0gcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpO1xudmFyIGFicyA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNTYWZlSW50ZWdlcjogZnVuY3Rpb24gaXNTYWZlSW50ZWdlcihudW1iZXIpIHtcbiAgICByZXR1cm4gaXNJbnRlZ2VyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbiAgfVxufSk7XG4iLCIvLyAyMC4xLjIuNiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IE1BWF9TQUZFX0lOVEVHRVI6IDB4MWZmZmZmZmZmZmZmZmYgfSk7XG4iLCIvLyAyMC4xLjIuMTAgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBNSU5fU0FGRV9JTlRFR0VSOiAtMHgxZmZmZmZmZmZmZmZmZiB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19wYXJzZS1mbG9hdCcpO1xuLy8gMjAuMS4yLjEyIE51bWJlci5wYXJzZUZsb2F0KHN0cmluZylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE51bWJlci5wYXJzZUZsb2F0ICE9ICRwYXJzZUZsb2F0KSwgJ051bWJlcicsIHsgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXQgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX3BhcnNlLWludCcpO1xuLy8gMjAuMS4yLjEzIE51bWJlci5wYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlSW50ICE9ICRwYXJzZUludCksICdOdW1iZXInLCB7IHBhcnNlSW50OiAkcGFyc2VJbnQgfSk7XG4iLCIvLyAyMC4yLjIuMyBNYXRoLmFjb3NoKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGxvZzFwID0gcmVxdWlyZSgnLi9fbWF0aC1sb2cxcCcpO1xudmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG52YXIgJGFjb3NoID0gTWF0aC5hY29zaDtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhY29zaFxuICAvLyBWOCBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNTA5XG4gICYmIE1hdGguZmxvb3IoJGFjb3NoKE51bWJlci5NQVhfVkFMVUUpKSA9PSA3MTBcbiAgLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFjb3NoKEluZmluaXR5KSAtPiBOYU5cbiAgJiYgJGFjb3NoKEluZmluaXR5KSA9PSBJbmZpbml0eVxuKSwgJ01hdGgnLCB7XG4gIGFjb3NoOiBmdW5jdGlvbiBhY29zaCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpIDwgMSA/IE5hTiA6IHggPiA5NDkwNjI2NS42MjQyNTE1NlxuICAgICAgPyBNYXRoLmxvZyh4KSArIE1hdGguTE4yXG4gICAgICA6IGxvZzFwKHggLSAxICsgc3FydCh4IC0gMSkgKiBzcXJ0KHggKyAxKSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjUgTWF0aC5hc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXNpbmggPSBNYXRoLmFzaW5oO1xuXG5mdW5jdGlvbiBhc2luaCh4KSB7XG4gIHJldHVybiAhaXNGaW5pdGUoeCA9ICt4KSB8fCB4ID09IDAgPyB4IDogeCA8IDAgPyAtYXNpbmgoLXgpIDogTWF0aC5sb2coeCArIE1hdGguc3FydCh4ICogeCArIDEpKTtcbn1cblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFzaW5oKDApIC0+IC0wXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGFzaW5oICYmIDEgLyAkYXNpbmgoMCkgPiAwKSwgJ01hdGgnLCB7IGFzaW5oOiBhc2luaCB9KTtcbiIsIi8vIDIwLjIuMi43IE1hdGguYXRhbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0YW5oID0gTWF0aC5hdGFuaDtcblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmF0YW5oKC0wKSAtPiAwXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGF0YW5oICYmIDEgLyAkYXRhbmgoLTApIDwgMCksICdNYXRoJywge1xuICBhdGFuaDogZnVuY3Rpb24gYXRhbmgoeCkge1xuICAgIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IE1hdGgubG9nKCgxICsgeCkgLyAoMSAtIHgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjkgTWF0aC5jYnJ0KHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjYnJ0OiBmdW5jdGlvbiBjYnJ0KHgpIHtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTEgTWF0aC5jbHozMih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjbHozMjogZnVuY3Rpb24gY2x6MzIoeCkge1xuICAgIHJldHVybiAoeCA+Pj49IDApID8gMzEgLSBNYXRoLmZsb29yKE1hdGgubG9nKHggKyAwLjUpICogTWF0aC5MT0cyRSkgOiAzMjtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTIgTWF0aC5jb3NoKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNvc2g6IGZ1bmN0aW9uIGNvc2goeCkge1xuICAgIHJldHVybiAoZXhwKHggPSAreCkgKyBleHAoLXgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjE0IE1hdGguZXhwbTEoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICgkZXhwbTEgIT0gTWF0aC5leHBtMSksICdNYXRoJywgeyBleHBtMTogJGV4cG0xIH0pO1xuIiwiLy8gMjAuMi4yLjE2IE1hdGguZnJvdW5kKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IGZyb3VuZDogcmVxdWlyZSgnLi9fbWF0aC1mcm91bmQnKSB9KTtcbiIsIi8vIDIwLjIuMi4xNyBNYXRoLmh5cG90KFt2YWx1ZTFbLCB2YWx1ZTJbLCDigKYgXV1dKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhYnMgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBoeXBvdDogZnVuY3Rpb24gaHlwb3QodmFsdWUxLCB2YWx1ZTIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogTWF0aC5zcXJ0KHN1bSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjE4IE1hdGguaW11bCh4LCB5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW11bCA9IE1hdGguaW11bDtcblxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkaW11bCgweGZmZmZmZmZmLCA1KSAhPSAtNSB8fCAkaW11bC5sZW5ndGggIT0gMjtcbn0pLCAnTWF0aCcsIHtcbiAgaW11bDogZnVuY3Rpb24gaW11bCh4LCB5KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgeG4gPSAreDtcbiAgICB2YXIgeW4gPSAreTtcbiAgICB2YXIgeGwgPSBVSU5UMTYgJiB4bjtcbiAgICB2YXIgeWwgPSBVSU5UMTYgJiB5bjtcbiAgICByZXR1cm4gMCB8IHhsICogeWwgKyAoKFVJTlQxNiAmIHhuID4+PiAxNikgKiB5bCArIHhsICogKFVJTlQxNiAmIHluID4+PiAxNikgPDwgMTYgPj4+IDApO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4yMSBNYXRoLmxvZzEwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzEwOiBmdW5jdGlvbiBsb2cxMCh4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpICogTWF0aC5MT0cxMEU7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjIwIE1hdGgubG9nMXAoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgbG9nMXA6IHJlcXVpcmUoJy4vX21hdGgtbG9nMXAnKSB9KTtcbiIsIi8vIDIwLjIuMi4yMiBNYXRoLmxvZzIoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgbG9nMjogZnVuY3Rpb24gbG9nMih4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpIC8gTWF0aC5MTjI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzaWduOiByZXF1aXJlKCcuL19tYXRoLXNpZ24nKSB9KTtcbiIsIi8vIDIwLjIuMi4zMCBNYXRoLnNpbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJyk7XG52YXIgZXhwID0gTWF0aC5leHA7XG5cbi8vIFY4IG5lYXIgQ2hyb21pdW0gMzggaGFzIGEgcHJvYmxlbSB3aXRoIHZlcnkgc21hbGwgbnVtYmVyc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICFNYXRoLnNpbmgoLTJlLTE3KSAhPSAtMmUtMTc7XG59KSwgJ01hdGgnLCB7XG4gIHNpbmg6IGZ1bmN0aW9uIHNpbmgoeCkge1xuICAgIHJldHVybiBNYXRoLmFicyh4ID0gK3gpIDwgMVxuICAgICAgPyAoZXhwbTEoeCkgLSBleHBtMSgteCkpIC8gMlxuICAgICAgOiAoZXhwKHggLSAxKSAtIGV4cCgteCAtIDEpKSAqIChNYXRoLkUgLyAyKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMzMgTWF0aC50YW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRhbmg6IGZ1bmN0aW9uIHRhbmgoeCkge1xuICAgIHZhciBhID0gZXhwbTEoeCA9ICt4KTtcbiAgICB2YXIgYiA9IGV4cG0xKC14KTtcbiAgICByZXR1cm4gYSA9PSBJbmZpbml0eSA/IDEgOiBiID09IEluZmluaXR5ID8gLTEgOiAoYSAtIGIpIC8gKGV4cCh4KSArIGV4cCgteCkpO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4zNCBNYXRoLnRydW5jKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyhpdCkge1xuICAgIHJldHVybiAoaXQgPiAwID8gTWF0aC5mbG9vciA6IE1hdGguY2VpbCkoaXQpO1xuICB9XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xudmFyICRmcm9tQ29kZVBvaW50ID0gU3RyaW5nLmZyb21Db2RlUG9pbnQ7XG5cbi8vIGxlbmd0aCBzaG91bGQgYmUgMSwgb2xkIEZGIHByb2JsZW1cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCEhJGZyb21Db2RlUG9pbnQgJiYgJGZyb21Db2RlUG9pbnQubGVuZ3RoICE9IDEpLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuMiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKVxuICBmcm9tQ29kZVBvaW50OiBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBjb2RlO1xuICAgIHdoaWxlIChhTGVuID4gaSkge1xuICAgICAgY29kZSA9ICthcmd1bWVudHNbaSsrXTtcbiAgICAgIGlmICh0b0Fic29sdXRlSW5kZXgoY29kZSwgMHgxMGZmZmYpICE9PSBjb2RlKSB0aHJvdyBSYW5nZUVycm9yKGNvZGUgKyAnIGlzIG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQnKTtcbiAgICAgIHJlcy5wdXNoKGNvZGUgPCAweDEwMDAwXG4gICAgICAgID8gZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICAgIDogZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweGQ4MDAsIGNvZGUgJSAweDQwMCArIDB4ZGMwMClcbiAgICAgICk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuNCBTdHJpbmcucmF3KGNhbGxTaXRlLCAuLi5zdWJzdGl0dXRpb25zKVxuICByYXc6IGZ1bmN0aW9uIHJhdyhjYWxsU2l0ZSkge1xuICAgIHZhciB0cGwgPSB0b0lPYmplY3QoY2FsbFNpdGUucmF3KTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodHBsLmxlbmd0aCk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGxlbiA+IGkpIHtcbiAgICAgIHJlcy5wdXNoKFN0cmluZyh0cGxbaSsrXSkpO1xuICAgICAgaWYgKGkgPCBhTGVuKSByZXMucHVzaChTdHJpbmcoYXJndW1lbnRzW2ldKSk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDIxLjEuMy4yNSBTdHJpbmcucHJvdG90eXBlLnRyaW0oKVxucmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKSgndHJpbScsIGZ1bmN0aW9uICgkdHJpbSkge1xuICByZXR1cm4gZnVuY3Rpb24gdHJpbSgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKShmYWxzZSk7XG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4zLjMgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdChwb3MpXG4gIGNvZGVQb2ludEF0OiBmdW5jdGlvbiBjb2RlUG9pbnRBdChwb3MpIHtcbiAgICByZXR1cm4gJGF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuIiwiLy8gMjEuMS4zLjYgU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aChzZWFyY2hTdHJpbmcgWywgZW5kUG9zaXRpb25dKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNvbnRleHQgPSByZXF1aXJlKCcuL19zdHJpbmctY29udGV4dCcpO1xudmFyIEVORFNfV0lUSCA9ICdlbmRzV2l0aCc7XG52YXIgJGVuZHNXaXRoID0gJydbRU5EU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShFTkRTX1dJVEgpLCAnU3RyaW5nJywge1xuICBlbmRzV2l0aDogZnVuY3Rpb24gZW5kc1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgZW5kUG9zaXRpb24gPSBAbGVuZ3RoICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgRU5EU19XSVRIKTtcbiAgICB2YXIgZW5kUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodGhhdC5sZW5ndGgpO1xuICAgIHZhciBlbmQgPSBlbmRQb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gbGVuIDogTWF0aC5taW4odG9MZW5ndGgoZW5kUG9zaXRpb24pLCBsZW4pO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJGVuZHNXaXRoXG4gICAgICA/ICRlbmRzV2l0aC5jYWxsKHRoYXQsIHNlYXJjaCwgZW5kKVxuICAgICAgOiB0aGF0LnNsaWNlKGVuZCAtIHNlYXJjaC5sZW5ndGgsIGVuZCkgPT09IHNlYXJjaDtcbiAgfVxufSk7XG4iLCIvLyAyMS4xLjMuNyBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzKHNlYXJjaFN0cmluZywgcG9zaXRpb24gPSAwKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBJTkNMVURFUyA9ICdpbmNsdWRlcyc7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoSU5DTFVERVMpLCAnU3RyaW5nJywge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgcmV0dXJuICEhfmNvbnRleHQodGhpcywgc2VhcmNoU3RyaW5nLCBJTkNMVURFUylcbiAgICAgIC5pbmRleE9mKHNlYXJjaFN0cmluZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQoY291bnQpXG4gIHJlcGVhdDogcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpXG59KTtcbiIsIi8vIDIxLjEuMy4xOCBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIFssIHBvc2l0aW9uIF0pXG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY29udGV4dCA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0Jyk7XG52YXIgU1RBUlRTX1dJVEggPSAnc3RhcnRzV2l0aCc7XG52YXIgJHN0YXJ0c1dpdGggPSAnJ1tTVEFSVFNfV0lUSF07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoU1RBUlRTX1dJVEgpLCAnU3RyaW5nJywge1xuICBzdGFydHNXaXRoOiBmdW5jdGlvbiBzdGFydHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIFNUQVJUU19XSVRIKTtcbiAgICB2YXIgaW5kZXggPSB0b0xlbmd0aChNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgdGhhdC5sZW5ndGgpKTtcbiAgICB2YXIgc2VhcmNoID0gU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRzdGFydHNXaXRoXG4gICAgICA/ICRzdGFydHNXaXRoLmNhbGwodGhhdCwgc2VhcmNoLCBpbmRleClcbiAgICAgIDogdGhhdC5zbGljZShpbmRleCwgaW5kZXggKyBzZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjIgU3RyaW5nLnByb3RvdHlwZS5hbmNob3IobmFtZSlcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2FuY2hvcicsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBhbmNob3IobmFtZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdhJywgJ25hbWUnLCBuYW1lKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMyBTdHJpbmcucHJvdG90eXBlLmJpZygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdiaWcnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYmlnKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdiaWcnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy40IFN0cmluZy5wcm90b3R5cGUuYmxpbmsoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmxpbmsnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYmxpbmsoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2JsaW5rJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNSBTdHJpbmcucHJvdG90eXBlLmJvbGQoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYm9sZCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBib2xkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdiJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNiBTdHJpbmcucHJvdG90eXBlLmZpeGVkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZpeGVkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjcgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250Y29sb3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udGNvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjggU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnZm9udHNpemUnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udHNpemUoc2l6ZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ3NpemUnLCBzaXplKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuOSBTdHJpbmcucHJvdG90eXBlLml0YWxpY3MoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnaXRhbGljcycsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpdGFsaWNzKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdpJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTAgU3RyaW5nLnByb3RvdHlwZS5saW5rKHVybClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2xpbmsnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gbGluayh1cmwpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICdocmVmJywgdXJsKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTEgU3RyaW5nLnByb3RvdHlwZS5zbWFsbCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzbWFsbCcsIGZ1bmN0aW9uIChjcmVhdGVIVE1MKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzbWFsbCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc21hbGwnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xMiBTdHJpbmcucHJvdG90eXBlLnN0cmlrZSgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzdHJpa2UnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc3RyaWtlKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdHJpa2UnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xMyBTdHJpbmcucHJvdG90eXBlLnN1YigpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzdWInLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc3ViKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdWInLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4xNCBTdHJpbmcucHJvdG90eXBlLnN1cCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzdXAnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc3VwKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdzdXAnLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIvLyAyMC4zLjMuMSAvIDE1LjkuNC40IERhdGUubm93KClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnRGF0ZScsIHsgbm93OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgfSB9KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IERhdGUoTmFOKS50b0pTT04oKSAhPT0gbnVsbFxuICAgIHx8IERhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHsgdG9JU09TdHJpbmc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDE7IH0gfSkgIT09IDE7XG59KSwgJ0RhdGUnLCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTihrZXkpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBwdiA9IHRvUHJpbWl0aXZlKE8pO1xuICAgIHJldHVybiB0eXBlb2YgcHYgPT0gJ251bWJlcicgJiYgIWlzRmluaXRlKHB2KSA/IG51bGwgOiBPLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ2V0VGltZSA9IERhdGUucHJvdG90eXBlLmdldFRpbWU7XG52YXIgJHRvSVNPU3RyaW5nID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBseiA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIG51bSA+IDkgPyBudW0gOiAnMCcgKyBudW07XG59O1xuXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvSVNPU3RyaW5nLmNhbGwobmV3IERhdGUoTmFOKSk7XG59KSkgPyBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHtcbiAgaWYgKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKSB0aHJvdyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgdmFyIGQgPSB0aGlzO1xuICB2YXIgeSA9IGQuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIG0gPSBkLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICB2YXIgcyA9IHkgPCAwID8gJy0nIDogeSA+IDk5OTkgPyAnKycgOiAnJztcbiAgcmV0dXJuIHMgKyAoJzAwMDAwJyArIE1hdGguYWJzKHkpKS5zbGljZShzID8gLTYgOiAtNCkgK1xuICAgICctJyArIGx6KGQuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICsgbHooZC5nZXRVVENEYXRlKCkpICtcbiAgICAnVCcgKyBseihkLmdldFVUQ0hvdXJzKCkpICsgJzonICsgbHooZC5nZXRVVENNaW51dGVzKCkpICtcbiAgICAnOicgKyBseihkLmdldFVUQ1NlY29uZHMoKSkgKyAnLicgKyAobSA+IDk5ID8gbSA6ICcwJyArIGx6KG0pKSArICdaJztcbn0gOiAkdG9JU09TdHJpbmc7XG4iLCJ2YXIgRGF0ZVByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSBEYXRlUHJvdG9bVE9fU1RSSU5HXTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvLmdldFRpbWU7XG5pZiAobmV3IERhdGUoTmFOKSArICcnICE9IElOVkFMSURfREFURSkge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKERhdGVQcm90bywgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAkdG9TdHJpbmcuY2FsbCh0aGlzKSA6IElOVkFMSURfREFURTtcbiAgfSk7XG59XG4iLCJ2YXIgVE9fUFJJTUlUSVZFID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvUHJpbWl0aXZlJyk7XG52YXIgcHJvdG8gPSBEYXRlLnByb3RvdHlwZTtcblxuaWYgKCEoVE9fUFJJTUlUSVZFIGluIHByb3RvKSkgcmVxdWlyZSgnLi9faGlkZScpKHByb3RvLCBUT19QUklNSVRJVkUsIHJlcXVpcmUoJy4vX2RhdGUtdG8tcHJpbWl0aXZlJykpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBOVU1CRVIgPSAnbnVtYmVyJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaGludCkge1xuICBpZiAoaGludCAhPT0gJ3N0cmluZycgJiYgaGludCAhPT0gTlVNQkVSICYmIGhpbnQgIT09ICdkZWZhdWx0JykgdGhyb3cgVHlwZUVycm9yKCdJbmNvcnJlY3QgaGludCcpO1xuICByZXR1cm4gdG9QcmltaXRpdmUoYW5PYmplY3QodGhpcyksIGhpbnQgIT0gTlVNQkVSKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4xIEFycmF5LmZyb20oYXJyYXlMaWtlLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgZnJvbTogZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvcjtcbiAgICBpZiAobWFwcGluZykgbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZiAoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXIoaXRlckZuKSkpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEMoKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yIChyZXN1bHQgPSBuZXcgQyhsZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xuXG4vLyBXZWJLaXQgQXJyYXkub2YgaXNuJ3QgZ2VuZXJpY1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gIShBcnJheS5vZi5jYWxsKEYpIGluc3RhbmNlb2YgRik7XG59KSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjIuMyBBcnJheS5vZiggLi4uaXRlbXMpXG4gIG9mOiBmdW5jdGlvbiBvZigvKiAuLi5hcmdzICovKSB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyAodHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheSkoYUxlbik7XG4gICAgd2hpbGUgKGFMZW4gPiBpbmRleCkgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICByZXN1bHQubGVuZ3RoID0gYUxlbjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUuam9pbihzZXBhcmF0b3IpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUpvaW4gPSBbXS5qb2luO1xuXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2Ugc3RyaW5nc1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAocmVxdWlyZSgnLi9faW9iamVjdCcpICE9IE9iamVjdCB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKGFycmF5Sm9pbikpLCAnQXJyYXknLCB7XG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRvSU9iamVjdCh0aGlzKSwgc2VwYXJhdG9yID09PSB1bmRlZmluZWQgPyAnLCcgOiBzZXBhcmF0b3IpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xuXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2UgRVMzIHN0cmluZ3MgYW5kIERPTSBvYmplY3RzXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICBpZiAoaHRtbCkgYXJyYXlTbGljZS5jYWxsKGh0bWwpO1xufSksICdBcnJheScsIHtcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKGJlZ2luLCBlbmQpIHtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodGhpcy5sZW5ndGgpO1xuICAgIHZhciBrbGFzcyA9IGNvZih0aGlzKTtcbiAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IGVuZDtcbiAgICBpZiAoa2xhc3MgPT0gJ0FycmF5JykgcmV0dXJuIGFycmF5U2xpY2UuY2FsbCh0aGlzLCBiZWdpbiwgZW5kKTtcbiAgICB2YXIgc3RhcnQgPSB0b0Fic29sdXRlSW5kZXgoYmVnaW4sIGxlbik7XG4gICAgdmFyIHVwVG8gPSB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW4pO1xuICAgIHZhciBzaXplID0gdG9MZW5ndGgodXBUbyAtIHN0YXJ0KTtcbiAgICB2YXIgY2xvbmVkID0gbmV3IEFycmF5KHNpemUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgY2xvbmVkW2ldID0ga2xhc3MgPT0gJ1N0cmluZydcbiAgICAgID8gdGhpcy5jaGFyQXQoc3RhcnQgKyBpKVxuICAgICAgOiB0aGlzW3N0YXJ0ICsgaV07XG4gICAgcmV0dXJuIGNsb25lZDtcbiAgfVxufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgxKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLm1hcCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE1IC8gMTUuNC40LjE5IEFycmF5LnByb3RvdHlwZS5tYXAoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgbWFwOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJG1hcCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5zb21lLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjMgLyAxNS40LjQuMTcgQXJyYXkucHJvdG90eXBlLnNvbWUoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGV2ZXJ5ID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDQpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZXZlcnksIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy41IC8gMTUuNC40LjE2IEFycmF5LnByb3RvdHlwZS5ldmVyeShjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBldmVyeTogZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGV2ZXJ5KHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2UsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xOCAvIDE1LjQuNC4yMSBBcnJheS5wcm90b3R5cGUucmVkdWNlKGNhbGxiYWNrZm4gWywgaW5pdGlhbFZhbHVlXSlcbiAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHJldHVybiAkcmVkdWNlKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50c1sxXSwgZmFsc2UpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5LXJlZHVjZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10ucmVkdWNlUmlnaHQsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xOSAvIDE1LjQuNC4yMiBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQoY2FsbGJhY2tmbiBbLCBpbml0aWFsVmFsdWVdKVxuICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICAgIHJldHVybiAkcmVkdWNlKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50c1sxXSwgdHJ1ZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyICRuYXRpdmUgPSBbXS5pbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKE5FR0FUSVZFX1pFUk8gfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkbmF0aXZlKSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjExIC8gMTUuNC40LjE0IEFycmF5LnByb3RvdHlwZS5pbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiBORUdBVElWRV9aRVJPXG4gICAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgICA/ICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwXG4gICAgICA6ICRpbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgJG5hdGl2ZSA9IFtdLmxhc3RJbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5sYXN0SW5kZXhPZigxLCAtMCkgPCAwO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChORUdBVElWRV9aRVJPIHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoJG5hdGl2ZSkpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNCAvIDE1LjQuNC4xNSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCBbLCBmcm9tSW5kZXhdKVxuICBsYXN0SW5kZXhPZjogZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCA9IEBbKi0xXSAqLykge1xuICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICBpZiAoTkVHQVRJVkVfWkVSTykgcmV0dXJuICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwO1xuICAgIHZhciBPID0gdG9JT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIGluZGV4ID0gTWF0aC5taW4oaW5kZXgsIHRvSW50ZWdlcihhcmd1bWVudHNbMV0pKTtcbiAgICBpZiAoaW5kZXggPCAwKSBpbmRleCA9IGxlbmd0aCArIGluZGV4O1xuICAgIGZvciAoO2luZGV4ID49IDA7IGluZGV4LS0pIGlmIChpbmRleCBpbiBPKSBpZiAoT1tpbmRleF0gPT09IHNlYXJjaEVsZW1lbnQpIHJldHVybiBpbmRleCB8fCAwO1xuICAgIHJldHVybiAtMTtcbiAgfVxufSk7XG4iLCIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGNvcHlXaXRoaW46IHJlcXVpcmUoJy4vX2FycmF5LWNvcHktd2l0aGluJykgfSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdjb3B5V2l0aGluJyk7XG4iLCIvLyAyMi4xLjMuNiBBcnJheS5wcm90b3R5cGUuZmlsbCh2YWx1ZSwgc3RhcnQgPSAwLCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGZpbGw6IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKSB9KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2ZpbGwnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDIyLjEuMy44IEFycmF5LnByb3RvdHlwZS5maW5kKHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNSk7XG52YXIgS0VZID0gJ2ZpbmQnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmQ6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuOSBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4KHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNik7XG52YXIgS0VZID0gJ2ZpbmRJbmRleCc7XG52YXIgZm9yY2VkID0gdHJ1ZTtcbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoS0VZIGluIFtdKSBBcnJheSgxKVtLRVldKGZ1bmN0aW9uICgpIHsgZm9yY2VkID0gZmFsc2U7IH0pO1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmb3JjZWQsICdBcnJheScsIHtcbiAgZmluZEluZGV4OiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2tmbiAvKiAsIHRoYXQgPSB1bmRlZmluZWQgKi8pIHtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7XG4iLCJyZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdBcnJheScpO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBCYXNlID0gJFJlZ0V4cDtcbnZhciBwcm90byA9ICRSZWdFeHAucHJvdG90eXBlO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcbi8vIFwibmV3XCIgY3JlYXRlcyBhIG5ldyBvYmplY3QsIG9sZCB3ZWJraXQgYnVnZ3kgaGVyZVxudmFyIENPUlJFQ1RfTkVXID0gbmV3ICRSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAoIUNPUlJFQ1RfTkVXIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZTJbcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyldID0gZmFsc2U7XG4gIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBjYW4gYWx0ZXIgZmxhZ3MgYW5kIElzUmVnRXhwIHdvcmtzIGNvcnJlY3Qgd2l0aCBAQG1hdGNoXG4gIHJldHVybiAkUmVnRXhwKHJlMSkgIT0gcmUxIHx8ICRSZWdFeHAocmUyKSA9PSByZTIgfHwgJFJlZ0V4cChyZTEsICdpJykgIT0gJy9hL2knO1xufSkpKSB7XG4gICRSZWdFeHAgPSBmdW5jdGlvbiBSZWdFeHAocCwgZikge1xuICAgIHZhciB0aVJFID0gdGhpcyBpbnN0YW5jZW9mICRSZWdFeHA7XG4gICAgdmFyIHBpUkUgPSBpc1JlZ0V4cChwKTtcbiAgICB2YXIgZmlVID0gZiA9PT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiAhdGlSRSAmJiBwaVJFICYmIHAuY29uc3RydWN0b3IgPT09ICRSZWdFeHAgJiYgZmlVID8gcFxuICAgICAgOiBpbmhlcml0SWZSZXF1aXJlZChDT1JSRUNUX05FV1xuICAgICAgICA/IG5ldyBCYXNlKHBpUkUgJiYgIWZpVSA/IHAuc291cmNlIDogcCwgZilcbiAgICAgICAgOiBCYXNlKChwaVJFID0gcCBpbnN0YW5jZW9mICRSZWdFeHApID8gcC5zb3VyY2UgOiBwLCBwaVJFICYmIGZpVSA/ICRmbGFncy5jYWxsKHApIDogZilcbiAgICAgICwgdGlSRSA/IHRoaXMgOiBwcm90bywgJFJlZ0V4cCk7XG4gIH07XG4gIHZhciBwcm94eSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkgaW4gJFJlZ0V4cCB8fCBkUCgkUmVnRXhwLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmFzZVtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgQmFzZVtrZXldID0gaXQ7IH1cbiAgICB9KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZSksIGkgPSAwOyBrZXlzLmxlbmd0aCA+IGk7KSBwcm94eShrZXlzW2krK10pO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICRSZWdFeHA7XG4gICRSZWdFeHAucHJvdG90eXBlID0gcHJvdG87XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCAnUmVnRXhwJywgJFJlZ0V4cCk7XG59XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ1JlZ0V4cCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi9lczYucmVnZXhwLmZsYWdzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkZmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IC8uL1tUT19TVFJJTkddO1xuXG52YXIgZGVmaW5lID0gZnVuY3Rpb24gKGZuKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoUmVnRXhwLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmbiwgdHJ1ZSk7XG59O1xuXG4vLyAyMS4yLjUuMTQgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpXG5pZiAocmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7IHJldHVybiAkdG9TdHJpbmcuY2FsbCh7IHNvdXJjZTogJ2EnLCBmbGFnczogJ2InIH0pICE9ICcvYS9iJzsgfSkpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgcmV0dXJuICcvJy5jb25jYXQoUi5zb3VyY2UsICcvJyxcbiAgICAgICdmbGFncycgaW4gUiA/IFIuZmxhZ3MgOiAhREVTQ1JJUFRPUlMgJiYgUiBpbnN0YW5jZW9mIFJlZ0V4cCA/ICRmbGFncy5jYWxsKFIpIDogdW5kZWZpbmVkKTtcbiAgfSk7XG4vLyBGRjQ0LSBSZWdFeHAjdG9TdHJpbmcgaGFzIGEgd3JvbmcgbmFtZVxufSBlbHNlIGlmICgkdG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkcpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi9fYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi9fcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxuLy8gQEBtYXRjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdtYXRjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBNQVRDSCwgJG1hdGNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5tYXRjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5tYXRjaFxuICAgIGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtNQVRDSF07XG4gICAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZCA/IGZuLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtNQVRDSF0oU3RyaW5nKE8pKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAbWF0Y2hcbiAgICBmdW5jdGlvbiAocmVnZXhwKSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKCRtYXRjaCwgcmVnZXhwLCB0aGlzKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmICghcnguZ2xvYmFsKSByZXR1cm4gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB2YXIgbiA9IDA7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKChyZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKSkgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIEFbbl0gPSBtYXRjaFN0cjtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgICAgbisrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG4gPT09IDAgPyBudWxsIDogQTtcbiAgICB9XG4gIF07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuL19hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MUyA9IC9cXCQoWyQmYCddfFxcZFxcZD98PFtePl0qPikvZztcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCA9IC9cXCQoWyQmYCddfFxcZFxcZD8pL2c7XG5cbnZhciBtYXliZVRvU3RyaW5nID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcblxuLy8gQEByZXBsYWNlIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3JlcGxhY2UnLCAyLCBmdW5jdGlvbiAoZGVmaW5lZCwgUkVQTEFDRSwgJHJlcGxhY2UsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZVxuICAgIGZ1bmN0aW9uIHJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIGZuID0gc2VhcmNoVmFsdWUgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VhcmNoVmFsdWVbUkVQTEFDRV07XG4gICAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGZuLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgICAgOiAkcmVwbGFjZS5jYWxsKFN0cmluZyhPKSwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAcmVwbGFjZVxuICAgIGZ1bmN0aW9uIChyZWdleHAsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZSgkcmVwbGFjZSwgcmVnZXhwLCB0aGlzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgICB2YXIgZnVuY3Rpb25hbFJlcGxhY2UgPSB0eXBlb2YgcmVwbGFjZVZhbHVlID09PSAnZnVuY3Rpb24nO1xuICAgICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkgcmVwbGFjZVZhbHVlID0gU3RyaW5nKHJlcGxhY2VWYWx1ZSk7XG4gICAgICB2YXIgZ2xvYmFsID0gcnguZ2xvYmFsO1xuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgICByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgYnJlYWs7XG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG4gICAgICAgIHZhciBtYXRjaFN0ciA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICBpZiAobWF0Y2hTdHIgPT09ICcnKSByeC5sYXN0SW5kZXggPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgdG9MZW5ndGgocngubGFzdEluZGV4KSwgZnVsbFVuaWNvZGUpO1xuICAgICAgfVxuICAgICAgdmFyIGFjY3VtdWxhdGVkUmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbmV4dFNvdXJjZVBvc2l0aW9uID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldO1xuICAgICAgICB2YXIgbWF0Y2hlZCA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSBtYXgobWluKHRvSW50ZWdlcihyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBTdHJpbmcocmVwbGFjZVZhbHVlLmFwcGx5KHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgbmV4dFNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkUmVzdWx0ICsgUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24pO1xuICAgIH1cbiAgXTtcblxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldHN1YnN0aXR1dGlvblxuICBmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VtZW50KSB7XG4gICAgdmFyIHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgIHZhciBtID0gY2FwdHVyZXMubGVuZ3RoO1xuICAgIHZhciBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQ7XG4gICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmFtZWRDYXB0dXJlcyA9IHRvT2JqZWN0KG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTO1xuICAgIH1cbiAgICByZXR1cm4gJHJlcGxhY2UuY2FsbChyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgICAgdmFyIGNhcHR1cmU7XG4gICAgICBzd2l0Y2ggKGNoLmNoYXJBdCgwKSkge1xuICAgICAgICBjYXNlICckJzogcmV0dXJuICckJztcbiAgICAgICAgY2FzZSAnJic6IHJldHVybiBtYXRjaGVkO1xuICAgICAgICBjYXNlICdgJzogcmV0dXJuIHN0ci5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgIGNhc2UgXCInXCI6IHJldHVybiBzdHIuc2xpY2UodGFpbFBvcyk7XG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2NoLnNsaWNlKDEsIC0xKV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IC8vIFxcZFxcZD9cbiAgICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIGlmIChuID4gbSkge1xuICAgICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgICAgaWYgKGYgPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIGlmIChmIDw9IG0pIHJldHVybiBjYXB0dXJlc1tmIC0gMV0gPT09IHVuZGVmaW5lZCA/IGNoLmNoYXJBdCgxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoLmNoYXJBdCgxKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW24gLSAxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gICAgfSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBzYW1lVmFsdWUgPSByZXF1aXJlKCcuL19zYW1lLXZhbHVlJyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG5cbi8vIEBAc2VhcmNoIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3NlYXJjaCcsIDEsIGZ1bmN0aW9uIChkZWZpbmVkLCBTRUFSQ0gsICRzZWFyY2gsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnNlYXJjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zZWFyY2hcbiAgICBmdW5jdGlvbiBzZWFyY2gocmVnZXhwKSB7XG4gICAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgICB2YXIgZm4gPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgICByZXR1cm4gZm4gIT09IHVuZGVmaW5lZCA/IGZuLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtTRUFSQ0hdKFN0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzZWFyY2hcbiAgICBmdW5jdGlvbiAocmVnZXhwKSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKCRzZWFyY2gsIHJlZ2V4cCwgdGhpcyk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgICB2YXIgcHJldmlvdXNMYXN0SW5kZXggPSByeC5sYXN0SW5kZXg7XG4gICAgICBpZiAoIXNhbWVWYWx1ZShwcmV2aW91c0xhc3RJbmRleCwgMCkpIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICBpZiAoIXNhbWVWYWx1ZShyeC5sYXN0SW5kZXgsIHByZXZpb3VzTGFzdEluZGV4KSkgcngubGFzdEluZGV4ID0gcHJldmlvdXNMYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSBudWxsID8gLTEgOiByZXN1bHQuaW5kZXg7XG4gICAgfVxuICBdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4vX2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjYWxsUmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRtaW4gPSBNYXRoLm1pbjtcbnZhciAkcHVzaCA9IFtdLnB1c2g7XG52YXIgJFNQTElUID0gJ3NwbGl0JztcbnZhciBMRU5HVEggPSAnbGVuZ3RoJztcbnZhciBMQVNUX0lOREVYID0gJ2xhc3RJbmRleCc7XG52YXIgTUFYX1VJTlQzMiA9IDB4ZmZmZmZmZmY7XG5cbi8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgneCcsICd5JykgLT4gL3gveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgU1VQUE9SVFNfWSA9ICFmYWlscyhmdW5jdGlvbiAoKSB7IFJlZ0V4cChNQVhfVUlOVDMyLCAneScpOyB9KTtcblxuLy8gQEBzcGxpdCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChkZWZpbmVkLCBTUExJVCwgJHNwbGl0LCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgdmFyIGludGVybmFsU3BsaXQ7XG4gIGlmIChcbiAgICAnYWJiYydbJFNQTElUXSgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0J1skU1BMSVRdKC8oPzopLywgLTEpW0xFTkdUSF0gIT0gNCB8fFxuICAgICdhYidbJFNQTElUXSgvKD86YWIpKi8pW0xFTkdUSF0gIT0gMiB8fFxuICAgICcuJ1skU1BMSVRdKC8oLj8pKC4/KS8pW0xFTkdUSF0gIT0gNCB8fFxuICAgICcuJ1skU1BMSVRdKC8oKSgpLylbTEVOR1RIXSA+IDEgfHxcbiAgICAnJ1skU1BMSVRdKC8uPy8pW0xFTkdUSF1cbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHRoaXMpO1xuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwKSByZXR1cm4gW107XG4gICAgICAvLyBJZiBgc2VwYXJhdG9yYCBpcyBub3QgYSByZWdleCwgdXNlIG5hdGl2ZSBzcGxpdFxuICAgICAgaWYgKCFpc1JlZ0V4cChzZXBhcmF0b3IpKSByZXR1cm4gJHNwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAgIHZhciBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyAneScgOiAnJyk7XG4gICAgICB2YXIgbGFzdExhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgc3BsaXRMaW1pdCA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgdmFyIHNlcGFyYXRvckNvcHkgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgJ2cnKTtcbiAgICAgIHZhciBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoO1xuICAgICAgd2hpbGUgKG1hdGNoID0gcmVnZXhwRXhlYy5jYWxsKHNlcGFyYXRvckNvcHksIHN0cmluZykpIHtcbiAgICAgICAgbGFzdEluZGV4ID0gc2VwYXJhdG9yQ29weVtMQVNUX0lOREVYXTtcbiAgICAgICAgaWYgKGxhc3RJbmRleCA+IGxhc3RMYXN0SW5kZXgpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgICBpZiAobWF0Y2hbTEVOR1RIXSA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmdbTEVOR1RIXSkgJHB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0W0xFTkdUSF0gPj0gc3BsaXRMaW1pdCkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0gPT09IG1hdGNoLmluZGV4KSBzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdKys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmdbTEVOR1RIXSkge1xuICAgICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yQ29weS50ZXN0KCcnKSkgb3V0cHV0LnB1c2goJycpO1xuICAgICAgfSBlbHNlIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgICByZXR1cm4gb3V0cHV0W0xFTkdUSF0gPiBzcGxpdExpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIHNwbGl0TGltaXQpIDogb3V0cHV0O1xuICAgIH07XG4gIC8vIENoYWtyYSwgVjhcbiAgfSBlbHNlIGlmICgnMCdbJFNQTElUXSh1bmRlZmluZWQsIDApW0xFTkdUSF0pIHtcbiAgICBpbnRlcm5hbFNwbGl0ID0gZnVuY3Rpb24gKHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHJldHVybiBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCA/IFtdIDogJHNwbGl0LmNhbGwodGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpbnRlcm5hbFNwbGl0ID0gJHNwbGl0O1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zcGxpdFxuICAgIGZ1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvciA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZXBhcmF0b3JbU1BMSVRdO1xuICAgICAgcmV0dXJuIHNwbGl0dGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBzcGxpdHRlci5jYWxsKHNlcGFyYXRvciwgTywgbGltaXQpXG4gICAgICAgIDogaW50ZXJuYWxTcGxpdC5jYWxsKFN0cmluZyhPKSwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNwbGl0XG4gICAgLy9cbiAgICAvLyBOT1RFOiBUaGlzIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIGVuZ2luZXMgdGhhdCBkb24ndCBzdXBwb3J0XG4gICAgLy8gdGhlICd5JyBmbGFnLlxuICAgIGZ1bmN0aW9uIChyZWdleHAsIGxpbWl0KSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKGludGVybmFsU3BsaXQsIHJlZ2V4cCwgdGhpcywgbGltaXQsIGludGVybmFsU3BsaXQgIT09ICRzcGxpdCk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHJ4LCBSZWdFeHApO1xuXG4gICAgICB2YXIgdW5pY29kZU1hdGNoaW5nID0gcngudW5pY29kZTtcbiAgICAgIHZhciBmbGFncyA9IChyeC5pZ25vcmVDYXNlID8gJ2knIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4LnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKFNVUFBPUlRTX1kgPyAneScgOiAnZycpO1xuXG4gICAgICAvLyBeKD8gKyByeCArICkgaXMgbmVlZGVkLCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgUyBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgdmFyIHNwbGl0dGVyID0gbmV3IEMoU1VQUE9SVFNfWSA/IHJ4IDogJ14oPzonICsgcnguc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgICB2YXIgbGltID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmIChsaW0gPT09IDApIHJldHVybiBbXTtcbiAgICAgIGlmIChTLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKSA9PT0gbnVsbCA/IFtTXSA6IFtdO1xuICAgICAgdmFyIHAgPSAwO1xuICAgICAgdmFyIHEgPSAwO1xuICAgICAgdmFyIEEgPSBbXTtcbiAgICAgIHdoaWxlIChxIDwgUy5sZW5ndGgpIHtcbiAgICAgICAgc3BsaXR0ZXIubGFzdEluZGV4ID0gU1VQUE9SVFNfWSA/IHEgOiAwO1xuICAgICAgICB2YXIgeiA9IGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBTVVBQT1JUU19ZID8gUyA6IFMuc2xpY2UocSkpO1xuICAgICAgICB2YXIgZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHogPT09IG51bGwgfHxcbiAgICAgICAgICAoZSA9ICRtaW4odG9MZW5ndGgoc3BsaXR0ZXIubGFzdEluZGV4ICsgKFNVUFBPUlRTX1kgPyAwIDogcSkpLCBTLmxlbmd0aCkpID09PSBwXG4gICAgICAgICkge1xuICAgICAgICAgIHEgPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBBLnB1c2goUy5zbGljZShwLCBxKSk7XG4gICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHoubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBBLnB1c2goeltpXSk7XG4gICAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHEgPSBwID0gZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQS5wdXNoKFMuc2xpY2UocCkpO1xuICAgICAgcmV0dXJuIEE7XG4gICAgfVxuICBdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VhayA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24td2VhaycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFdFQUtfU0VUID0gJ1dlYWtTZXQnO1xuXG4vLyAyMy40IFdlYWtTZXQgT2JqZWN0c1xucmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKFdFQUtfU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBXZWFrU2V0KCkgeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuNC4zLjEgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX1NFVCksIHZhbHVlLCB0cnVlKTtcbiAgfVxufSwgd2VhaywgZmFsc2UsIHRydWUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5BcnJheUJ1ZmZlcjtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgJEFycmF5QnVmZmVyID0gYnVmZmVyLkFycmF5QnVmZmVyO1xudmFyICREYXRhVmlldyA9IGJ1ZmZlci5EYXRhVmlldztcbnZhciAkaXNWaWV3ID0gJHR5cGVkLkFCViAmJiBBcnJheUJ1ZmZlci5pc1ZpZXc7XG52YXIgJHNsaWNlID0gJEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZTtcbnZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG52YXIgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQXJyYXlCdWZmZXIgIT09ICRBcnJheUJ1ZmZlciksIHsgQXJyYXlCdWZmZXI6ICRBcnJheUJ1ZmZlciB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhJHR5cGVkLkNPTlNUUiwgQVJSQVlfQlVGRkVSLCB7XG4gIC8vIDI0LjEuMy4xIEFycmF5QnVmZmVyLmlzVmlldyhhcmcpXG4gIGlzVmlldzogZnVuY3Rpb24gaXNWaWV3KGl0KSB7XG4gICAgcmV0dXJuICRpc1ZpZXcgJiYgJGlzVmlldyhpdCkgfHwgaXNPYmplY3QoaXQpICYmIFZJRVcgaW4gaXQ7XG4gIH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuVSArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIW5ldyAkQXJyYXlCdWZmZXIoMikuc2xpY2UoMSwgdW5kZWZpbmVkKS5ieXRlTGVuZ3RoO1xufSksIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjQuMyBBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2Uoc3RhcnQsIGVuZClcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoJHNsaWNlICE9PSB1bmRlZmluZWQgJiYgZW5kID09PSB1bmRlZmluZWQpIHJldHVybiAkc2xpY2UuY2FsbChhbk9iamVjdCh0aGlzKSwgc3RhcnQpOyAvLyBGRiBmaXhcbiAgICB2YXIgbGVuID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IGVuZCwgbGVuKTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJEFycmF5QnVmZmVyKSkodG9MZW5ndGgoZmluIC0gZmlyc3QpKTtcbiAgICB2YXIgdmlld1MgPSBuZXcgJERhdGFWaWV3KHRoaXMpO1xuICAgIHZhciB2aWV3VCA9IG5ldyAkRGF0YVZpZXcocmVzdWx0KTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChmaXJzdCA8IGZpbikge1xuICAgICAgdmlld1Quc2V0VWludDgoaW5kZXgrKywgdmlld1MuZ2V0VWludDgoZmlyc3QrKykpO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoQVJSQVlfQlVGRkVSKTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL190eXBlZCcpLkFCViwge1xuICBEYXRhVmlldzogcmVxdWlyZSgnLi9fdHlwZWQtYnVmZmVyJykuRGF0YVZpZXdcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnSW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDgnLCAxLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVWludDhBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OENsYW1wZWRBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSwgdHJ1ZSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQxNicsIDIsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQxNicsIDIsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50MTZBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdGbG9hdDMyJywgNCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEZsb2F0MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdGbG9hdDY0JywgOCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEZsb2F0NjRBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCIvLyAyNi4xLjEgUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgckFwcGx5ID0gKHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3QgfHwge30pLmFwcGx5O1xudmFyIGZBcHBseSA9IEZ1bmN0aW9uLmFwcGx5O1xuLy8gTVMgRWRnZSBhcmd1bWVudHNMaXN0IGFyZ3VtZW50IGlzIG9wdGlvbmFsXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgckFwcGx5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KSwgJ1JlZmxlY3QnLCB7XG4gIGFwcGx5OiBmdW5jdGlvbiBhcHBseSh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdCkge1xuICAgIHZhciBUID0gYUZ1bmN0aW9uKHRhcmdldCk7XG4gICAgdmFyIEwgPSBhbk9iamVjdChhcmd1bWVudHNMaXN0KTtcbiAgICByZXR1cm4gckFwcGx5ID8gckFwcGx5KFQsIHRoaXNBcmd1bWVudCwgTCkgOiBmQXBwbHkuY2FsbChULCB0aGlzQXJndW1lbnQsIEwpO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMiBSZWZsZWN0LmNvbnN0cnVjdCh0YXJnZXQsIGFyZ3VtZW50c0xpc3QgWywgbmV3VGFyZ2V0XSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL19iaW5kJyk7XG52YXIgckNvbnN0cnVjdCA9IChyZXF1aXJlKCcuL19nbG9iYWwnKS5SZWZsZWN0IHx8IHt9KS5jb25zdHJ1Y3Q7XG5cbi8vIE1TIEVkZ2Ugc3VwcG9ydHMgb25seSAyIGFyZ3VtZW50cyBhbmQgYXJndW1lbnRzTGlzdCBhcmd1bWVudCBpcyBvcHRpb25hbFxuLy8gRkYgTmlnaHRseSBzZXRzIHRoaXJkIGFyZ3VtZW50IGFzIGBuZXcudGFyZ2V0YCwgYnV0IGRvZXMgbm90IGNyZWF0ZSBgdGhpc2AgZnJvbSBpdFxudmFyIE5FV19UQVJHRVRfQlVHID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiAhKHJDb25zdHJ1Y3QoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCBbXSwgRikgaW5zdGFuY2VvZiBGKTtcbn0pO1xudmFyIEFSR1NfQlVHID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgckNvbnN0cnVjdChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE5FV19UQVJHRVRfQlVHIHx8IEFSR1NfQlVHKSwgJ1JlZmxlY3QnLCB7XG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gY29uc3RydWN0KFRhcmdldCwgYXJncyAvKiAsIG5ld1RhcmdldCAqLykge1xuICAgIGFGdW5jdGlvbihUYXJnZXQpO1xuICAgIGFuT2JqZWN0KGFyZ3MpO1xuICAgIHZhciBuZXdUYXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IFRhcmdldCA6IGFGdW5jdGlvbihhcmd1bWVudHNbMl0pO1xuICAgIGlmIChBUkdTX0JVRyAmJiAhTkVXX1RBUkdFVF9CVUcpIHJldHVybiByQ29uc3RydWN0KFRhcmdldCwgYXJncywgbmV3VGFyZ2V0KTtcbiAgICBpZiAoVGFyZ2V0ID09IG5ld1RhcmdldCkge1xuICAgICAgLy8gdy9vIGFsdGVyZWQgbmV3VGFyZ2V0LCBvcHRpbWl6YXRpb24gZm9yIDAtNCBhcmd1bWVudHNcbiAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IFRhcmdldCgpO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0pO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgVGFyZ2V0KGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICAgICAgfVxuICAgICAgLy8gdy9vIGFsdGVyZWQgbmV3VGFyZ2V0LCBsb3Qgb2YgYXJndW1lbnRzIGNhc2VcbiAgICAgIHZhciAkYXJncyA9IFtudWxsXTtcbiAgICAgICRhcmdzLnB1c2guYXBwbHkoJGFyZ3MsIGFyZ3MpO1xuICAgICAgcmV0dXJuIG5ldyAoYmluZC5hcHBseShUYXJnZXQsICRhcmdzKSkoKTtcbiAgICB9XG4gICAgLy8gd2l0aCBhbHRlcmVkIG5ld1RhcmdldCwgbm90IHN1cHBvcnQgYnVpbHQtaW4gY29uc3RydWN0b3JzXG4gICAgdmFyIHByb3RvID0gbmV3VGFyZ2V0LnByb3RvdHlwZTtcbiAgICB2YXIgaW5zdGFuY2UgPSBjcmVhdGUoaXNPYmplY3QocHJvdG8pID8gcHJvdG8gOiBPYmplY3QucHJvdG90eXBlKTtcbiAgICB2YXIgcmVzdWx0ID0gRnVuY3Rpb24uYXBwbHkuY2FsbChUYXJnZXQsIGluc3RhbmNlLCBhcmdzKTtcbiAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IGluc3RhbmNlO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMyBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpXG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xuXG4vLyBNUyBFZGdlIGhhcyBicm9rZW4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSAtIHRocm93aW5nIGluc3RlYWQgb2YgcmV0dXJuaW5nIGZhbHNlXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShkUC5mKHt9LCAxLCB7IHZhbHVlOiAxIH0pLCAxLCB7IHZhbHVlOiAyIH0pO1xufSksICdSZWZsZWN0Jywge1xuICBkZWZpbmVQcm9wZXJ0eTogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcykge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgcHJvcGVydHlLZXkgPSB0b1ByaW1pdGl2ZShwcm9wZXJ0eUtleSwgdHJ1ZSk7XG4gICAgYW5PYmplY3QoYXR0cmlidXRlcyk7XG4gICAgdHJ5IHtcbiAgICAgIGRQLmYodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsIi8vIDI2LjEuNCBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBkZWxldGVQcm9wZXJ0eTogZnVuY3Rpb24gZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHZhciBkZXNjID0gZ09QRChhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gICAgcmV0dXJuIGRlc2MgJiYgIWRlc2MuY29uZmlndXJhYmxlID8gZmFsc2UgOiBkZWxldGUgdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyAyNi4xLjUgUmVmbGVjdC5lbnVtZXJhdGUodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIEVudW1lcmF0ZSA9IGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gYW5PYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB2YXIga2V5cyA9IHRoaXMuX2sgPSBbXTsgICAgICAvLyBrZXlzXG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIGl0ZXJhdGVkKSBrZXlzLnB1c2goa2V5KTtcbn07XG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKEVudW1lcmF0ZSwgJ09iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIga2V5cyA9IHRoYXQuX2s7XG4gIHZhciBrZXk7XG4gIGRvIHtcbiAgICBpZiAodGhhdC5faSA+PSBrZXlzLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9IHdoaWxlICghKChrZXkgPSBrZXlzW3RoYXQuX2krK10pIGluIHRoYXQuX3QpKTtcbiAgcmV0dXJuIHsgdmFsdWU6IGtleSwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGVudW1lcmF0ZTogZnVuY3Rpb24gZW51bWVyYXRlKHRhcmdldCkge1xuICAgIHJldHVybiBuZXcgRW51bWVyYXRlKHRhcmdldCk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS42IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHlLZXkgWywgcmVjZWl2ZXJdKVxudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbmZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3BlcnR5S2V5IC8qICwgcmVjZWl2ZXIgKi8pIHtcbiAgdmFyIHJlY2VpdmVyID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0YXJnZXQgOiBhcmd1bWVudHNbMl07XG4gIHZhciBkZXNjLCBwcm90bztcbiAgaWYgKGFuT2JqZWN0KHRhcmdldCkgPT09IHJlY2VpdmVyKSByZXR1cm4gdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgaWYgKGRlc2MgPSBnT1BELmYodGFyZ2V0LCBwcm9wZXJ0eUtleSkpIHJldHVybiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICA/IGRlc2MudmFsdWVcbiAgICA6IGRlc2MuZ2V0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gZGVzYy5nZXQuY2FsbChyZWNlaXZlcilcbiAgICAgIDogdW5kZWZpbmVkO1xuICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkgcmV0dXJuIGdldChwcm90bywgcHJvcGVydHlLZXksIHJlY2VpdmVyKTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBnZXQ6IGdldCB9KTtcbiIsIi8vIDI2LjEuNyBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICByZXR1cm4gZ09QRC5mKGFuT2JqZWN0KHRhcmdldCksIHByb3BlcnR5S2V5KTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjggUmVmbGVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGdldFByb3RvID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZ2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKHRhcmdldCkge1xuICAgIHJldHVybiBnZXRQcm90byhhbk9iamVjdCh0YXJnZXQpKTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjkgUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaGFzOiBmdW5jdGlvbiBoYXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleSBpbiB0YXJnZXQ7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4xMCBSZWZsZWN0LmlzRXh0ZW5zaWJsZSh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgJGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGU7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgaXNFeHRlbnNpYmxlOiBmdW5jdGlvbiBpc0V4dGVuc2libGUodGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICByZXR1cm4gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUodGFyZ2V0KSA6IHRydWU7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4xMSBSZWZsZWN0Lm93bktleXModGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBvd25LZXlzOiByZXF1aXJlKCcuL19vd24ta2V5cycpIH0pO1xuIiwiLy8gMjYuMS4xMiBSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkcHJldmVudEV4dGVuc2lvbnMgPSBPYmplY3QucHJldmVudEV4dGVuc2lvbnM7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgcHJldmVudEV4dGVuc2lvbnM6IGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCkge1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmICgkcHJldmVudEV4dGVuc2lvbnMpICRwcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIvLyAyNi4xLjEzIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgWywgcmVjZWl2ZXJdKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgViAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdGFyZ2V0IDogYXJndW1lbnRzWzNdO1xuICB2YXIgb3duRGVzYyA9IGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIHZhciBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvO1xuICBpZiAoIW93bkRlc2MpIHtcbiAgICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIHNldChwcm90bywgcHJvcGVydHlLZXksIFYsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgb3duRGVzYyA9IGNyZWF0ZURlc2MoMCk7XG4gIH1cbiAgaWYgKGhhcyhvd25EZXNjLCAndmFsdWUnKSkge1xuICAgIGlmIChvd25EZXNjLndyaXRhYmxlID09PSBmYWxzZSB8fCAhaXNPYmplY3QocmVjZWl2ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvciA9IGdPUEQuZihyZWNlaXZlciwgcHJvcGVydHlLZXkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdEZXNjcmlwdG9yLmdldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iuc2V0IHx8IGV4aXN0aW5nRGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGV4aXN0aW5nRGVzY3JpcHRvci52YWx1ZSA9IFY7XG4gICAgICBkUC5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSwgZXhpc3RpbmdEZXNjcmlwdG9yKTtcbiAgICB9IGVsc2UgZFAuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGNyZWF0ZURlc2MoMCwgVikpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvd25EZXNjLnNldCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiAob3duRGVzYy5zZXQuY2FsbChyZWNlaXZlciwgViksIHRydWUpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IHNldDogc2V0IH0pO1xuIiwiLy8gMjYuMS4xNCBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNldFByb3RvID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJyk7XG5cbmlmIChzZXRQcm90bykgJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBzZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90bykge1xuICAgIHNldFByb3RvLmNoZWNrKHRhcmdldCwgcHJvdG8pO1xuICAgIHRyeSB7XG4gICAgICBzZXRQcm90by5zZXQodGFyZ2V0LCBwcm90byk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L0FycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW5jbHVkZXMgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKHRydWUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoZWwgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuICRpbmNsdWRlcyh0aGlzLCBlbCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2luY2x1ZGVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdE1hcFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0TWFwOiBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuLCBBO1xuICAgIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgICBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgMSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0TWFwJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdHRlblxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0dGVuOiBmdW5jdGlvbiBmbGF0dGVuKC8qIGRlcHRoQXJnID0gMSAqLykge1xuICAgIHZhciBkZXB0aEFyZyA9IGFyZ3VtZW50c1swXTtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgZmxhdHRlbkludG9BcnJheShBLCBPLCBPLCBzb3VyY2VMZW4sIDAsIGRlcHRoQXJnID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoQXJnKSk7XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmxhdHRlbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIGF0OiBmdW5jdGlvbiBhdChwb3MpIHtcbiAgICByZXR1cm4gJGF0KHRoaXMsIHBvcyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhZCA9IHJlcXVpcmUoJy4vX3N0cmluZy1wYWQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8yODBcbnZhciBXRUJLSVRfQlVHID0gL1ZlcnNpb25cXC8xMFxcLlxcZCsoXFwuXFxkKyk/KCBNb2JpbGVcXC9cXHcrKT8gU2FmYXJpXFwvLy50ZXN0KHVzZXJBZ2VudCk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogV0VCS0lUX0JVRywgJ1N0cmluZycsIHtcbiAgcGFkU3RhcnQ6IGZ1bmN0aW9uIHBhZFN0YXJ0KG1heExlbmd0aCAvKiAsIGZpbGxTdHJpbmcgPSAnICcgKi8pIHtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcGFkLXN0YXJ0LWVuZFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFkID0gcmVxdWlyZSgnLi9fc3RyaW5nLXBhZCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzI4MFxudmFyIFdFQktJVF9CVUcgPSAvVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8oIE1vYmlsZVxcL1xcdyspPyBTYWZhcmlcXC8vLnRlc3QodXNlckFnZW50KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBXRUJLSVRfQlVHLCAnU3RyaW5nJywge1xuICBwYWRFbmQ6IGZ1bmN0aW9uIHBhZEVuZChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWQodGhpcywgbWF4TGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgZmFsc2UpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJtYXJrYmFnZS9lY21hc2NyaXB0LXN0cmluZy1sZWZ0LXJpZ2h0LXRyaW1cbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW1MZWZ0JywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltTGVmdCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMSk7XG4gIH07XG59LCAndHJpbVN0YXJ0Jyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltUmlnaHQnLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpIHtcbiAgICByZXR1cm4gJHRyaW0odGhpcywgMik7XG4gIH07XG59LCAndHJpbUVuZCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9TdHJpbmcucHJvdG90eXBlLm1hdGNoQWxsL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBnZXRGbGFncyA9IHJlcXVpcmUoJy4vX2ZsYWdzJyk7XG52YXIgUmVnRXhwUHJvdG8gPSBSZWdFeHAucHJvdG90eXBlO1xuXG52YXIgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yID0gZnVuY3Rpb24gKHJlZ2V4cCwgc3RyaW5nKSB7XG4gIHRoaXMuX3IgPSByZWdleHA7XG4gIHRoaXMuX3MgPSBzdHJpbmc7XG59O1xuXG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKCRSZWdFeHBTdHJpbmdJdGVyYXRvciwgJ1JlZ0V4cCBTdHJpbmcnLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgbWF0Y2ggPSB0aGlzLl9yLmV4ZWModGhpcy5fcyk7XG4gIHJldHVybiB7IHZhbHVlOiBtYXRjaCwgZG9uZTogbWF0Y2ggPT09IG51bGwgfTtcbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgbWF0Y2hBbGw6IGZ1bmN0aW9uIG1hdGNoQWxsKHJlZ2V4cCkge1xuICAgIGRlZmluZWQodGhpcyk7XG4gICAgaWYgKCFpc1JlZ0V4cChyZWdleHApKSB0aHJvdyBUeXBlRXJyb3IocmVnZXhwICsgJyBpcyBub3QgYSByZWdleHAhJyk7XG4gICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgdmFyIGZsYWdzID0gJ2ZsYWdzJyBpbiBSZWdFeHBQcm90byA/IFN0cmluZyhyZWdleHAuZmxhZ3MpIDogZ2V0RmxhZ3MuY2FsbChyZWdleHApO1xuICAgIHZhciByeCA9IG5ldyBSZWdFeHAocmVnZXhwLnNvdXJjZSwgfmZsYWdzLmluZGV4T2YoJ2cnKSA/IGZsYWdzIDogJ2cnICsgZmxhZ3MpO1xuICAgIHJ4Lmxhc3RJbmRleCA9IHRvTGVuZ3RoKHJlZ2V4cC5sYXN0SW5kZXgpO1xuICAgIHJldHVybiBuZXcgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKHJ4LCBTKTtcbiAgfVxufSk7XG4iLCJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ29ic2VydmFibGUnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdmFsdWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykoZmFsc2UpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoaXQpIHtcbiAgICByZXR1cm4gJHZhbHVlcyhpdCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcblxuLy8gQi4yLjIuMiBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oUCwgZ2V0dGVyKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fZGVmaW5lR2V0dGVyX186IGZ1bmN0aW9uIF9fZGVmaW5lR2V0dGVyX18oUCwgZ2V0dGVyKSB7XG4gICAgJGRlZmluZVByb3BlcnR5LmYodG9PYmplY3QodGhpcyksIFAsIHsgZ2V0OiBhRnVuY3Rpb24oZ2V0dGVyKSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG5cbi8vIEIuMi4yLjMgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZVNldHRlcl9fKFAsIHNldHRlcilcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2RlZmluZVNldHRlcl9fOiBmdW5jdGlvbiBfX2RlZmluZVNldHRlcl9fKFAsIHNldHRlcikge1xuICAgICRkZWZpbmVQcm9wZXJ0eS5mKHRvT2JqZWN0KHRoaXMpLCBQLCB7IHNldDogYUZ1bmN0aW9uKHNldHRlciksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbi8vIEIuMi4yLjQgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKFApXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19sb29rdXBHZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBHZXR0ZXJfXyhQKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICAgIHZhciBEO1xuICAgIGRvIHtcbiAgICAgIGlmIChEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKSByZXR1cm4gRC5nZXQ7XG4gICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG5cbi8vIEIuMi4yLjUgT2JqZWN0LnByb3RvdHlwZS5fX2xvb2t1cFNldHRlcl9fKFApXG5yZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICRleHBvcnQoJGV4cG9ydC5QICsgcmVxdWlyZSgnLi9fb2JqZWN0LWZvcmNlZC1wYW0nKSwgJ09iamVjdCcsIHtcbiAgX19sb29rdXBTZXR0ZXJfXzogZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyhQKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICAgIHZhciBEO1xuICAgIGRvIHtcbiAgICAgIGlmIChEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKSByZXR1cm4gRC5zZXQ7XG4gICAgfSB3aGlsZSAoTyA9IGdldFByb3RvdHlwZU9mKE8pKTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ01hcCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnTWFwJykgfSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnU2V0JykgfSk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1tYXAub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ01hcCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdTZXQnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWttYXAub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1dlYWtNYXAnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXdlYWtzZXQub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1dlYWtTZXQnKTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLW1hcC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ01hcCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0LmZyb21cbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLWZyb20nKSgnU2V0Jyk7XG4iLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy13ZWFrbWFwLmZyb21cbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLWZyb20nKSgnV2Vha01hcCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtd2Vha3NldC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1dlYWtTZXQnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWdsb2JhbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHsgZ2xvYmFsOiByZXF1aXJlKCcuL19nbG9iYWwnKSB9KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWdsb2JhbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdTeXN0ZW0nLCB7IGdsb2JhbDogcmVxdWlyZSgnLi9fZ2xvYmFsJykgfSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL3Byb3Bvc2FsLWlzLWVycm9yXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0Vycm9yJywge1xuICBpc0Vycm9yOiBmdW5jdGlvbiBpc0Vycm9yKGl0KSB7XG4gICAgcmV0dXJuIGNvZihpdCkgPT09ICdFcnJvcic7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjbGFtcDogZnVuY3Rpb24gY2xhbXAoeCwgbG93ZXIsIHVwcGVyKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHVwcGVyLCBNYXRoLm1heChsb3dlciwgeCkpO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgREVHX1BFUl9SQUQ6IE1hdGguUEkgLyAxODAgfSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIFJBRF9QRVJfREVHID0gMTgwIC8gTWF0aC5QSTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBkZWdyZWVzOiBmdW5jdGlvbiBkZWdyZWVzKHJhZGlhbnMpIHtcbiAgICByZXR1cm4gcmFkaWFucyAqIFJBRF9QRVJfREVHO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vcndhbGRyb24uZ2l0aHViLmlvL3Byb3Bvc2FsLW1hdGgtZXh0ZW5zaW9ucy9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgc2NhbGUgPSByZXF1aXJlKCcuL19tYXRoLXNjYWxlJyk7XG52YXIgZnJvdW5kID0gcmVxdWlyZSgnLi9fbWF0aC1mcm91bmQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBmc2NhbGU6IGZ1bmN0aW9uIGZzY2FsZSh4LCBpbkxvdywgaW5IaWdoLCBvdXRMb3csIG91dEhpZ2gpIHtcbiAgICByZXR1cm4gZnJvdW5kKHNjYWxlKHgsIGluTG93LCBpbkhpZ2gsIG91dExvdywgb3V0SGlnaCkpO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGlhZGRoOiBmdW5jdGlvbiBpYWRkaCh4MCwgeDEsIHkwLCB5MSkge1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMDtcbiAgICB2YXIgJHgxID0geDEgPj4+IDA7XG4gICAgdmFyICR5MCA9IHkwID4+PiAwO1xuICAgIHJldHVybiAkeDEgKyAoeTEgPj4+IDApICsgKCgkeDAgJiAkeTAgfCAoJHgwIHwgJHkwKSAmIH4oJHgwICsgJHkwID4+PiAwKSkgPj4+IDMxKSB8IDA7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgaXN1Ymg6IGZ1bmN0aW9uIGlzdWJoKHgwLCB4MSwgeTAsIHkxKSB7XG4gICAgdmFyICR4MCA9IHgwID4+PiAwO1xuICAgIHZhciAkeDEgPSB4MSA+Pj4gMDtcbiAgICB2YXIgJHkwID0geTAgPj4+IDA7XG4gICAgcmV0dXJuICR4MSAtICh5MSA+Pj4gMCkgLSAoKH4keDAgJiAkeTAgfCB+KCR4MCBeICR5MCkgJiAkeDAgLSAkeTAgPj4+IDApID4+PiAzMSkgfCAwO1xuICB9XG59KTtcbiIsIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0JyZW5kYW5FaWNoLzQyOTRkNWMyMTJhNmQyMjU0NzAzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGltdWxoOiBmdW5jdGlvbiBpbXVsaCh1LCB2KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgJHUgPSArdTtcbiAgICB2YXIgJHYgPSArdjtcbiAgICB2YXIgdTAgPSAkdSAmIFVJTlQxNjtcbiAgICB2YXIgdjAgPSAkdiAmIFVJTlQxNjtcbiAgICB2YXIgdTEgPSAkdSA+PiAxNjtcbiAgICB2YXIgdjEgPSAkdiA+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+IDE2KTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IFJBRF9QRVJfREVHOiAxODAgLyBNYXRoLlBJIH0pO1xuIiwiLy8gaHR0cHM6Ly9yd2FsZHJvbi5naXRodWIuaW8vcHJvcG9zYWwtbWF0aC1leHRlbnNpb25zL1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBERUdfUEVSX1JBRCA9IE1hdGguUEkgLyAxODA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgcmFkaWFuczogZnVuY3Rpb24gcmFkaWFucyhkZWdyZWVzKSB7XG4gICAgcmV0dXJuIGRlZ3JlZXMgKiBERUdfUEVSX1JBRDtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL3J3YWxkcm9uLmdpdGh1Yi5pby9wcm9wb3NhbC1tYXRoLWV4dGVuc2lvbnMvXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IHNjYWxlOiByZXF1aXJlKCcuL19tYXRoLXNjYWxlJykgfSk7XG4iLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB1bXVsaDogZnVuY3Rpb24gdW11bGgodSwgdikge1xuICAgIHZhciBVSU5UMTYgPSAweGZmZmY7XG4gICAgdmFyICR1ID0gK3U7XG4gICAgdmFyICR2ID0gK3Y7XG4gICAgdmFyIHUwID0gJHUgJiBVSU5UMTY7XG4gICAgdmFyIHYwID0gJHYgJiBVSU5UMTY7XG4gICAgdmFyIHUxID0gJHUgPj4+IDE2O1xuICAgIHZhciB2MSA9ICR2ID4+PiAxNjtcbiAgICB2YXIgdCA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+Pj4gMTYpICsgKCh1MCAqIHYxID4+PiAwKSArICh0ICYgVUlOVDE2KSA+Pj4gMTYpO1xuICB9XG59KTtcbiIsIi8vIGh0dHA6Ly9qZmJhc3RpZW4uZ2l0aHViLmlvL3BhcGVycy9NYXRoLnNpZ25iaXQuaHRtbFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzaWduYml0OiBmdW5jdGlvbiBzaWduYml0KHgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICByZXR1cm4gKHggPSAreCkgIT0geCA/IHggOiB4ID09IDAgPyAxIC8geCA9PSBJbmZpbml0eSA6IHggPiAwO1xufSB9KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtZmluYWxseVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1Byb21pc2UnLCB7ICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBjb3JlLlByb21pc2UgfHwgZ2xvYmFsLlByb21pc2UpO1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBvbkZpbmFsbHkgPT0gJ2Z1bmN0aW9uJztcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICB9IDogb25GaW5hbGx5LFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgfSA6IG9uRmluYWxseVxuICApO1xufSB9KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUHJvbWlzZScsIHsgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYodGhpcyk7XG4gIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAocmVzdWx0LmUgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudik7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b01ldGFLZXkgPSBtZXRhZGF0YS5rZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IG1ldGFkYXRhLnNldDtcblxubWV0YWRhdGEuZXhwKHsgZGVmaW5lTWV0YWRhdGE6IGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHRhcmdldEtleSkge1xuICBvcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCBhbk9iamVjdCh0YXJnZXQpLCB0b01ldGFLZXkodGFyZ2V0S2V5KSk7XG59IH0pO1xuIiwidmFyIG1ldGFkYXRhID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcbnZhciBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwID0gbWV0YWRhdGEubWFwO1xudmFyIHN0b3JlID0gbWV0YWRhdGEuc3RvcmU7XG5cbm1ldGFkYXRhLmV4cCh7IGRlbGV0ZU1ldGFkYXRhOiBmdW5jdGlvbiBkZWxldGVNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qICwgdGFyZ2V0S2V5ICovKSB7XG4gIHZhciB0YXJnZXRLZXkgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pO1xuICB2YXIgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSwgZmFsc2UpO1xuICBpZiAobWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCB8fCAhbWV0YWRhdGFNYXBbJ2RlbGV0ZSddKG1ldGFkYXRhS2V5KSkgcmV0dXJuIGZhbHNlO1xuICBpZiAobWV0YWRhdGFNYXAuc2l6ZSkgcmV0dXJuIHRydWU7XG4gIHZhciB0YXJnZXRNZXRhZGF0YSA9IHN0b3JlLmdldCh0YXJnZXQpO1xuICB0YXJnZXRNZXRhZGF0YVsnZGVsZXRlJ10odGFyZ2V0S2V5KTtcbiAgcmV0dXJuICEhdGFyZ2V0TWV0YWRhdGEuc2l6ZSB8fCBzdG9yZVsnZGVsZXRlJ10odGFyZ2V0KTtcbn0gfSk7XG4iLCJ2YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhcztcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0O1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5R2V0TWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiB1bmRlZmluZWQ7XG59O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRNZXRhZGF0YTogZnVuY3Rpb24gZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiAsIHRhcmdldEtleSAqLykge1xuICByZXR1cm4gb3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59IH0pO1xuIiwidmFyIFNldCA9IHJlcXVpcmUoJy4vZXM2LnNldCcpO1xudmFyIGZyb20gPSByZXF1aXJlKCcuL19hcnJheS1mcm9tLWl0ZXJhYmxlJyk7XG52YXIgbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgb3JkaW5hcnlPd25NZXRhZGF0YUtleXMgPSBtZXRhZGF0YS5rZXlzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5TWV0YWRhdGFLZXlzID0gZnVuY3Rpb24gKE8sIFApIHtcbiAgdmFyIG9LZXlzID0gb3JkaW5hcnlPd25NZXRhZGF0YUtleXMoTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgaWYgKHBhcmVudCA9PT0gbnVsbCkgcmV0dXJuIG9LZXlzO1xuICB2YXIgcEtleXMgPSBvcmRpbmFyeU1ldGFkYXRhS2V5cyhwYXJlbnQsIFApO1xuICByZXR1cm4gcEtleXMubGVuZ3RoID8gb0tleXMubGVuZ3RoID8gZnJvbShuZXcgU2V0KG9LZXlzLmNvbmNhdChwS2V5cykpKSA6IHBLZXlzIDogb0tleXM7XG59O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRNZXRhZGF0YUtleXM6IGZ1bmN0aW9uIGdldE1ldGFkYXRhS2V5cyh0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5TWV0YWRhdGFLZXlzKGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1sxXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0O1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgZ2V0T3duTWV0YWRhdGE6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldClcbiAgICAsIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IG1ldGFkYXRhLmtleXM7XG52YXIgdG9NZXRhS2V5ID0gbWV0YWRhdGEua2V5O1xuXG5tZXRhZGF0YS5leHAoeyBnZXRPd25NZXRhZGF0YUtleXM6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1sxXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gbWV0YWRhdGEuaGFzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5SGFzTWV0YWRhdGEgPSBmdW5jdGlvbiAoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgdmFyIGhhc093biA9IG9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICBpZiAoaGFzT3duKSByZXR1cm4gdHJ1ZTtcbiAgdmFyIHBhcmVudCA9IGdldFByb3RvdHlwZU9mKE8pO1xuICByZXR1cm4gcGFyZW50ICE9PSBudWxsID8gb3JkaW5hcnlIYXNNZXRhZGF0YShNZXRhZGF0YUtleSwgcGFyZW50LCBQKSA6IGZhbHNlO1xufTtcblxubWV0YWRhdGEuZXhwKHsgaGFzTWV0YWRhdGE6IGZ1bmN0aW9uIGhhc01ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5SGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciBtZXRhZGF0YSA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gbWV0YWRhdGEuaGFzO1xudmFyIHRvTWV0YUtleSA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHsgaGFzT3duTWV0YWRhdGE6IGZ1bmN0aW9uIGhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyogLCB0YXJnZXRLZXkgKi8pIHtcbiAgcmV0dXJuIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldClcbiAgICAsIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufSB9KTtcbiIsInZhciAkbWV0YWRhdGEgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvTWV0YUtleSA9ICRtZXRhZGF0YS5rZXk7XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9ICRtZXRhZGF0YS5zZXQ7XG5cbiRtZXRhZGF0YS5leHAoeyBtZXRhZGF0YTogZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHRhcmdldEtleSkge1xuICAgIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEoXG4gICAgICBtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSxcbiAgICAgICh0YXJnZXRLZXkgIT09IHVuZGVmaW5lZCA/IGFuT2JqZWN0IDogYUZ1bmN0aW9uKSh0YXJnZXQpLFxuICAgICAgdG9NZXRhS2V5KHRhcmdldEtleSlcbiAgICApO1xuICB9O1xufSB9KTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yd2FsZHJvbi90YzM5LW5vdGVzL2Jsb2IvbWFzdGVyL2VzNi8yMDE0LTA5L3NlcHQtMjUubWQjNTEwLWdsb2JhbGFzYXAtZm9yLWVucXVldWluZy1hLW1pY3JvdGFza1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIHByb2Nlc3MgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wcm9jZXNzO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHtcbiAgYXNhcDogZnVuY3Rpb24gYXNhcChmbikge1xuICAgIHZhciBkb21haW4gPSBpc05vZGUgJiYgcHJvY2Vzcy5kb21haW47XG4gICAgbWljcm90YXNrKGRvbWFpbiA/IGRvbWFpbi5iaW5kKGZuKSA6IGZuKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemVucGFyc2luZy9lcy1vYnNlcnZhYmxlXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBPQlNFUlZBQkxFID0gcmVxdWlyZSgnLi9fd2tzJykoJ29ic2VydmFibGUnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBSRVRVUk4gPSBmb3JPZi5SRVRVUk47XG5cbnZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZuID09IG51bGwgPyB1bmRlZmluZWQgOiBhRnVuY3Rpb24oZm4pO1xufTtcblxudmFyIGNsZWFudXBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHZhciBjbGVhbnVwID0gc3Vic2NyaXB0aW9uLl9jO1xuICBpZiAoY2xlYW51cCkge1xuICAgIHN1YnNjcmlwdGlvbi5fYyA9IHVuZGVmaW5lZDtcbiAgICBjbGVhbnVwKCk7XG4gIH1cbn07XG5cbnZhciBzdWJzY3JpcHRpb25DbG9zZWQgPSBmdW5jdGlvbiAoc3Vic2NyaXB0aW9uKSB7XG4gIHJldHVybiBzdWJzY3JpcHRpb24uX28gPT09IHVuZGVmaW5lZDtcbn07XG5cbnZhciBjbG9zZVN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgaWYgKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkge1xuICAgIHN1YnNjcmlwdGlvbi5fbyA9IHVuZGVmaW5lZDtcbiAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gIH1cbn07XG5cbnZhciBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAob2JzZXJ2ZXIsIHN1YnNjcmliZXIpIHtcbiAgYW5PYmplY3Qob2JzZXJ2ZXIpO1xuICB0aGlzLl9jID0gdW5kZWZpbmVkO1xuICB0aGlzLl9vID0gb2JzZXJ2ZXI7XG4gIG9ic2VydmVyID0gbmV3IFN1YnNjcmlwdGlvbk9ic2VydmVyKHRoaXMpO1xuICB0cnkge1xuICAgIHZhciBjbGVhbnVwID0gc3Vic2NyaWJlcihvYnNlcnZlcik7XG4gICAgdmFyIHN1YnNjcmlwdGlvbiA9IGNsZWFudXA7XG4gICAgaWYgKGNsZWFudXAgIT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiBjbGVhbnVwLnVuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSBjbGVhbnVwID0gZnVuY3Rpb24gKCkgeyBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgIGVsc2UgYUZ1bmN0aW9uKGNsZWFudXApO1xuICAgICAgdGhpcy5fYyA9IGNsZWFudXA7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgcmV0dXJuO1xuICB9IGlmIChzdWJzY3JpcHRpb25DbG9zZWQodGhpcykpIGNsZWFudXBTdWJzY3JpcHRpb24odGhpcyk7XG59O1xuXG5TdWJzY3JpcHRpb24ucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgdW5zdWJzY3JpYmU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkgeyBjbG9zZVN1YnNjcmlwdGlvbih0aGlzKTsgfVxufSk7XG5cbnZhciBTdWJzY3JpcHRpb25PYnNlcnZlciA9IGZ1bmN0aW9uIChzdWJzY3JpcHRpb24pIHtcbiAgdGhpcy5fcyA9IHN1YnNjcmlwdGlvbjtcbn07XG5cblN1YnNjcmlwdGlvbk9ic2VydmVyLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIG5leHQ6IGZ1bmN0aW9uIG5leHQodmFsdWUpIHtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZiAoIXN1YnNjcmlwdGlvbkNsb3NlZChzdWJzY3JpcHRpb24pKSB7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5uZXh0KTtcbiAgICAgICAgaWYgKG0pIHJldHVybiBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjbG9zZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVycm9yOiBmdW5jdGlvbiBlcnJvcih2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmIChzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSkgdGhyb3cgdmFsdWU7XG4gICAgdmFyIG9ic2VydmVyID0gc3Vic2NyaXB0aW9uLl9vO1xuICAgIHN1YnNjcmlwdGlvbi5fbyA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgdmFyIG0gPSBnZXRNZXRob2Qob2JzZXJ2ZXIuZXJyb3IpO1xuICAgICAgaWYgKCFtKSB0aHJvdyB2YWx1ZTtcbiAgICAgIHZhbHVlID0gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZSh2YWx1ZSkge1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmICghc3Vic2NyaXB0aW9uQ2xvc2VkKHN1YnNjcmlwdGlvbikpIHtcbiAgICAgIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fbztcbiAgICAgIHN1YnNjcmlwdGlvbi5fbyA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBtID0gZ2V0TWV0aG9kKG9ic2VydmVyLmNvbXBsZXRlKTtcbiAgICAgICAgdmFsdWUgPSBtID8gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0gY2xlYW51cFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufSk7XG5cbnZhciAkT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlcikge1xuICBhbkluc3RhbmNlKHRoaXMsICRPYnNlcnZhYmxlLCAnT2JzZXJ2YWJsZScsICdfZicpLl9mID0gYUZ1bmN0aW9uKHN1YnNjcmliZXIpO1xufTtcblxucmVkZWZpbmVBbGwoJE9ic2VydmFibGUucHJvdG90eXBlLCB7XG4gIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24ob2JzZXJ2ZXIsIHRoaXMuX2YpO1xuICB9LFxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgKGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgYUZ1bmN0aW9uKGZuKTtcbiAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGF0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZm4odmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgY29tcGxldGU6IHJlc29sdmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59KTtcblxucmVkZWZpbmVBbGwoJE9ic2VydmFibGUsIHtcbiAgZnJvbTogZnVuY3Rpb24gZnJvbSh4KSB7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiAkT2JzZXJ2YWJsZTtcbiAgICB2YXIgbWV0aG9kID0gZ2V0TWV0aG9kKGFuT2JqZWN0KHgpW09CU0VSVkFCTEVdKTtcbiAgICBpZiAobWV0aG9kKSB7XG4gICAgICB2YXIgb2JzZXJ2YWJsZSA9IGFuT2JqZWN0KG1ldGhvZC5jYWxsKHgpKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlLmNvbnN0cnVjdG9yID09PSBDID8gb2JzZXJ2YWJsZSA6IG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGZvck9mKHgsIGZhbHNlLCBmdW5jdGlvbiAoaXQpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChpdCk7XG4gICAgICAgICAgICAgIGlmIChkb25lKSByZXR1cm4gUkVUVVJOO1xuICAgICAgICAgICAgfSkgPT09IFJFVFVSTikgcmV0dXJuO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChkb25lKSB0aHJvdyBlO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGRvbmUgPSB0cnVlOyB9O1xuICAgIH0pO1xuICB9LFxuICBvZjogZnVuY3Rpb24gb2YoKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVtcyA9IG5ldyBBcnJheShsKTsgaSA8IGw7KSBpdGVtc1tpXSA9IGFyZ3VtZW50c1tpKytdO1xuICAgIHJldHVybiBuZXcgKHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gdGhpcyA6ICRPYnNlcnZhYmxlKShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWRvbmUpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW1zLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGl0ZW1zW2pdKTtcbiAgICAgICAgICAgIGlmIChkb25lKSByZXR1cm47XG4gICAgICAgICAgfSBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGRvbmUgPSB0cnVlOyB9O1xuICAgIH0pO1xuICB9XG59KTtcblxuaGlkZSgkT2JzZXJ2YWJsZS5wcm90b3R5cGUsIE9CU0VSVkFCTEUsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG4kZXhwb3J0KCRleHBvcnQuRywgeyBPYnNlcnZhYmxlOiAkT2JzZXJ2YWJsZSB9KTtcblxucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKSgnT2JzZXJ2YWJsZScpO1xuIiwiLy8gaWU5LSBzZXRUaW1lb3V0ICYgc2V0SW50ZXJ2YWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZpeFxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBNU0lFID0gL01TSUUgLlxcLi8udGVzdCh1c2VyQWdlbnQpOyAvLyA8LSBkaXJ0eSBpZTktIGNoZWNrXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmbiwgdGltZSAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgYm91bmRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3MgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBmYWxzZTtcbiAgICByZXR1cm4gc2V0KGJvdW5kQXJncyA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbikpLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gOiBmbiwgdGltZSk7XG4gIH07XG59O1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIgKyAkZXhwb3J0LkYgKiBNU0lFLCB7XG4gIHNldFRpbWVvdXQ6IHdyYXAoZ2xvYmFsLnNldFRpbWVvdXQpLFxuICBzZXRJbnRlcnZhbDogd3JhcChnbG9iYWwuc2V0SW50ZXJ2YWwpXG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHRhc2sgPSByZXF1aXJlKCcuL190YXNrJyk7XG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuQiwge1xuICBzZXRJbW1lZGlhdGU6ICR0YXNrLnNldCxcbiAgY2xlYXJJbW1lZGlhdGU6ICR0YXNrLmNsZWFyXG59KTtcbiIsInZhciAkaXRlcmF0b3JzID0gcmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciBJVEVSQVRPUiA9IHdrcygnaXRlcmF0b3InKTtcbnZhciBUT19TVFJJTkdfVEFHID0gd2tzKCd0b1N0cmluZ1RhZycpO1xudmFyIEFycmF5VmFsdWVzID0gSXRlcmF0b3JzLkFycmF5O1xuXG52YXIgRE9NSXRlcmFibGVzID0ge1xuICBDU1NSdWxlTGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIENTU1N0eWxlRGVjbGFyYXRpb246IGZhbHNlLFxuICBDU1NWYWx1ZUxpc3Q6IGZhbHNlLFxuICBDbGllbnRSZWN0TGlzdDogZmFsc2UsXG4gIERPTVJlY3RMaXN0OiBmYWxzZSxcbiAgRE9NU3RyaW5nTGlzdDogZmFsc2UsXG4gIERPTVRva2VuTGlzdDogdHJ1ZSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IGZhbHNlLFxuICBGaWxlTGlzdDogZmFsc2UsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiBmYWxzZSxcbiAgSFRNTENvbGxlY3Rpb246IGZhbHNlLFxuICBIVE1MRm9ybUVsZW1lbnQ6IGZhbHNlLFxuICBIVE1MU2VsZWN0RWxlbWVudDogZmFsc2UsXG4gIE1lZGlhTGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIE1pbWVUeXBlQXJyYXk6IGZhbHNlLFxuICBOYW1lZE5vZGVNYXA6IGZhbHNlLFxuICBOb2RlTGlzdDogdHJ1ZSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogZmFsc2UsXG4gIFBsdWdpbjogZmFsc2UsXG4gIFBsdWdpbkFycmF5OiBmYWxzZSxcbiAgU1ZHTGVuZ3RoTGlzdDogZmFsc2UsXG4gIFNWR051bWJlckxpc3Q6IGZhbHNlLFxuICBTVkdQYXRoU2VnTGlzdDogZmFsc2UsXG4gIFNWR1BvaW50TGlzdDogZmFsc2UsXG4gIFNWR1N0cmluZ0xpc3Q6IGZhbHNlLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiBmYWxzZSxcbiAgU291cmNlQnVmZmVyTGlzdDogZmFsc2UsXG4gIFN0eWxlU2hlZXRMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgVGV4dFRyYWNrQ3VlTGlzdDogZmFsc2UsXG4gIFRleHRUcmFja0xpc3Q6IGZhbHNlLFxuICBUb3VjaExpc3Q6IGZhbHNlXG59O1xuXG5mb3IgKHZhciBjb2xsZWN0aW9ucyA9IGdldEtleXMoRE9NSXRlcmFibGVzKSwgaSA9IDA7IGkgPCBjb2xsZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IGNvbGxlY3Rpb25zW2ldO1xuICB2YXIgZXhwbGljaXQgPSBET01JdGVyYWJsZXNbTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICB2YXIga2V5O1xuICBpZiAocHJvdG8pIHtcbiAgICBpZiAoIXByb3RvW0lURVJBVE9SXSkgaGlkZShwcm90bywgSVRFUkFUT1IsIEFycmF5VmFsdWVzKTtcbiAgICBpZiAoIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgICBJdGVyYXRvcnNbTkFNRV0gPSBBcnJheVZhbHVlcztcbiAgICBpZiAoZXhwbGljaXQpIGZvciAoa2V5IGluICRpdGVyYXRvcnMpIGlmICghcHJvdG9ba2V5XSkgcmVkZWZpbmUocHJvdG8sIGtleSwgJGl0ZXJhdG9yc1trZXldLCB0cnVlKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9tYXN0ZXIvTElDRU5TRSBmaWxlLiBBblxuICogYWRkaXRpb25hbCBncmFudCBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluXG4gKiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuIShmdW5jdGlvbihnbG9iYWwpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcbiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICB2YXIgaW5Nb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiO1xuICB2YXIgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWU7XG4gIGlmIChydW50aW1lKSB7XG4gICAgaWYgKGluTW9kdWxlKSB7XG4gICAgICAvLyBJZiByZWdlbmVyYXRvclJ1bnRpbWUgaXMgZGVmaW5lZCBnbG9iYWxseSBhbmQgd2UncmUgaW4gYSBtb2R1bGUsXG4gICAgICAvLyBtYWtlIHRoZSBleHBvcnRzIG9iamVjdCBpZGVudGljYWwgdG8gcmVnZW5lcmF0b3JSdW50aW1lLlxuICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuICAgIH1cbiAgICAvLyBEb24ndCBib3RoZXIgZXZhbHVhdGluZyB0aGUgcmVzdCBvZiB0aGlzIGZpbGUgaWYgdGhlIHJ1bnRpbWUgd2FzXG4gICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LlxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuICAvLyBtb2R1bGUuZXhwb3J0cyAoaWYgd2UncmUgaW4gYSBtb2R1bGUpIG9yIGEgbmV3LCBlbXB0eSBvYmplY3QuXG4gIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gaW5Nb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA6IHt9O1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIHJ1bnRpbWUud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgcnVudGltZS5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIHJ1bnRpbWUuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLiBJZiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZCwgaG93ZXZlciwgdGhlXG4gICAgICAgICAgLy8gcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWVcbiAgICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuICAgICAgICAgIC8vIHRocm93biBiYWNrIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgYXMgaXMgdGhlIGNhc2VcbiAgICAgICAgICAvLyB3aGVuIGFuIGF3YWl0ZWQgUHJvbWlzZSBpcyByZWplY3RlZC4gVGhpcyBkaWZmZXJlbmNlIGluXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG4gICAgICAgICAgLy8gYWxsb3dzIHRoZSBjb25zdW1lciB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoZSB5aWVsZGVkXG4gICAgICAgICAgLy8gcmVqZWN0aW9uIChzd2FsbG93IGl0IGFuZCBjb250aW51ZSwgbWFudWFsbHkgLnRocm93IGl0IGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcbiAgICAgICAgICAvLyBhd2FpdCwgYnkgY29udHJhc3QsIHRoZXJlIGlzIG5vIG9wcG9ydHVuaXR5IHRvIGV4YW1pbmUgdGhlXG4gICAgICAgICAgLy8gcmVqZWN0aW9uIHJlYXNvbiBvdXRzaWRlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIHNvIHRoZVxuICAgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuICAgICAgICAgIC8vIGxldCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhbmRsZSB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwucHJvY2VzcyA9PT0gXCJvYmplY3RcIiAmJiBnbG9iYWwucHJvY2Vzcy5kb21haW4pIHtcbiAgICAgIGludm9rZSA9IGdsb2JhbC5wcm9jZXNzLmRvbWFpbi5iaW5kKGludm9rZSk7XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgcnVudGltZS5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpXG4gICAgKTtcblxuICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBydW50aW1lLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcbn0pKFxuICAvLyBBbW9uZyB0aGUgdmFyaW91cyB0cmlja3MgZm9yIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsXG4gIC8vIG9iamVjdCwgdGhpcyBzZWVtcyB0byBiZSB0aGUgbW9zdCByZWxpYWJsZSB0ZWNobmlxdWUgdGhhdCBkb2VzIG5vdFxuICAvLyB1c2UgaW5kaXJlY3QgZXZhbCAod2hpY2ggdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kpLlxuICB0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDpcbiAgdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6XG4gIHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHRoaXNcbik7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2NvcmUucmVnZXhwLmVzY2FwZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuUmVnRXhwLmVzY2FwZTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbmdyL1JleEV4cC5lc2NhcGVcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHJlID0gcmVxdWlyZSgnLi9fcmVwbGFjZXInKSgvW1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWdFeHAnLCB7IGVzY2FwZTogZnVuY3Rpb24gZXNjYXBlKGl0KSB7IHJldHVybiAkcmUoaXQpOyB9IH0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocmVnRXhwLCByZXBsYWNlKSB7XG4gIHZhciByZXBsYWNlciA9IHJlcGxhY2UgPT09IE9iamVjdChyZXBsYWNlKSA/IGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgcmV0dXJuIHJlcGxhY2VbcGFydF07XG4gIH0gOiByZXBsYWNlO1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIFN0cmluZyhpdCkucmVwbGFjZShyZWdFeHAsIHJlcGxhY2VyKTtcbiAgfTtcbn07XG4iLCJpbXBvcnQgcGluQnlIYXNoLCB7XG4gICAgUGluYXRhUGluQnlIYXNoUGluT3B0aW9uc1xufSBmcm9tICcuL2NvbW1hbmRzL3Bpbm5pbmcvcGluQnlIYXNoJztcbmltcG9ydCBoYXNoTWV0YWRhdGEgZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL2hhc2hNZXRhZGF0YSc7XG5pbXBvcnQgcGluRmlsZVRvSVBGUywge1xuICAgIFBpbmF0YVBpbk9wdGlvbnNcbn0gZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL3BpbkZpbGVUb0lQRlMnO1xuaW1wb3J0IHBpbkZyb21GUyBmcm9tICcuL2NvbW1hbmRzL3Bpbm5pbmcvcGluRnJvbUZTJztcbmltcG9ydCBwaW5KU09OVG9JUEZTIGZyb20gJy4vY29tbWFuZHMvcGlubmluZy9waW5KU09OVG9JUEZTJztcbmltcG9ydCBwaW5Kb2JzLCB7XG4gICAgUGluYXRhUGluSm9ic0ZpbHRlck9wdGlvbnNcbn0gZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL3BpbkpvYnMvcGluSm9icyc7XG5pbXBvcnQgdW5waW4gZnJvbSAnLi9jb21tYW5kcy9waW5uaW5nL3VucGluJztcbmltcG9ydCB0ZXN0QXV0aGVudGljYXRpb24gZnJvbSAnLi9jb21tYW5kcy9kYXRhL3Rlc3RBdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgcGluTGlzdCwge1xuICAgIFBpbmF0YU1ldGFkYXRhLFxuICAgIFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zXG59IGZyb20gJy4vY29tbWFuZHMvZGF0YS9waW5MaXN0L3Bpbkxpc3QnO1xuaW1wb3J0IGdldEZpbGVzQnlDb3VudCBmcm9tICcuL2NvbW1hbmRzL2RhdGEvZ2V0RmlsZXNCeUNvdW50L2dldEZpbGVzQnlDb3VudCc7XG5pbXBvcnQgdXNlclBpbm5lZERhdGFUb3RhbCBmcm9tICcuL2NvbW1hbmRzL2RhdGEvdXNlclBpbm5lZERhdGFUb3RhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGluYXRhQ29uZmlnIHtcbiAgICBwaW5hdGFBcGlLZXk/OiBzdHJpbmc7XG4gICAgcGluYXRhU2VjcmV0QXBpS2V5Pzogc3RyaW5nO1xuICAgIHBpbmF0YUpXVEtleT86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcmVmYWN0b3JDb25maWcocGluYXRhQ29uZmlnUGFyYW06IFBpbmF0YUNvbmZpZyk6IFBpbmF0YUNvbmZpZyB7XG4gICAgY29uc3QgY29uZmlnOiBQaW5hdGFDb25maWcgPSB7fTtcbiAgICBpZiAocGluYXRhQ29uZmlnUGFyYW0ucGluYXRhQXBpS2V5KSB7XG4gICAgICAgIGNvbmZpZy5waW5hdGFBcGlLZXkgPSBwaW5hdGFDb25maWdQYXJhbS5waW5hdGFBcGlLZXk7XG4gICAgfVxuXG4gICAgaWYgKHBpbmF0YUNvbmZpZ1BhcmFtLnBpbmF0YVNlY3JldEFwaUtleSkge1xuICAgICAgICBjb25maWcucGluYXRhU2VjcmV0QXBpS2V5ID0gcGluYXRhQ29uZmlnUGFyYW0ucGluYXRhU2VjcmV0QXBpS2V5O1xuICAgIH1cblxuICAgIGlmIChwaW5hdGFDb25maWdQYXJhbS5waW5hdGFKV1RLZXkpIHtcbiAgICAgICAgY29uZmlnLnBpbmF0YUpXVEtleSA9IHBpbmF0YUNvbmZpZ1BhcmFtLnBpbmF0YUpXVEtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xufVxuZnVuY3Rpb24gc2FuaXRpemVDb25maWcoXG4gICAgcGluYXRhQXBpS2V5Pzogc3RyaW5nIHwgUGluYXRhQ29uZmlnLFxuICAgIHBpbmF0YVNlY3JldEFwaUtleT86IHN0cmluZ1xuKTogUGluYXRhQ29uZmlnIHtcbiAgICBsZXQgY29uZmlnOiBQaW5hdGFDb25maWcgPSB7fTtcblxuICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHBpbmF0YUFwaUtleSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgdHlwZW9mIHBpbmF0YVNlY3JldEFwaUtleSA9PT0gJ3N0cmluZydcbiAgICApIHtcbiAgICAgICAgY29uZmlnLnBpbmF0YUFwaUtleSA9IHBpbmF0YUFwaUtleTtcbiAgICAgICAgY29uZmlnLnBpbmF0YVNlY3JldEFwaUtleSA9IHBpbmF0YVNlY3JldEFwaUtleTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1BpbmF0YUNvbmZpZ1BhcmFtID0gdHlwZW9mIHBpbmF0YUFwaUtleSA9PT0gJ29iamVjdCc7XG4gICAgaWYgKGlzUGluYXRhQ29uZmlnUGFyYW0pIHtcbiAgICAgICAgY29uZmlnID0gcmVmYWN0b3JDb25maWcocGluYXRhQXBpS2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xufVxuXG5jbGFzcyBQaW5hdGFDbGllbnQge1xuICAgIGNvbmZpZzogUGluYXRhQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHBpbmF0YUFwaUtleT86IHN0cmluZyB8IFBpbmF0YUNvbmZpZyxcbiAgICAgICAgcGluYXRhU2VjcmV0QXBpS2V5Pzogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gc2FuaXRpemVDb25maWcocGluYXRhQXBpS2V5LCBwaW5hdGFTZWNyZXRBcGlLZXkpO1xuICAgIH1cblxuICAgIHBpbkJ5SGFzaChoYXNoVG9QaW46IHN0cmluZywgb3B0aW9ucz86IFBpbmF0YVBpbkJ5SGFzaFBpbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHBpbkJ5SGFzaCh0aGlzLmNvbmZpZywgaGFzaFRvUGluLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBoYXNoTWV0YWRhdGEoaXBmc1Bpbkhhc2g6IHN0cmluZywgbWV0YWRhdGE6IFBpbmF0YU1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiBoYXNoTWV0YWRhdGEodGhpcy5jb25maWcsIGlwZnNQaW5IYXNoLCBtZXRhZGF0YSk7XG4gICAgfVxuXG4gICAgcGluRmlsZVRvSVBGUyhyZWFkYWJsZVN0cmVhbTogYW55LCBvcHRpb25zPzogUGluYXRhUGluT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gcGluRmlsZVRvSVBGUyh0aGlzLmNvbmZpZywgcmVhZGFibGVTdHJlYW0sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHBpbkZyb21GUyhzb3VyY2VQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBQaW5hdGFQaW5PcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBwaW5Gcm9tRlModGhpcy5jb25maWcsIHNvdXJjZVBhdGgsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBwaW5KU09OVG9JUEZTKGJvZHk6IGFueSwgb3B0aW9ucz86IFBpbmF0YVBpbk9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHBpbkpTT05Ub0lQRlModGhpcy5jb25maWcsIGJvZHksIG9wdGlvbnMpO1xuICAgIH1cbiAgICBwaW5Kb2JzKGZpbHRlcnM/OiBQaW5hdGFQaW5Kb2JzRmlsdGVyT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gcGluSm9icyh0aGlzLmNvbmZpZywgZmlsdGVycyk7XG4gICAgfVxuICAgIHVucGluKGhhc2hUb1VucGluOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHVucGluKHRoaXMuY29uZmlnLCBoYXNoVG9VbnBpbik7XG4gICAgfVxuXG4gICAgcGluTGlzdChmaWx0ZXJzOiBQaW5hdGFQaW5MaXN0RmlsdGVyT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gcGluTGlzdCh0aGlzLmNvbmZpZywgZmlsdGVycyk7XG4gICAgfVxuXG4gICAgZ2V0RmlsZXNCeUNvdW50KGZpbHRlcnM6IFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zLCBtYXhDb3VudD86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gZ2V0RmlsZXNCeUNvdW50KHRoaXMuY29uZmlnLCBmaWx0ZXJzLCBtYXhDb3VudCk7XG4gICAgfVxuXG4gICAgdGVzdEF1dGhlbnRpY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGVzdEF1dGhlbnRpY2F0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB9XG4gICAgdXNlclBpbm5lZERhdGFUb3RhbCgpIHtcbiAgICAgICAgcmV0dXJuIHVzZXJQaW5uZWREYXRhVG90YWwodGhpcy5jb25maWcpO1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQaW5hdGFDbGllbnQ7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL3Bpbm5pbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5hdGFDbGllbnQ7XG5cbiIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuYXhpb3MuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhheGlvcy5kZWZhdWx0cywgaW5zdGFuY2VDb25maWcpKTtcbn07XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsJyk7XG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5heGlvcy5zcHJlYWQgPSByZXF1aXJlKCcuL2hlbHBlcnMvc3ByZWFkJyk7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycy9pc0F4aW9zRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBhcmd1bWVudHNbMV0gfHwge307XG4gICAgY29uZmlnLnVybCA9IGFyZ3VtZW50c1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIC8vIEhvb2sgdXAgaW50ZXJjZXB0b3JzIG1pZGRsZXdhcmVcbiAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcbiAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBjaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpIHtcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWRcbiAgfSk7XG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICpcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICBmbihoKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICBjb25maWcuZGF0YSxcbiAgICBjb25maWcuaGVhZGVycyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1tjb25maWcubWV0aG9kXSB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1xuICApO1xuXG4gIHV0aWxzLmZvckVhY2goXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgZnVuY3Rpb24gY2xlYW5IZWFkZXJDb25maWcobWV0aG9kKSB7XG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcbiAgICB9XG4gICk7XG5cbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xuICAgIGlmICghaXNDYW5jZWwocmVhc29uKSkge1xuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhKFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuKGRhdGEsIGhlYWRlcnMpO1xuICB9KTtcblxuICByZXR1cm4gZGF0YTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcbiAgICBpZiAobmFtZSAhPT0gbm9ybWFsaXplZE5hbWUgJiYgbmFtZS50b1VwcGVyQ2FzZSgpID09PSBub3JtYWxpemVkTmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XG52YXIgY29va2llcyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9jb29raWVzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi4vY29yZS9idWlsZEZ1bGxQYXRoJyk7XG52YXIgcGFyc2VIZWFkZXJzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL3BhcnNlSGVhZGVycycpO1xudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9pc1VSTFNhbWVPcmlnaW4nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlXG4gICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFjb25maWcucmVzcG9uc2VUeXBlIHx8IGNvbmZpZy5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JyA/IHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCc7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKHRpbWVvdXRFcnJvck1lc3NhZ2UsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBFeHBlY3RlZCBET01FeGNlcHRpb24gdGhyb3duIGJ5IGJyb3dzZXJzIG5vdCBjb21wYXRpYmxlIFhNTEh0dHBSZXF1ZXN0IExldmVsIDIuXG4gICAgICAgIC8vIEJ1dCwgdGhpcyBjYW4gYmUgc3VwcHJlc3NlZCBmb3IgJ2pzb24nIHR5cGUgYXMgaXQgY2FuIGJlIHBhcnNlZCBieSBkZWZhdWx0ICd0cmFuc2Zvcm1SZXNwb25zZScgZnVuY3Rpb24uXG4gICAgICAgIGlmIChjb25maWcucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkNhbmNlbGVkKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xuICAgICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkXFwrXFwtXFwuXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbnZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyk7XG52YXIgaHR0cEZvbGxvdyA9IHJlcXVpcmUoJ2ZvbGxvdy1yZWRpcmVjdHMnKS5odHRwO1xudmFyIGh0dHBzRm9sbG93ID0gcmVxdWlyZSgnZm9sbG93LXJlZGlyZWN0cycpLmh0dHBzO1xudmFyIHVybCA9IHJlcXVpcmUoJ3VybCcpO1xudmFyIHpsaWIgPSByZXF1aXJlKCd6bGliJyk7XG52YXIgcGtnID0gcmVxdWlyZSgnLi8uLi8uLi9wYWNrYWdlLmpzb24nKTtcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2VuaGFuY2VFcnJvcicpO1xuXG52YXIgaXNIdHRwcyA9IC9odHRwczo/LztcblxuLyoqXG4gKlxuICogQHBhcmFtIHtodHRwLkNsaWVudFJlcXVlc3RBcmdzfSBvcHRpb25zXG4gKiBAcGFyYW0ge0F4aW9zUHJveHlDb25maWd9IHByb3h5XG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb25cbiAqL1xuZnVuY3Rpb24gc2V0UHJveHkob3B0aW9ucywgcHJveHksIGxvY2F0aW9uKSB7XG4gIG9wdGlvbnMuaG9zdG5hbWUgPSBwcm94eS5ob3N0O1xuICBvcHRpb25zLmhvc3QgPSBwcm94eS5ob3N0O1xuICBvcHRpb25zLnBvcnQgPSBwcm94eS5wb3J0O1xuICBvcHRpb25zLnBhdGggPSBsb2NhdGlvbjtcblxuICAvLyBCYXNpYyBwcm94eSBhdXRob3JpemF0aW9uXG4gIGlmIChwcm94eS5hdXRoKSB7XG4gICAgdmFyIGJhc2U2NCA9IEJ1ZmZlci5mcm9tKHByb3h5LmF1dGgudXNlcm5hbWUgKyAnOicgKyBwcm94eS5hdXRoLnBhc3N3b3JkLCAndXRmOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBvcHRpb25zLmhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnICsgYmFzZTY0O1xuICB9XG5cbiAgLy8gSWYgYSBwcm94eSBpcyB1c2VkLCBhbnkgcmVkaXJlY3RzIG11c3QgYWxzbyBwYXNzIHRocm91Z2ggdGhlIHByb3h5XG4gIG9wdGlvbnMuYmVmb3JlUmVkaXJlY3QgPSBmdW5jdGlvbiBiZWZvcmVSZWRpcmVjdChyZWRpcmVjdGlvbikge1xuICAgIHJlZGlyZWN0aW9uLmhlYWRlcnMuaG9zdCA9IHJlZGlyZWN0aW9uLmhvc3Q7XG4gICAgc2V0UHJveHkocmVkaXJlY3Rpb24sIHByb3h5LCByZWRpcmVjdGlvbi5ocmVmKTtcbiAgfTtcbn1cblxuLyplc2xpbnQgY29uc2lzdGVudC1yZXR1cm46MCovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGh0dHBBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hIdHRwUmVxdWVzdChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkge1xuICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgcmVzb2x2ZVByb21pc2UodmFsdWUpO1xuICAgIH07XG4gICAgdmFyIHJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkge1xuICAgICAgcmVqZWN0UHJvbWlzZSh2YWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciBoZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XG5cbiAgICAvLyBTZXQgVXNlci1BZ2VudCAocmVxdWlyZWQgYnkgc29tZSBzZXJ2ZXJzKVxuICAgIC8vIE9ubHkgc2V0IGhlYWRlciBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgaW4gY29uZmlnXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9heGlvcy9heGlvcy9pc3N1ZXMvNjlcbiAgICBpZiAoIWhlYWRlcnNbJ1VzZXItQWdlbnQnXSAmJiAhaGVhZGVyc1sndXNlci1hZ2VudCddKSB7XG4gICAgICBoZWFkZXJzWydVc2VyLUFnZW50J10gPSAnYXhpb3MvJyArIHBrZy52ZXJzaW9uO1xuICAgIH1cblxuICAgIGlmIChkYXRhICYmICF1dGlscy5pc1N0cmVhbShkYXRhKSkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLi4uXG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KGRhdGEpKTtcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsICd1dGYtOCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgICAnRGF0YSBhZnRlciB0cmFuc2Zvcm1hdGlvbiBtdXN0IGJlIGEgc3RyaW5nLCBhbiBBcnJheUJ1ZmZlciwgYSBCdWZmZXIsIG9yIGEgU3RyZWFtJyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBDb250ZW50LUxlbmd0aCBoZWFkZXIgaWYgZGF0YSBleGlzdHNcbiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSBkYXRhLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgdmFyIGF1dGggPSB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkIHx8ICcnO1xuICAgICAgYXV0aCA9IHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQ7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdXJsXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgdmFyIHBhcnNlZCA9IHVybC5wYXJzZShmdWxsUGF0aCk7XG4gICAgdmFyIHByb3RvY29sID0gcGFyc2VkLnByb3RvY29sIHx8ICdodHRwOic7XG5cbiAgICBpZiAoIWF1dGggJiYgcGFyc2VkLmF1dGgpIHtcbiAgICAgIHZhciB1cmxBdXRoID0gcGFyc2VkLmF1dGguc3BsaXQoJzonKTtcbiAgICAgIHZhciB1cmxVc2VybmFtZSA9IHVybEF1dGhbMF0gfHwgJyc7XG4gICAgICB2YXIgdXJsUGFzc3dvcmQgPSB1cmxBdXRoWzFdIHx8ICcnO1xuICAgICAgYXV0aCA9IHVybFVzZXJuYW1lICsgJzonICsgdXJsUGFzc3dvcmQ7XG4gICAgfVxuXG4gICAgaWYgKGF1dGgpIHtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzLkF1dGhvcml6YXRpb247XG4gICAgfVxuXG4gICAgdmFyIGlzSHR0cHNSZXF1ZXN0ID0gaXNIdHRwcy50ZXN0KHByb3RvY29sKTtcbiAgICB2YXIgYWdlbnQgPSBpc0h0dHBzUmVxdWVzdCA/IGNvbmZpZy5odHRwc0FnZW50IDogY29uZmlnLmh0dHBBZ2VudDtcblxuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgcGF0aDogYnVpbGRVUkwocGFyc2VkLnBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpLFxuICAgICAgbWV0aG9kOiBjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgYWdlbnQ6IGFnZW50LFxuICAgICAgYWdlbnRzOiB7IGh0dHA6IGNvbmZpZy5odHRwQWdlbnQsIGh0dHBzOiBjb25maWcuaHR0cHNBZ2VudCB9LFxuICAgICAgYXV0aDogYXV0aFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnLnNvY2tldFBhdGgpIHtcbiAgICAgIG9wdGlvbnMuc29ja2V0UGF0aCA9IGNvbmZpZy5zb2NrZXRQYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmhvc3RuYW1lID0gcGFyc2VkLmhvc3RuYW1lO1xuICAgICAgb3B0aW9ucy5wb3J0ID0gcGFyc2VkLnBvcnQ7XG4gICAgfVxuXG4gICAgdmFyIHByb3h5ID0gY29uZmlnLnByb3h5O1xuICAgIGlmICghcHJveHkgJiYgcHJveHkgIT09IGZhbHNlKSB7XG4gICAgICB2YXIgcHJveHlFbnYgPSBwcm90b2NvbC5zbGljZSgwLCAtMSkgKyAnX3Byb3h5JztcbiAgICAgIHZhciBwcm94eVVybCA9IHByb2Nlc3MuZW52W3Byb3h5RW52XSB8fCBwcm9jZXNzLmVudltwcm94eUVudi50b1VwcGVyQ2FzZSgpXTtcbiAgICAgIGlmIChwcm94eVVybCkge1xuICAgICAgICB2YXIgcGFyc2VkUHJveHlVcmwgPSB1cmwucGFyc2UocHJveHlVcmwpO1xuICAgICAgICB2YXIgbm9Qcm94eUVudiA9IHByb2Nlc3MuZW52Lm5vX3Byb3h5IHx8IHByb2Nlc3MuZW52Lk5PX1BST1hZO1xuICAgICAgICB2YXIgc2hvdWxkUHJveHkgPSB0cnVlO1xuXG4gICAgICAgIGlmIChub1Byb3h5RW52KSB7XG4gICAgICAgICAgdmFyIG5vUHJveHkgPSBub1Byb3h5RW52LnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIHRyaW0ocykge1xuICAgICAgICAgICAgcmV0dXJuIHMudHJpbSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2hvdWxkUHJveHkgPSAhbm9Qcm94eS5zb21lKGZ1bmN0aW9uIHByb3h5TWF0Y2gocHJveHlFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoIXByb3h5RWxlbWVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJveHlFbGVtZW50ID09PSAnKicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJveHlFbGVtZW50WzBdID09PSAnLicgJiZcbiAgICAgICAgICAgICAgICBwYXJzZWQuaG9zdG5hbWUuc3Vic3RyKHBhcnNlZC5ob3N0bmFtZS5sZW5ndGggLSBwcm94eUVsZW1lbnQubGVuZ3RoKSA9PT0gcHJveHlFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lID09PSBwcm94eUVsZW1lbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hvdWxkUHJveHkpIHtcbiAgICAgICAgICBwcm94eSA9IHtcbiAgICAgICAgICAgIGhvc3Q6IHBhcnNlZFByb3h5VXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgcG9ydDogcGFyc2VkUHJveHlVcmwucG9ydCxcbiAgICAgICAgICAgIHByb3RvY29sOiBwYXJzZWRQcm94eVVybC5wcm90b2NvbFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAocGFyc2VkUHJveHlVcmwuYXV0aCkge1xuICAgICAgICAgICAgdmFyIHByb3h5VXJsQXV0aCA9IHBhcnNlZFByb3h5VXJsLmF1dGguc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHByb3h5LmF1dGggPSB7XG4gICAgICAgICAgICAgIHVzZXJuYW1lOiBwcm94eVVybEF1dGhbMF0sXG4gICAgICAgICAgICAgIHBhc3N3b3JkOiBwcm94eVVybEF1dGhbMV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3h5KSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnMuaG9zdCA9IHBhcnNlZC5ob3N0bmFtZSArIChwYXJzZWQucG9ydCA/ICc6JyArIHBhcnNlZC5wb3J0IDogJycpO1xuICAgICAgc2V0UHJveHkob3B0aW9ucywgcHJveHksIHByb3RvY29sICsgJy8vJyArIHBhcnNlZC5ob3N0bmFtZSArIChwYXJzZWQucG9ydCA/ICc6JyArIHBhcnNlZC5wb3J0IDogJycpICsgb3B0aW9ucy5wYXRoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJhbnNwb3J0O1xuICAgIHZhciBpc0h0dHBzUHJveHkgPSBpc0h0dHBzUmVxdWVzdCAmJiAocHJveHkgPyBpc0h0dHBzLnRlc3QocHJveHkucHJvdG9jb2wpIDogdHJ1ZSk7XG4gICAgaWYgKGNvbmZpZy50cmFuc3BvcnQpIHtcbiAgICAgIHRyYW5zcG9ydCA9IGNvbmZpZy50cmFuc3BvcnQ7XG4gICAgfSBlbHNlIGlmIChjb25maWcubWF4UmVkaXJlY3RzID09PSAwKSB7XG4gICAgICB0cmFuc3BvcnQgPSBpc0h0dHBzUHJveHkgPyBodHRwcyA6IGh0dHA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb25maWcubWF4UmVkaXJlY3RzKSB7XG4gICAgICAgIG9wdGlvbnMubWF4UmVkaXJlY3RzID0gY29uZmlnLm1heFJlZGlyZWN0cztcbiAgICAgIH1cbiAgICAgIHRyYW5zcG9ydCA9IGlzSHR0cHNQcm94eSA/IGh0dHBzRm9sbG93IDogaHR0cEZvbGxvdztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLm1heEJvZHlMZW5ndGggPiAtMSkge1xuICAgICAgb3B0aW9ucy5tYXhCb2R5TGVuZ3RoID0gY29uZmlnLm1heEJvZHlMZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0XG4gICAgdmFyIHJlcSA9IHRyYW5zcG9ydC5yZXF1ZXN0KG9wdGlvbnMsIGZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlKHJlcykge1xuICAgICAgaWYgKHJlcS5hYm9ydGVkKSByZXR1cm47XG5cbiAgICAgIC8vIHVuY29tcHJlc3MgdGhlIHJlc3BvbnNlIGJvZHkgdHJhbnNwYXJlbnRseSBpZiByZXF1aXJlZFxuICAgICAgdmFyIHN0cmVhbSA9IHJlcztcblxuICAgICAgLy8gcmV0dXJuIHRoZSBsYXN0IHJlcXVlc3QgaW4gY2FzZSBvZiByZWRpcmVjdHNcbiAgICAgIHZhciBsYXN0UmVxdWVzdCA9IHJlcy5yZXEgfHwgcmVxO1xuXG5cbiAgICAgIC8vIGlmIG5vIGNvbnRlbnQsIGlzIEhFQUQgcmVxdWVzdCBvciBkZWNvbXByZXNzIGRpc2FibGVkIHdlIHNob3VsZCBub3QgZGVjb21wcmVzc1xuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDQgJiYgbGFzdFJlcXVlc3QubWV0aG9kICE9PSAnSEVBRCcgJiYgY29uZmlnLmRlY29tcHJlc3MgIT09IGZhbHNlKSB7XG4gICAgICAgIHN3aXRjaCAocmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSkge1xuICAgICAgICAvKmVzbGludCBkZWZhdWx0LWNhc2U6MCovXG4gICAgICAgIGNhc2UgJ2d6aXAnOlxuICAgICAgICBjYXNlICdjb21wcmVzcyc6XG4gICAgICAgIGNhc2UgJ2RlZmxhdGUnOlxuICAgICAgICAvLyBhZGQgdGhlIHVuemlwcGVyIHRvIHRoZSBib2R5IHN0cmVhbSBwcm9jZXNzaW5nIHBpcGVsaW5lXG4gICAgICAgICAgc3RyZWFtID0gc3RyZWFtLnBpcGUoemxpYi5jcmVhdGVVbnppcCgpKTtcblxuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgY29udGVudC1lbmNvZGluZyBpbiBvcmRlciB0byBub3QgY29uZnVzZSBkb3duc3RyZWFtIG9wZXJhdGlvbnNcbiAgICAgICAgICBkZWxldGUgcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIHN0YXR1czogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNNZXNzYWdlLFxuICAgICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IGxhc3RSZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSA9PT0gJ3N0cmVhbScpIHtcbiAgICAgICAgcmVzcG9uc2UuZGF0YSA9IHN0cmVhbTtcbiAgICAgICAgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3BvbnNlQnVmZmVyID0gW107XG4gICAgICAgIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIGhhbmRsZVN0cmVhbURhdGEoY2h1bmspIHtcbiAgICAgICAgICByZXNwb25zZUJ1ZmZlci5wdXNoKGNodW5rKTtcblxuICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgY29udGVudCBsZW5ndGggaXMgbm90IG92ZXIgdGhlIG1heENvbnRlbnRMZW5ndGggaWYgc3BlY2lmaWVkXG4gICAgICAgICAgaWYgKGNvbmZpZy5tYXhDb250ZW50TGVuZ3RoID4gLTEgJiYgQnVmZmVyLmNvbmNhdChyZXNwb25zZUJ1ZmZlcikubGVuZ3RoID4gY29uZmlnLm1heENvbnRlbnRMZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICAgICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ21heENvbnRlbnRMZW5ndGggc2l6ZSBvZiAnICsgY29uZmlnLm1heENvbnRlbnRMZW5ndGggKyAnIGV4Y2VlZGVkJyxcbiAgICAgICAgICAgICAgY29uZmlnLCBudWxsLCBsYXN0UmVxdWVzdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIGhhbmRsZVN0cmVhbUVycm9yKGVycikge1xuICAgICAgICAgIGlmIChyZXEuYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgICAgIHJlamVjdChlbmhhbmNlRXJyb3IoZXJyLCBjb25maWcsIG51bGwsIGxhc3RSZXF1ZXN0KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gaGFuZGxlU3RyZWFtRW5kKCkge1xuICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSBCdWZmZXIuY29uY2F0KHJlc3BvbnNlQnVmZmVyKTtcbiAgICAgICAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSAhPT0gJ2FycmF5YnVmZmVyJykge1xuICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2VEYXRhLnRvU3RyaW5nKGNvbmZpZy5yZXNwb25zZUVuY29kaW5nKTtcbiAgICAgICAgICAgIGlmICghY29uZmlnLnJlc3BvbnNlRW5jb2RpbmcgfHwgY29uZmlnLnJlc3BvbnNlRW5jb2RpbmcgPT09ICd1dGY4Jykge1xuICAgICAgICAgICAgICByZXNwb25zZURhdGEgPSB1dGlscy5zdHJpcEJPTShyZXNwb25zZURhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc3BvbnNlLmRhdGEgPSByZXNwb25zZURhdGE7XG4gICAgICAgICAgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBlcnJvcnNcbiAgICByZXEub24oJ2Vycm9yJywgZnVuY3Rpb24gaGFuZGxlUmVxdWVzdEVycm9yKGVycikge1xuICAgICAgaWYgKHJlcS5hYm9ydGVkICYmIGVyci5jb2RlICE9PSAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycpIHJldHVybjtcbiAgICAgIHJlamVjdChlbmhhbmNlRXJyb3IoZXJyLCBjb25maWcsIG51bGwsIHJlcSkpO1xuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIHJlcXVlc3QgdGltZW91dFxuICAgIGlmIChjb25maWcudGltZW91dCkge1xuICAgICAgLy8gU29tZXRpbWUsIHRoZSByZXNwb25zZSB3aWxsIGJlIHZlcnkgc2xvdywgYW5kIGRvZXMgbm90IHJlc3BvbmQsIHRoZSBjb25uZWN0IGV2ZW50IHdpbGwgYmUgYmxvY2sgYnkgZXZlbnQgbG9vcCBzeXN0ZW0uXG4gICAgICAvLyBBbmQgdGltZXIgY2FsbGJhY2sgd2lsbCBiZSBmaXJlZCwgYW5kIGFib3J0KCkgd2lsbCBiZSBpbnZva2VkIGJlZm9yZSBjb25uZWN0aW9uLCB0aGVuIGdldCBcInNvY2tldCBoYW5nIHVwXCIgYW5kIGNvZGUgRUNPTk5SRVNFVC5cbiAgICAgIC8vIEF0IHRoaXMgdGltZSwgaWYgd2UgaGF2ZSBhIGxhcmdlIG51bWJlciBvZiByZXF1ZXN0LCBub2RlanMgd2lsbCBoYW5nIHVwIHNvbWUgc29ja2V0IG9uIGJhY2tncm91bmQuIGFuZCB0aGUgbnVtYmVyIHdpbGwgdXAgYW5kIHVwLlxuICAgICAgLy8gQW5kIHRoZW4gdGhlc2Ugc29ja2V0IHdoaWNoIGJlIGhhbmcgdXAgd2lsbCBkZXZvcmluZyBDUFUgbGl0dGxlIGJ5IGxpdHRsZS5cbiAgICAgIC8vIENsaWVudFJlcXVlc3Quc2V0VGltZW91dCB3aWxsIGJlIGZpcmVkIG9uIHRoZSBzcGVjaWZ5IG1pbGxpc2Vjb25kcywgYW5kIGNhbiBtYWtlIHN1cmUgdGhhdCBhYm9ydCgpIHdpbGwgYmUgZmlyZWQgYWZ0ZXIgY29ubmVjdC5cbiAgICAgIHJlcS5zZXRUaW1lb3V0KGNvbmZpZy50aW1lb3V0LCBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0VGltZW91dCgpIHtcbiAgICAgICAgcmVxLmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjcmVhdGVFcnJvcigndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnLCBjb25maWcsICdFQ09OTkFCT1JURUQnLCByZXEpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25DYW5jZWxlZChjYW5jZWwpIHtcbiAgICAgICAgaWYgKHJlcS5hYm9ydGVkKSByZXR1cm47XG5cbiAgICAgICAgcmVxLmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIGlmICh1dGlscy5pc1N0cmVhbShkYXRhKSkge1xuICAgICAgZGF0YS5vbignZXJyb3InLCBmdW5jdGlvbiBoYW5kbGVTdHJlYW1FcnJvcihlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVuaGFuY2VFcnJvcihlcnIsIGNvbmZpZywgbnVsbCwgcmVxKSk7XG4gICAgICB9KS5waXBlKHJlcSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcS5lbmQoZGF0YSk7XG4gICAgfVxuICB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJhc3NlcnRcIik7IiwidmFyIGRlYnVnO1xudHJ5IHtcbiAgLyogZXNsaW50IGdsb2JhbC1yZXF1aXJlOiBvZmYgKi9cbiAgZGVidWcgPSByZXF1aXJlKFwiZGVidWdcIikoXCJmb2xsb3ctcmVkaXJlY3RzXCIpO1xufVxuY2F0Y2ggKGVycm9yKSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkgeyAvKiAqLyB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkZWJ1ZztcbiIsIi8qKlxuICogRGV0ZWN0IEVsZWN0cm9uIHJlbmRlcmVyIC8gbndqcyBwcm9jZXNzLCB3aGljaCBpcyBub2RlLCBidXQgd2Ugc2hvdWxkXG4gKiB0cmVhdCBhcyBhIGJyb3dzZXIuXG4gKi9cblxuaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJyB8fCBwcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicgfHwgcHJvY2Vzcy5icm93c2VyID09PSB0cnVlIHx8IHByb2Nlc3MuX19ud2pzKSB7XG5cdG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9icm93c2VyLmpzJyk7XG59IGVsc2Uge1xuXHRtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbm9kZS5qcycpO1xufVxuIiwiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbi8qKlxuICogVGhpcyBpcyB0aGUgd2ViIGJyb3dzZXIgaW1wbGVtZW50YXRpb24gb2YgYGRlYnVnKClgLlxuICovXG5cbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuZXhwb3J0cy5zdG9yYWdlID0gbG9jYWxzdG9yYWdlKCk7XG5leHBvcnRzLmRlc3Ryb3kgPSAoKCkgPT4ge1xuXHRsZXQgd2FybmVkID0gZmFsc2U7XG5cblx0cmV0dXJuICgpID0+IHtcblx0XHRpZiAoIXdhcm5lZCkge1xuXHRcdFx0d2FybmVkID0gdHJ1ZTtcblx0XHRcdGNvbnNvbGUud2FybignSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLicpO1xuXHRcdH1cblx0fTtcbn0pKCk7XG5cbi8qKlxuICogQ29sb3JzLlxuICovXG5cbmV4cG9ydHMuY29sb3JzID0gW1xuXHQnIzAwMDBDQycsXG5cdCcjMDAwMEZGJyxcblx0JyMwMDMzQ0MnLFxuXHQnIzAwMzNGRicsXG5cdCcjMDA2NkNDJyxcblx0JyMwMDY2RkYnLFxuXHQnIzAwOTlDQycsXG5cdCcjMDA5OUZGJyxcblx0JyMwMENDMDAnLFxuXHQnIzAwQ0MzMycsXG5cdCcjMDBDQzY2Jyxcblx0JyMwMENDOTknLFxuXHQnIzAwQ0NDQycsXG5cdCcjMDBDQ0ZGJyxcblx0JyMzMzAwQ0MnLFxuXHQnIzMzMDBGRicsXG5cdCcjMzMzM0NDJyxcblx0JyMzMzMzRkYnLFxuXHQnIzMzNjZDQycsXG5cdCcjMzM2NkZGJyxcblx0JyMzMzk5Q0MnLFxuXHQnIzMzOTlGRicsXG5cdCcjMzNDQzAwJyxcblx0JyMzM0NDMzMnLFxuXHQnIzMzQ0M2NicsXG5cdCcjMzNDQzk5Jyxcblx0JyMzM0NDQ0MnLFxuXHQnIzMzQ0NGRicsXG5cdCcjNjYwMENDJyxcblx0JyM2NjAwRkYnLFxuXHQnIzY2MzNDQycsXG5cdCcjNjYzM0ZGJyxcblx0JyM2NkNDMDAnLFxuXHQnIzY2Q0MzMycsXG5cdCcjOTkwMENDJyxcblx0JyM5OTAwRkYnLFxuXHQnIzk5MzNDQycsXG5cdCcjOTkzM0ZGJyxcblx0JyM5OUNDMDAnLFxuXHQnIzk5Q0MzMycsXG5cdCcjQ0MwMDAwJyxcblx0JyNDQzAwMzMnLFxuXHQnI0NDMDA2NicsXG5cdCcjQ0MwMDk5Jyxcblx0JyNDQzAwQ0MnLFxuXHQnI0NDMDBGRicsXG5cdCcjQ0MzMzAwJyxcblx0JyNDQzMzMzMnLFxuXHQnI0NDMzM2NicsXG5cdCcjQ0MzMzk5Jyxcblx0JyNDQzMzQ0MnLFxuXHQnI0NDMzNGRicsXG5cdCcjQ0M2NjAwJyxcblx0JyNDQzY2MzMnLFxuXHQnI0NDOTkwMCcsXG5cdCcjQ0M5OTMzJyxcblx0JyNDQ0NDMDAnLFxuXHQnI0NDQ0MzMycsXG5cdCcjRkYwMDAwJyxcblx0JyNGRjAwMzMnLFxuXHQnI0ZGMDA2NicsXG5cdCcjRkYwMDk5Jyxcblx0JyNGRjAwQ0MnLFxuXHQnI0ZGMDBGRicsXG5cdCcjRkYzMzAwJyxcblx0JyNGRjMzMzMnLFxuXHQnI0ZGMzM2NicsXG5cdCcjRkYzMzk5Jyxcblx0JyNGRjMzQ0MnLFxuXHQnI0ZGMzNGRicsXG5cdCcjRkY2NjAwJyxcblx0JyNGRjY2MzMnLFxuXHQnI0ZGOTkwMCcsXG5cdCcjRkY5OTMzJyxcblx0JyNGRkNDMDAnLFxuXHQnI0ZGQ0MzMydcbl07XG5cbi8qKlxuICogQ3VycmVudGx5IG9ubHkgV2ViS2l0LWJhc2VkIFdlYiBJbnNwZWN0b3JzLCBGaXJlZm94ID49IHYzMSxcbiAqIGFuZCB0aGUgRmlyZWJ1ZyBleHRlbnNpb24gKGFueSBGaXJlZm94IHZlcnNpb24pIGFyZSBrbm93blxuICogdG8gc3VwcG9ydCBcIiVjXCIgQ1NTIGN1c3RvbWl6YXRpb25zLlxuICpcbiAqIFRPRE86IGFkZCBhIGBsb2NhbFN0b3JhZ2VgIHZhcmlhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgY29sb3JzXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmZ1bmN0aW9uIHVzZUNvbG9ycygpIHtcblx0Ly8gTkI6IEluIGFuIEVsZWN0cm9uIHByZWxvYWQgc2NyaXB0LCBkb2N1bWVudCB3aWxsIGJlIGRlZmluZWQgYnV0IG5vdCBmdWxseVxuXHQvLyBpbml0aWFsaXplZC4gU2luY2Ugd2Uga25vdyB3ZSdyZSBpbiBDaHJvbWUsIHdlJ2xsIGp1c3QgZGV0ZWN0IHRoaXMgY2FzZVxuXHQvLyBleHBsaWNpdGx5XG5cdGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucHJvY2VzcyAmJiAod2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJyB8fCB3aW5kb3cucHJvY2Vzcy5fX253anMpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRWRnZSBkbyBub3Qgc3VwcG9ydCBjb2xvcnMuXG5cdGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcXC8oXFxkKykvKSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8vIElzIHdlYmtpdD8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTY0NTk2MDYvMzc2NzczXG5cdC8vIGRvY3VtZW50IGlzIHVuZGVmaW5lZCBpbiByZWFjdC1uYXRpdmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC1uYXRpdmUvcHVsbC8xNjMyXG5cdHJldHVybiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlKSB8fFxuXHRcdC8vIElzIGZpcmVidWc/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5ODEyMC8zNzY3NzNcblx0XHQodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNvbnNvbGUgJiYgKHdpbmRvdy5jb25zb2xlLmZpcmVidWcgfHwgKHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiAmJiB3aW5kb3cuY29uc29sZS50YWJsZSkpKSB8fFxuXHRcdC8vIElzIGZpcmVmb3ggPj0gdjMxP1xuXHRcdC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvV2ViX0NvbnNvbGUjU3R5bGluZ19tZXNzYWdlc1xuXHRcdCh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pICYmIHBhcnNlSW50KFJlZ0V4cC4kMSwgMTApID49IDMxKSB8fFxuXHRcdC8vIERvdWJsZSBjaGVjayB3ZWJraXQgaW4gdXNlckFnZW50IGp1c3QgaW4gY2FzZSB3ZSBhcmUgaW4gYSB3b3JrZXJcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XFwvKFxcZCspLykpO1xufVxuXG4vKipcbiAqIENvbG9yaXplIGxvZyBhcmd1bWVudHMgaWYgZW5hYmxlZC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdEFyZ3MoYXJncykge1xuXHRhcmdzWzBdID0gKHRoaXMudXNlQ29sb3JzID8gJyVjJyA6ICcnKSArXG5cdFx0dGhpcy5uYW1lc3BhY2UgK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICcgJWMnIDogJyAnKSArXG5cdFx0YXJnc1swXSArXG5cdFx0KHRoaXMudXNlQ29sb3JzID8gJyVjICcgOiAnICcpICtcblx0XHQnKycgKyBtb2R1bGUuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpO1xuXG5cdGlmICghdGhpcy51c2VDb2xvcnMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBjID0gJ2NvbG9yOiAnICsgdGhpcy5jb2xvcjtcblx0YXJncy5zcGxpY2UoMSwgMCwgYywgJ2NvbG9yOiBpbmhlcml0Jyk7XG5cblx0Ly8gVGhlIGZpbmFsIFwiJWNcIiBpcyBzb21ld2hhdCB0cmlja3ksIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXJcblx0Ly8gYXJndW1lbnRzIHBhc3NlZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSAlYywgc28gd2UgbmVlZCB0b1xuXHQvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGluc2VydCB0aGUgQ1NTIGludG9cblx0bGV0IGluZGV4ID0gMDtcblx0bGV0IGxhc3RDID0gMDtcblx0YXJnc1swXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csIG1hdGNoID0+IHtcblx0XHRpZiAobWF0Y2ggPT09ICclJScpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aW5kZXgrKztcblx0XHRpZiAobWF0Y2ggPT09ICclYycpIHtcblx0XHRcdC8vIFdlIG9ubHkgYXJlIGludGVyZXN0ZWQgaW4gdGhlICpsYXN0KiAlY1xuXHRcdFx0Ly8gKHRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIHRoZWlyIG93bilcblx0XHRcdGxhc3RDID0gaW5kZXg7XG5cdFx0fVxuXHR9KTtcblxuXHRhcmdzLnNwbGljZShsYXN0QywgMCwgYyk7XG59XG5cbi8qKlxuICogSW52b2tlcyBgY29uc29sZS5kZWJ1ZygpYCB3aGVuIGF2YWlsYWJsZS5cbiAqIE5vLW9wIHdoZW4gYGNvbnNvbGUuZGVidWdgIGlzIG5vdCBhIFwiZnVuY3Rpb25cIi5cbiAqIElmIGBjb25zb2xlLmRlYnVnYCBpcyBub3QgYXZhaWxhYmxlLCBmYWxscyBiYWNrXG4gKiB0byBgY29uc29sZS5sb2dgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cbmV4cG9ydHMubG9nID0gY29uc29sZS5kZWJ1ZyB8fCBjb25zb2xlLmxvZyB8fCAoKCkgPT4ge30pO1xuXG4vKipcbiAqIFNhdmUgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gc2F2ZShuYW1lc3BhY2VzKSB7XG5cdHRyeSB7XG5cdFx0aWYgKG5hbWVzcGFjZXMpIHtcblx0XHRcdGV4cG9ydHMuc3RvcmFnZS5zZXRJdGVtKCdkZWJ1ZycsIG5hbWVzcGFjZXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZGVidWcnKTtcblx0XHR9XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG59XG5cbi8qKlxuICogTG9hZCBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm5zIHRoZSBwcmV2aW91c2x5IHBlcnNpc3RlZCBkZWJ1ZyBtb2Rlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGxvYWQoKSB7XG5cdGxldCByO1xuXHR0cnkge1xuXHRcdHIgPSBleHBvcnRzLnN0b3JhZ2UuZ2V0SXRlbSgnZGVidWcnKTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cblxuXHQvLyBJZiBkZWJ1ZyBpc24ndCBzZXQgaW4gTFMsIGFuZCB3ZSdyZSBpbiBFbGVjdHJvbiwgdHJ5IHRvIGxvYWQgJERFQlVHXG5cdGlmICghciAmJiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2VudicgaW4gcHJvY2Vzcykge1xuXHRcdHIgPSBwcm9jZXNzLmVudi5ERUJVRztcblx0fVxuXG5cdHJldHVybiByO1xufVxuXG4vKipcbiAqIExvY2Fsc3RvcmFnZSBhdHRlbXB0cyB0byByZXR1cm4gdGhlIGxvY2Fsc3RvcmFnZS5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNhZmFyaSB0aHJvd3NcbiAqIHdoZW4gYSB1c2VyIGRpc2FibGVzIGNvb2tpZXMvbG9jYWxzdG9yYWdlXG4gKiBhbmQgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGl0LlxuICpcbiAqIEByZXR1cm4ge0xvY2FsU3RvcmFnZX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvY2Fsc3RvcmFnZSgpIHtcblx0dHJ5IHtcblx0XHQvLyBUVk1MS2l0IChBcHBsZSBUViBKUyBSdW50aW1lKSBkb2VzIG5vdCBoYXZlIGEgd2luZG93IG9iamVjdCwganVzdCBsb2NhbFN0b3JhZ2UgaW4gdGhlIGdsb2JhbCBjb250ZXh0XG5cdFx0Ly8gVGhlIEJyb3dzZXIgYWxzbyBoYXMgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dC5cblx0XHRyZXR1cm4gbG9jYWxTdG9yYWdlO1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY29tbW9uJykoZXhwb3J0cyk7XG5cbmNvbnN0IHtmb3JtYXR0ZXJzfSA9IG1vZHVsZS5leHBvcnRzO1xuXG4vKipcbiAqIE1hcCAlaiB0byBgSlNPTi5zdHJpbmdpZnkoKWAsIHNpbmNlIG5vIFdlYiBJbnNwZWN0b3JzIGRvIHRoYXQgYnkgZGVmYXVsdC5cbiAqL1xuXG5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbiAodikge1xuXHR0cnkge1xuXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRyZXR1cm4gJ1tVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAnICsgZXJyb3IubWVzc2FnZTtcblx0fVxufTtcbiIsIi8qKlxuICogSGVscGVycy5cbiAqL1xuXG52YXIgcyA9IDEwMDA7XG52YXIgbSA9IHMgKiA2MDtcbnZhciBoID0gbSAqIDYwO1xudmFyIGQgPSBoICogMjQ7XG52YXIgeSA9IGQgKiAzNjUuMjU7XG5cbi8qKlxuICogUGFyc2Ugb3IgZm9ybWF0IHRoZSBnaXZlbiBgdmFsYC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAtIGBsb25nYCB2ZXJib3NlIGZvcm1hdHRpbmcgW2ZhbHNlXVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAdGhyb3dzIHtFcnJvcn0gdGhyb3cgYW4gZXJyb3IgaWYgdmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBudW1iZXJcbiAqIEByZXR1cm4ge1N0cmluZ3xOdW1iZXJ9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odmFsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiB2YWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwYXJzZSh2YWwpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbCkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubG9uZyA/IGZtdExvbmcodmFsKSA6IGZtdFNob3J0KHZhbCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPScgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkodmFsKVxuICApO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAoc3RyLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbWF0Y2ggPSAvXigoPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKFxuICAgIHN0clxuICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdtcycpLnRvTG93ZXJDYXNlKCk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3llYXJzJzpcbiAgICBjYXNlICd5ZWFyJzpcbiAgICBjYXNlICd5cnMnOlxuICAgIGNhc2UgJ3lyJzpcbiAgICBjYXNlICd5JzpcbiAgICAgIHJldHVybiBuICogeTtcbiAgICBjYXNlICdkYXlzJzpcbiAgICBjYXNlICdkYXknOlxuICAgIGNhc2UgJ2QnOlxuICAgICAgcmV0dXJuIG4gKiBkO1xuICAgIGNhc2UgJ2hvdXJzJzpcbiAgICBjYXNlICdob3VyJzpcbiAgICBjYXNlICdocnMnOlxuICAgIGNhc2UgJ2hyJzpcbiAgICBjYXNlICdoJzpcbiAgICAgIHJldHVybiBuICogaDtcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICBjYXNlICdtaW51dGUnOlxuICAgIGNhc2UgJ21pbnMnOlxuICAgIGNhc2UgJ21pbic6XG4gICAgY2FzZSAnbSc6XG4gICAgICByZXR1cm4gbiAqIG07XG4gICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgY2FzZSAnc2Vjb25kJzpcbiAgICBjYXNlICdzZWNzJzpcbiAgICBjYXNlICdzZWMnOlxuICAgIGNhc2UgJ3MnOlxuICAgICAgcmV0dXJuIG4gKiBzO1xuICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgIGNhc2UgJ21zZWNzJzpcbiAgICBjYXNlICdtc2VjJzpcbiAgICBjYXNlICdtcyc6XG4gICAgICByZXR1cm4gbjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFNob3J0IGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdFNob3J0KG1zKSB7XG4gIGlmIChtcyA+PSBkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgfVxuICBpZiAobXMgPj0gaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIH1cbiAgaWYgKG1zID49IG0pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICB9XG4gIGlmIChtcyA+PSBzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgfVxuICByZXR1cm4gbXMgKyAnbXMnO1xufVxuXG4vKipcbiAqIExvbmcgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10TG9uZyhtcykge1xuICByZXR1cm4gcGx1cmFsKG1zLCBkLCAnZGF5JykgfHxcbiAgICBwbHVyYWwobXMsIGgsICdob3VyJykgfHxcbiAgICBwbHVyYWwobXMsIG0sICdtaW51dGUnKSB8fFxuICAgIHBsdXJhbChtcywgcywgJ3NlY29uZCcpIHx8XG4gICAgbXMgKyAnIG1zJztcbn1cblxuLyoqXG4gKiBQbHVyYWxpemF0aW9uIGhlbHBlci5cbiAqL1xuXG5mdW5jdGlvbiBwbHVyYWwobXMsIG4sIG5hbWUpIHtcbiAgaWYgKG1zIDwgbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobXMgPCBuICogMS41KSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobXMgLyBuKSArICcgJyArIG5hbWU7XG4gIH1cbiAgcmV0dXJuIE1hdGguY2VpbChtcyAvIG4pICsgJyAnICsgbmFtZSArICdzJztcbn1cbiIsIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG5jb25zdCB0dHkgPSByZXF1aXJlKCd0dHknKTtcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgTm9kZS5qcyBpbXBsZW1lbnRhdGlvbiBvZiBgZGVidWcoKWAuXG4gKi9cblxuZXhwb3J0cy5pbml0ID0gaW5pdDtcbmV4cG9ydHMubG9nID0gbG9nO1xuZXhwb3J0cy5mb3JtYXRBcmdzID0gZm9ybWF0QXJncztcbmV4cG9ydHMuc2F2ZSA9IHNhdmU7XG5leHBvcnRzLmxvYWQgPSBsb2FkO1xuZXhwb3J0cy51c2VDb2xvcnMgPSB1c2VDb2xvcnM7XG5leHBvcnRzLmRlc3Ryb3kgPSB1dGlsLmRlcHJlY2F0ZShcblx0KCkgPT4ge30sXG5cdCdJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuJ1xuKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbNiwgMiwgMywgNCwgNSwgMV07XG5cbnRyeSB7XG5cdC8vIE9wdGlvbmFsIGRlcGVuZGVuY3kgKGFzIGluLCBkb2Vzbid0IG5lZWQgdG8gYmUgaW5zdGFsbGVkLCBOT1QgbGlrZSBvcHRpb25hbERlcGVuZGVuY2llcyBpbiBwYWNrYWdlLmpzb24pXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcblx0Y29uc3Qgc3VwcG9ydHNDb2xvciA9IHJlcXVpcmUoJ3N1cHBvcnRzLWNvbG9yJyk7XG5cblx0aWYgKHN1cHBvcnRzQ29sb3IgJiYgKHN1cHBvcnRzQ29sb3Iuc3RkZXJyIHx8IHN1cHBvcnRzQ29sb3IpLmxldmVsID49IDIpIHtcblx0XHRleHBvcnRzLmNvbG9ycyA9IFtcblx0XHRcdDIwLFxuXHRcdFx0MjEsXG5cdFx0XHQyNixcblx0XHRcdDI3LFxuXHRcdFx0MzIsXG5cdFx0XHQzMyxcblx0XHRcdDM4LFxuXHRcdFx0MzksXG5cdFx0XHQ0MCxcblx0XHRcdDQxLFxuXHRcdFx0NDIsXG5cdFx0XHQ0Myxcblx0XHRcdDQ0LFxuXHRcdFx0NDUsXG5cdFx0XHQ1Nixcblx0XHRcdDU3LFxuXHRcdFx0NjIsXG5cdFx0XHQ2Myxcblx0XHRcdDY4LFxuXHRcdFx0NjksXG5cdFx0XHQ3NCxcblx0XHRcdDc1LFxuXHRcdFx0NzYsXG5cdFx0XHQ3Nyxcblx0XHRcdDc4LFxuXHRcdFx0NzksXG5cdFx0XHQ4MCxcblx0XHRcdDgxLFxuXHRcdFx0OTIsXG5cdFx0XHQ5Myxcblx0XHRcdDk4LFxuXHRcdFx0OTksXG5cdFx0XHQxMTIsXG5cdFx0XHQxMTMsXG5cdFx0XHQxMjgsXG5cdFx0XHQxMjksXG5cdFx0XHQxMzQsXG5cdFx0XHQxMzUsXG5cdFx0XHQxNDgsXG5cdFx0XHQxNDksXG5cdFx0XHQxNjAsXG5cdFx0XHQxNjEsXG5cdFx0XHQxNjIsXG5cdFx0XHQxNjMsXG5cdFx0XHQxNjQsXG5cdFx0XHQxNjUsXG5cdFx0XHQxNjYsXG5cdFx0XHQxNjcsXG5cdFx0XHQxNjgsXG5cdFx0XHQxNjksXG5cdFx0XHQxNzAsXG5cdFx0XHQxNzEsXG5cdFx0XHQxNzIsXG5cdFx0XHQxNzMsXG5cdFx0XHQxNzgsXG5cdFx0XHQxNzksXG5cdFx0XHQxODQsXG5cdFx0XHQxODUsXG5cdFx0XHQxOTYsXG5cdFx0XHQxOTcsXG5cdFx0XHQxOTgsXG5cdFx0XHQxOTksXG5cdFx0XHQyMDAsXG5cdFx0XHQyMDEsXG5cdFx0XHQyMDIsXG5cdFx0XHQyMDMsXG5cdFx0XHQyMDQsXG5cdFx0XHQyMDUsXG5cdFx0XHQyMDYsXG5cdFx0XHQyMDcsXG5cdFx0XHQyMDgsXG5cdFx0XHQyMDksXG5cdFx0XHQyMTQsXG5cdFx0XHQyMTUsXG5cdFx0XHQyMjAsXG5cdFx0XHQyMjFcblx0XHRdO1xuXHR9XG59IGNhdGNoIChlcnJvcikge1xuXHQvLyBTd2FsbG93IC0gd2Ugb25seSBjYXJlIGlmIGBzdXBwb3J0cy1jb2xvcmAgaXMgYXZhaWxhYmxlOyBpdCBkb2Vzbid0IGhhdmUgdG8gYmUuXG59XG5cbi8qKlxuICogQnVpbGQgdXAgdGhlIGRlZmF1bHQgYGluc3BlY3RPcHRzYCBvYmplY3QgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqICAgJCBERUJVR19DT0xPUlM9bm8gREVCVUdfREVQVEg9MTAgREVCVUdfU0hPV19ISURERU49ZW5hYmxlZCBub2RlIHNjcmlwdC5qc1xuICovXG5cbmV4cG9ydHMuaW5zcGVjdE9wdHMgPSBPYmplY3Qua2V5cyhwcm9jZXNzLmVudikuZmlsdGVyKGtleSA9PiB7XG5cdHJldHVybiAvXmRlYnVnXy9pLnRlc3Qoa2V5KTtcbn0pLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcblx0Ly8gQ2FtZWwtY2FzZVxuXHRjb25zdCBwcm9wID0ga2V5XG5cdFx0LnN1YnN0cmluZyg2KVxuXHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0LnJlcGxhY2UoL18oW2Etel0pL2csIChfLCBrKSA9PiB7XG5cdFx0XHRyZXR1cm4gay50b1VwcGVyQ2FzZSgpO1xuXHRcdH0pO1xuXG5cdC8vIENvZXJjZSBzdHJpbmcgdmFsdWUgaW50byBKUyB2YWx1ZVxuXHRsZXQgdmFsID0gcHJvY2Vzcy5lbnZba2V5XTtcblx0aWYgKC9eKHllc3xvbnx0cnVlfGVuYWJsZWQpJC9pLnRlc3QodmFsKSkge1xuXHRcdHZhbCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoL14obm98b2ZmfGZhbHNlfGRpc2FibGVkKSQvaS50ZXN0KHZhbCkpIHtcblx0XHR2YWwgPSBmYWxzZTtcblx0fSBlbHNlIGlmICh2YWwgPT09ICdudWxsJykge1xuXHRcdHZhbCA9IG51bGw7XG5cdH0gZWxzZSB7XG5cdFx0dmFsID0gTnVtYmVyKHZhbCk7XG5cdH1cblxuXHRvYmpbcHJvcF0gPSB2YWw7XG5cdHJldHVybiBvYmo7XG59LCB7fSk7XG5cbi8qKlxuICogSXMgc3Rkb3V0IGEgVFRZPyBDb2xvcmVkIG91dHB1dCBpcyBlbmFibGVkIHdoZW4gYHRydWVgLlxuICovXG5cbmZ1bmN0aW9uIHVzZUNvbG9ycygpIHtcblx0cmV0dXJuICdjb2xvcnMnIGluIGV4cG9ydHMuaW5zcGVjdE9wdHMgP1xuXHRcdEJvb2xlYW4oZXhwb3J0cy5pbnNwZWN0T3B0cy5jb2xvcnMpIDpcblx0XHR0dHkuaXNhdHR5KHByb2Nlc3Muc3RkZXJyLmZkKTtcbn1cblxuLyoqXG4gKiBBZGRzIEFOU0kgY29sb3IgZXNjYXBlIGNvZGVzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcblx0Y29uc3Qge25hbWVzcGFjZTogbmFtZSwgdXNlQ29sb3JzfSA9IHRoaXM7XG5cblx0aWYgKHVzZUNvbG9ycykge1xuXHRcdGNvbnN0IGMgPSB0aGlzLmNvbG9yO1xuXHRcdGNvbnN0IGNvbG9yQ29kZSA9ICdcXHUwMDFCWzMnICsgKGMgPCA4ID8gYyA6ICc4OzU7JyArIGMpO1xuXHRcdGNvbnN0IHByZWZpeCA9IGAgICR7Y29sb3JDb2RlfTsxbSR7bmFtZX0gXFx1MDAxQlswbWA7XG5cblx0XHRhcmdzWzBdID0gcHJlZml4ICsgYXJnc1swXS5zcGxpdCgnXFxuJykuam9pbignXFxuJyArIHByZWZpeCk7XG5cdFx0YXJncy5wdXNoKGNvbG9yQ29kZSArICdtKycgKyBtb2R1bGUuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpICsgJ1xcdTAwMUJbMG0nKTtcblx0fSBlbHNlIHtcblx0XHRhcmdzWzBdID0gZ2V0RGF0ZSgpICsgbmFtZSArICcgJyArIGFyZ3NbMF07XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0RGF0ZSgpIHtcblx0aWYgKGV4cG9ydHMuaW5zcGVjdE9wdHMuaGlkZURhdGUpIHtcblx0XHRyZXR1cm4gJyc7XG5cdH1cblx0cmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArICcgJztcbn1cblxuLyoqXG4gKiBJbnZva2VzIGB1dGlsLmZvcm1hdCgpYCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzIGFuZCB3cml0ZXMgdG8gc3RkZXJyLlxuICovXG5cbmZ1bmN0aW9uIGxvZyguLi5hcmdzKSB7XG5cdHJldHVybiBwcm9jZXNzLnN0ZGVyci53cml0ZSh1dGlsLmZvcm1hdCguLi5hcmdzKSArICdcXG4nKTtcbn1cblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuXHRpZiAobmFtZXNwYWNlcykge1xuXHRcdHByb2Nlc3MuZW52LkRFQlVHID0gbmFtZXNwYWNlcztcblx0fSBlbHNlIHtcblx0XHQvLyBJZiB5b3Ugc2V0IGEgcHJvY2Vzcy5lbnYgZmllbGQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGl0IGdldHMgY2FzdCB0byB0aGVcblx0XHQvLyBzdHJpbmcgJ251bGwnIG9yICd1bmRlZmluZWQnLiBKdXN0IGRlbGV0ZSBpbnN0ZWFkLlxuXHRcdGRlbGV0ZSBwcm9jZXNzLmVudi5ERUJVRztcblx0fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvYWQoKSB7XG5cdHJldHVybiBwcm9jZXNzLmVudi5ERUJVRztcbn1cblxuLyoqXG4gKiBJbml0IGxvZ2ljIGZvciBgZGVidWdgIGluc3RhbmNlcy5cbiAqXG4gKiBDcmVhdGUgYSBuZXcgYGluc3BlY3RPcHRzYCBvYmplY3QgaW4gY2FzZSBgdXNlQ29sb3JzYCBpcyBzZXRcbiAqIGRpZmZlcmVudGx5IGZvciBhIHBhcnRpY3VsYXIgYGRlYnVnYCBpbnN0YW5jZS5cbiAqL1xuXG5mdW5jdGlvbiBpbml0KGRlYnVnKSB7XG5cdGRlYnVnLmluc3BlY3RPcHRzID0ge307XG5cblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGV4cG9ydHMuaW5zcGVjdE9wdHMpO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcblx0XHRkZWJ1Zy5pbnNwZWN0T3B0c1trZXlzW2ldXSA9IGV4cG9ydHMuaW5zcGVjdE9wdHNba2V5c1tpXV07XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2NvbW1vbicpKGV4cG9ydHMpO1xuXG5jb25zdCB7Zm9ybWF0dGVyc30gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBNYXAgJW8gdG8gYHV0aWwuaW5zcGVjdCgpYCwgYWxsIG9uIGEgc2luZ2xlIGxpbmUuXG4gKi9cblxuZm9ybWF0dGVycy5vID0gZnVuY3Rpb24gKHYpIHtcblx0dGhpcy5pbnNwZWN0T3B0cy5jb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblx0cmV0dXJuIHV0aWwuaW5zcGVjdCh2LCB0aGlzLmluc3BlY3RPcHRzKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKHN0ciA9PiBzdHIudHJpbSgpKVxuXHRcdC5qb2luKCcgJyk7XG59O1xuXG4vKipcbiAqIE1hcCAlTyB0byBgdXRpbC5pbnNwZWN0KClgLCBhbGxvd2luZyBtdWx0aXBsZSBsaW5lcyBpZiBuZWVkZWQuXG4gKi9cblxuZm9ybWF0dGVycy5PID0gZnVuY3Rpb24gKHYpIHtcblx0dGhpcy5pbnNwZWN0T3B0cy5jb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblx0cmV0dXJuIHV0aWwuaW5zcGVjdCh2LCB0aGlzLmluc3BlY3RPcHRzKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ0dHlcIik7IiwiJ3VzZSBzdHJpY3QnO1xuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpO1xuY29uc3QgaGFzRmxhZyA9IHJlcXVpcmUoJ2hhcy1mbGFnJyk7XG5cbmNvbnN0IGVudiA9IHByb2Nlc3MuZW52O1xuXG5sZXQgZm9yY2VDb2xvcjtcbmlmIChoYXNGbGFnKCduby1jb2xvcicpIHx8XG5cdGhhc0ZsYWcoJ25vLWNvbG9ycycpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9yPWZhbHNlJykpIHtcblx0Zm9yY2VDb2xvciA9IGZhbHNlO1xufSBlbHNlIGlmIChoYXNGbGFnKCdjb2xvcicpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9ycycpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9yPXRydWUnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj1hbHdheXMnKSkge1xuXHRmb3JjZUNvbG9yID0gdHJ1ZTtcbn1cbmlmICgnRk9SQ0VfQ09MT1InIGluIGVudikge1xuXHRmb3JjZUNvbG9yID0gZW52LkZPUkNFX0NPTE9SLmxlbmd0aCA9PT0gMCB8fCBwYXJzZUludChlbnYuRk9SQ0VfQ09MT1IsIDEwKSAhPT0gMDtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpIHtcblx0aWYgKGxldmVsID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRsZXZlbCxcblx0XHRoYXNCYXNpYzogdHJ1ZSxcblx0XHRoYXMyNTY6IGxldmVsID49IDIsXG5cdFx0aGFzMTZtOiBsZXZlbCA+PSAzXG5cdH07XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRzQ29sb3Ioc3RyZWFtKSB7XG5cdGlmIChmb3JjZUNvbG9yID09PSBmYWxzZSkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0aWYgKGhhc0ZsYWcoJ2NvbG9yPTE2bScpIHx8XG5cdFx0aGFzRmxhZygnY29sb3I9ZnVsbCcpIHx8XG5cdFx0aGFzRmxhZygnY29sb3I9dHJ1ZWNvbG9yJykpIHtcblx0XHRyZXR1cm4gMztcblx0fVxuXG5cdGlmIChoYXNGbGFnKCdjb2xvcj0yNTYnKSkge1xuXHRcdHJldHVybiAyO1xuXHR9XG5cblx0aWYgKHN0cmVhbSAmJiAhc3RyZWFtLmlzVFRZICYmIGZvcmNlQ29sb3IgIT09IHRydWUpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IG1pbiA9IGZvcmNlQ29sb3IgPyAxIDogMDtcblxuXHRpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuXHRcdC8vIE5vZGUuanMgNy41LjAgaXMgdGhlIGZpcnN0IHZlcnNpb24gb2YgTm9kZS5qcyB0byBpbmNsdWRlIGEgcGF0Y2ggdG9cblx0XHQvLyBsaWJ1diB0aGF0IGVuYWJsZXMgMjU2IGNvbG9yIG91dHB1dCBvbiBXaW5kb3dzLiBBbnl0aGluZyBlYXJsaWVyIGFuZCBpdFxuXHRcdC8vIHdvbid0IHdvcmsuIEhvd2V2ZXIsIGhlcmUgd2UgdGFyZ2V0IE5vZGUuanMgOCBhdCBtaW5pbXVtIGFzIGl0IGlzIGFuIExUU1xuXHRcdC8vIHJlbGVhc2UsIGFuZCBOb2RlLmpzIDcgaXMgbm90LiBXaW5kb3dzIDEwIGJ1aWxkIDEwNTg2IGlzIHRoZSBmaXJzdCBXaW5kb3dzXG5cdFx0Ly8gcmVsZWFzZSB0aGF0IHN1cHBvcnRzIDI1NiBjb2xvcnMuIFdpbmRvd3MgMTAgYnVpbGQgMTQ5MzEgaXMgdGhlIGZpcnN0IHJlbGVhc2Vcblx0XHQvLyB0aGF0IHN1cHBvcnRzIDE2bS9UcnVlQ29sb3IuXG5cdFx0Y29uc3Qgb3NSZWxlYXNlID0gb3MucmVsZWFzZSgpLnNwbGl0KCcuJyk7XG5cdFx0aWYgKFxuXHRcdFx0TnVtYmVyKHByb2Nlc3MudmVyc2lvbnMubm9kZS5zcGxpdCgnLicpWzBdKSA+PSA4ICYmXG5cdFx0XHROdW1iZXIob3NSZWxlYXNlWzBdKSA+PSAxMCAmJlxuXHRcdFx0TnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTA1ODZcblx0XHQpIHtcblx0XHRcdHJldHVybiBOdW1iZXIob3NSZWxlYXNlWzJdKSA+PSAxNDkzMSA/IDMgOiAyO1xuXHRcdH1cblxuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKCdDSScgaW4gZW52KSB7XG5cdFx0aWYgKFsnVFJBVklTJywgJ0NJUkNMRUNJJywgJ0FQUFZFWU9SJywgJ0dJVExBQl9DSSddLnNvbWUoc2lnbiA9PiBzaWduIGluIGVudikgfHwgZW52LkNJX05BTUUgPT09ICdjb2Rlc2hpcCcpIHtcblx0XHRcdHJldHVybiAxO1xuXHRcdH1cblxuXHRcdHJldHVybiBtaW47XG5cdH1cblxuXHRpZiAoJ1RFQU1DSVRZX1ZFUlNJT04nIGluIGVudikge1xuXHRcdHJldHVybiAvXig5XFwuKDAqWzEtOV1cXGQqKVxcLnxcXGR7Mix9XFwuKS8udGVzdChlbnYuVEVBTUNJVFlfVkVSU0lPTikgPyAxIDogMDtcblx0fVxuXG5cdGlmIChlbnYuQ09MT1JURVJNID09PSAndHJ1ZWNvbG9yJykge1xuXHRcdHJldHVybiAzO1xuXHR9XG5cblx0aWYgKCdURVJNX1BST0dSQU0nIGluIGVudikge1xuXHRcdGNvbnN0IHZlcnNpb24gPSBwYXJzZUludCgoZW52LlRFUk1fUFJPR1JBTV9WRVJTSU9OIHx8ICcnKS5zcGxpdCgnLicpWzBdLCAxMCk7XG5cblx0XHRzd2l0Y2ggKGVudi5URVJNX1BST0dSQU0pIHtcblx0XHRcdGNhc2UgJ2lUZXJtLmFwcCc6XG5cdFx0XHRcdHJldHVybiB2ZXJzaW9uID49IDMgPyAzIDogMjtcblx0XHRcdGNhc2UgJ0FwcGxlX1Rlcm1pbmFsJzpcblx0XHRcdFx0cmV0dXJuIDI7XG5cdFx0XHQvLyBObyBkZWZhdWx0XG5cdFx0fVxuXHR9XG5cblx0aWYgKC8tMjU2KGNvbG9yKT8kL2kudGVzdChlbnYuVEVSTSkpIHtcblx0XHRyZXR1cm4gMjtcblx0fVxuXG5cdGlmICgvXnNjcmVlbnxeeHRlcm18XnZ0MTAwfF52dDIyMHxecnh2dHxjb2xvcnxhbnNpfGN5Z3dpbnxsaW51eC9pLnRlc3QoZW52LlRFUk0pKSB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblxuXHRpZiAoJ0NPTE9SVEVSTScgaW4gZW52KSB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblxuXHRpZiAoZW52LlRFUk0gPT09ICdkdW1iJykge1xuXHRcdHJldHVybiBtaW47XG5cdH1cblxuXHRyZXR1cm4gbWluO1xufVxuXG5mdW5jdGlvbiBnZXRTdXBwb3J0TGV2ZWwoc3RyZWFtKSB7XG5cdGNvbnN0IGxldmVsID0gc3VwcG9ydHNDb2xvcihzdHJlYW0pO1xuXHRyZXR1cm4gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblx0c3VwcG9ydHNDb2xvcjogZ2V0U3VwcG9ydExldmVsLFxuXHRzdGRvdXQ6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZG91dCksXG5cdHN0ZGVycjogZ2V0U3VwcG9ydExldmVsKHByb2Nlc3Muc3RkZXJyKVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gKGZsYWcsIGFyZ3YpID0+IHtcblx0YXJndiA9IGFyZ3YgfHwgcHJvY2Vzcy5hcmd2O1xuXHRjb25zdCBwcmVmaXggPSBmbGFnLnN0YXJ0c1dpdGgoJy0nKSA/ICcnIDogKGZsYWcubGVuZ3RoID09PSAxID8gJy0nIDogJy0tJyk7XG5cdGNvbnN0IHBvcyA9IGFyZ3YuaW5kZXhPZihwcmVmaXggKyBmbGFnKTtcblx0Y29uc3QgdGVybWluYXRvclBvcyA9IGFyZ3YuaW5kZXhPZignLS0nKTtcblx0cmV0dXJuIHBvcyAhPT0gLTEgJiYgKHRlcm1pbmF0b3JQb3MgPT09IC0xID8gdHJ1ZSA6IHBvcyA8IHRlcm1pbmF0b3JQb3MpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInpsaWJcIik7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiAodHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJ1ZmZlci5wcm90b3R5cGUpXG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwiLyogZXNsaW50IHF1b3RlLXByb3BzOiBvZmYgKi9cbi8qIGVzbGludCBrZXktc3BhY2luZzogb2ZmICovXG4ndXNlIHN0cmljdCdcblxuZXhwb3J0cy5uYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICAnaWRlbnRpdHknOiAgIDB4MCxcbiAgJ3NoYTEnOiAgICAgICAweDExLFxuICAnc2hhMi0yNTYnOiAgIDB4MTIsXG4gICdzaGEyLTUxMic6ICAgMHgxMyxcbiAgJ2RibC1zaGEyLTI1Nic6IDB4NTYsXG4gICdzaGEzLTIyNCc6ICAgMHgxNyxcbiAgJ3NoYTMtMjU2JzogICAweDE2LFxuICAnc2hhMy0zODQnOiAgIDB4MTUsXG4gICdzaGEzLTUxMic6ICAgMHgxNCxcbiAgJ3NoYWtlLTEyOCc6ICAweDE4LFxuICAnc2hha2UtMjU2JzogIDB4MTksXG4gICdrZWNjYWstMjI0JzogMHgxQSxcbiAgJ2tlY2Nhay0yNTYnOiAweDFCLFxuICAna2VjY2FrLTM4NCc6IDB4MUMsXG4gICdrZWNjYWstNTEyJzogMHgxRCxcbiAgJ211cm11cjMtMTI4JzogMHgyMixcbiAgJ211cm11cjMtMzInOiAgMHgyMyxcbiAgJ2JsYWtlMmItOCc6ICAgMHhiMjAxLFxuICAnYmxha2UyYi0xNic6ICAweGIyMDIsXG4gICdibGFrZTJiLTI0JzogIDB4YjIwMyxcbiAgJ2JsYWtlMmItMzInOiAgMHhiMjA0LFxuICAnYmxha2UyYi00MCc6ICAweGIyMDUsXG4gICdibGFrZTJiLTQ4JzogIDB4YjIwNixcbiAgJ2JsYWtlMmItNTYnOiAgMHhiMjA3LFxuICAnYmxha2UyYi02NCc6ICAweGIyMDgsXG4gICdibGFrZTJiLTcyJzogIDB4YjIwOSxcbiAgJ2JsYWtlMmItODAnOiAgMHhiMjBhLFxuICAnYmxha2UyYi04OCc6ICAweGIyMGIsXG4gICdibGFrZTJiLTk2JzogIDB4YjIwYyxcbiAgJ2JsYWtlMmItMTA0JzogMHhiMjBkLFxuICAnYmxha2UyYi0xMTInOiAweGIyMGUsXG4gICdibGFrZTJiLTEyMCc6IDB4YjIwZixcbiAgJ2JsYWtlMmItMTI4JzogMHhiMjEwLFxuICAnYmxha2UyYi0xMzYnOiAweGIyMTEsXG4gICdibGFrZTJiLTE0NCc6IDB4YjIxMixcbiAgJ2JsYWtlMmItMTUyJzogMHhiMjEzLFxuICAnYmxha2UyYi0xNjAnOiAweGIyMTQsXG4gICdibGFrZTJiLTE2OCc6IDB4YjIxNSxcbiAgJ2JsYWtlMmItMTc2JzogMHhiMjE2LFxuICAnYmxha2UyYi0xODQnOiAweGIyMTcsXG4gICdibGFrZTJiLTE5Mic6IDB4YjIxOCxcbiAgJ2JsYWtlMmItMjAwJzogMHhiMjE5LFxuICAnYmxha2UyYi0yMDgnOiAweGIyMWEsXG4gICdibGFrZTJiLTIxNic6IDB4YjIxYixcbiAgJ2JsYWtlMmItMjI0JzogMHhiMjFjLFxuICAnYmxha2UyYi0yMzInOiAweGIyMWQsXG4gICdibGFrZTJiLTI0MCc6IDB4YjIxZSxcbiAgJ2JsYWtlMmItMjQ4JzogMHhiMjFmLFxuICAnYmxha2UyYi0yNTYnOiAweGIyMjAsXG4gICdibGFrZTJiLTI2NCc6IDB4YjIyMSxcbiAgJ2JsYWtlMmItMjcyJzogMHhiMjIyLFxuICAnYmxha2UyYi0yODAnOiAweGIyMjMsXG4gICdibGFrZTJiLTI4OCc6IDB4YjIyNCxcbiAgJ2JsYWtlMmItMjk2JzogMHhiMjI1LFxuICAnYmxha2UyYi0zMDQnOiAweGIyMjYsXG4gICdibGFrZTJiLTMxMic6IDB4YjIyNyxcbiAgJ2JsYWtlMmItMzIwJzogMHhiMjI4LFxuICAnYmxha2UyYi0zMjgnOiAweGIyMjksXG4gICdibGFrZTJiLTMzNic6IDB4YjIyYSxcbiAgJ2JsYWtlMmItMzQ0JzogMHhiMjJiLFxuICAnYmxha2UyYi0zNTInOiAweGIyMmMsXG4gICdibGFrZTJiLTM2MCc6IDB4YjIyZCxcbiAgJ2JsYWtlMmItMzY4JzogMHhiMjJlLFxuICAnYmxha2UyYi0zNzYnOiAweGIyMmYsXG4gICdibGFrZTJiLTM4NCc6IDB4YjIzMCxcbiAgJ2JsYWtlMmItMzkyJzogMHhiMjMxLFxuICAnYmxha2UyYi00MDAnOiAweGIyMzIsXG4gICdibGFrZTJiLTQwOCc6IDB4YjIzMyxcbiAgJ2JsYWtlMmItNDE2JzogMHhiMjM0LFxuICAnYmxha2UyYi00MjQnOiAweGIyMzUsXG4gICdibGFrZTJiLTQzMic6IDB4YjIzNixcbiAgJ2JsYWtlMmItNDQwJzogMHhiMjM3LFxuICAnYmxha2UyYi00NDgnOiAweGIyMzgsXG4gICdibGFrZTJiLTQ1Nic6IDB4YjIzOSxcbiAgJ2JsYWtlMmItNDY0JzogMHhiMjNhLFxuICAnYmxha2UyYi00NzInOiAweGIyM2IsXG4gICdibGFrZTJiLTQ4MCc6IDB4YjIzYyxcbiAgJ2JsYWtlMmItNDg4JzogMHhiMjNkLFxuICAnYmxha2UyYi00OTYnOiAweGIyM2UsXG4gICdibGFrZTJiLTUwNCc6IDB4YjIzZixcbiAgJ2JsYWtlMmItNTEyJzogMHhiMjQwLFxuICAnYmxha2Uycy04JzogICAweGIyNDEsXG4gICdibGFrZTJzLTE2JzogIDB4YjI0MixcbiAgJ2JsYWtlMnMtMjQnOiAgMHhiMjQzLFxuICAnYmxha2Uycy0zMic6ICAweGIyNDQsXG4gICdibGFrZTJzLTQwJzogIDB4YjI0NSxcbiAgJ2JsYWtlMnMtNDgnOiAgMHhiMjQ2LFxuICAnYmxha2Uycy01Nic6ICAweGIyNDcsXG4gICdibGFrZTJzLTY0JzogIDB4YjI0OCxcbiAgJ2JsYWtlMnMtNzInOiAgMHhiMjQ5LFxuICAnYmxha2Uycy04MCc6ICAweGIyNGEsXG4gICdibGFrZTJzLTg4JzogIDB4YjI0YixcbiAgJ2JsYWtlMnMtOTYnOiAgMHhiMjRjLFxuICAnYmxha2Uycy0xMDQnOiAweGIyNGQsXG4gICdibGFrZTJzLTExMic6IDB4YjI0ZSxcbiAgJ2JsYWtlMnMtMTIwJzogMHhiMjRmLFxuICAnYmxha2Uycy0xMjgnOiAweGIyNTAsXG4gICdibGFrZTJzLTEzNic6IDB4YjI1MSxcbiAgJ2JsYWtlMnMtMTQ0JzogMHhiMjUyLFxuICAnYmxha2Uycy0xNTInOiAweGIyNTMsXG4gICdibGFrZTJzLTE2MCc6IDB4YjI1NCxcbiAgJ2JsYWtlMnMtMTY4JzogMHhiMjU1LFxuICAnYmxha2Uycy0xNzYnOiAweGIyNTYsXG4gICdibGFrZTJzLTE4NCc6IDB4YjI1NyxcbiAgJ2JsYWtlMnMtMTkyJzogMHhiMjU4LFxuICAnYmxha2Uycy0yMDAnOiAweGIyNTksXG4gICdibGFrZTJzLTIwOCc6IDB4YjI1YSxcbiAgJ2JsYWtlMnMtMjE2JzogMHhiMjViLFxuICAnYmxha2Uycy0yMjQnOiAweGIyNWMsXG4gICdibGFrZTJzLTIzMic6IDB4YjI1ZCxcbiAgJ2JsYWtlMnMtMjQwJzogMHhiMjVlLFxuICAnYmxha2Uycy0yNDgnOiAweGIyNWYsXG4gICdibGFrZTJzLTI1Nic6IDB4YjI2MCxcbiAgJ1NrZWluMjU2LTgnOiAweGIzMDEsXG4gICdTa2VpbjI1Ni0xNic6IDB4YjMwMixcbiAgJ1NrZWluMjU2LTI0JzogMHhiMzAzLFxuICAnU2tlaW4yNTYtMzInOiAweGIzMDQsXG4gICdTa2VpbjI1Ni00MCc6IDB4YjMwNSxcbiAgJ1NrZWluMjU2LTQ4JzogMHhiMzA2LFxuICAnU2tlaW4yNTYtNTYnOiAweGIzMDcsXG4gICdTa2VpbjI1Ni02NCc6IDB4YjMwOCxcbiAgJ1NrZWluMjU2LTcyJzogMHhiMzA5LFxuICAnU2tlaW4yNTYtODAnOiAweGIzMGEsXG4gICdTa2VpbjI1Ni04OCc6IDB4YjMwYixcbiAgJ1NrZWluMjU2LTk2JzogMHhiMzBjLFxuICAnU2tlaW4yNTYtMTA0JzogMHhiMzBkLFxuICAnU2tlaW4yNTYtMTEyJzogMHhiMzBlLFxuICAnU2tlaW4yNTYtMTIwJzogMHhiMzBmLFxuICAnU2tlaW4yNTYtMTI4JzogMHhiMzEwLFxuICAnU2tlaW4yNTYtMTM2JzogMHhiMzExLFxuICAnU2tlaW4yNTYtMTQ0JzogMHhiMzEyLFxuICAnU2tlaW4yNTYtMTUyJzogMHhiMzEzLFxuICAnU2tlaW4yNTYtMTYwJzogMHhiMzE0LFxuICAnU2tlaW4yNTYtMTY4JzogMHhiMzE1LFxuICAnU2tlaW4yNTYtMTc2JzogMHhiMzE2LFxuICAnU2tlaW4yNTYtMTg0JzogMHhiMzE3LFxuICAnU2tlaW4yNTYtMTkyJzogMHhiMzE4LFxuICAnU2tlaW4yNTYtMjAwJzogMHhiMzE5LFxuICAnU2tlaW4yNTYtMjA4JzogMHhiMzFhLFxuICAnU2tlaW4yNTYtMjE2JzogMHhiMzFiLFxuICAnU2tlaW4yNTYtMjI0JzogMHhiMzFjLFxuICAnU2tlaW4yNTYtMjMyJzogMHhiMzFkLFxuICAnU2tlaW4yNTYtMjQwJzogMHhiMzFlLFxuICAnU2tlaW4yNTYtMjQ4JzogMHhiMzFmLFxuICAnU2tlaW4yNTYtMjU2JzogMHhiMzIwLFxuICAnU2tlaW41MTItOCc6IDB4YjMyMSxcbiAgJ1NrZWluNTEyLTE2JzogMHhiMzIyLFxuICAnU2tlaW41MTItMjQnOiAweGIzMjMsXG4gICdTa2VpbjUxMi0zMic6IDB4YjMyNCxcbiAgJ1NrZWluNTEyLTQwJzogMHhiMzI1LFxuICAnU2tlaW41MTItNDgnOiAweGIzMjYsXG4gICdTa2VpbjUxMi01Nic6IDB4YjMyNyxcbiAgJ1NrZWluNTEyLTY0JzogMHhiMzI4LFxuICAnU2tlaW41MTItNzInOiAweGIzMjksXG4gICdTa2VpbjUxMi04MCc6IDB4YjMyYSxcbiAgJ1NrZWluNTEyLTg4JzogMHhiMzJiLFxuICAnU2tlaW41MTItOTYnOiAweGIzMmMsXG4gICdTa2VpbjUxMi0xMDQnOiAweGIzMmQsXG4gICdTa2VpbjUxMi0xMTInOiAweGIzMmUsXG4gICdTa2VpbjUxMi0xMjAnOiAweGIzMmYsXG4gICdTa2VpbjUxMi0xMjgnOiAweGIzMzAsXG4gICdTa2VpbjUxMi0xMzYnOiAweGIzMzEsXG4gICdTa2VpbjUxMi0xNDQnOiAweGIzMzIsXG4gICdTa2VpbjUxMi0xNTInOiAweGIzMzMsXG4gICdTa2VpbjUxMi0xNjAnOiAweGIzMzQsXG4gICdTa2VpbjUxMi0xNjgnOiAweGIzMzUsXG4gICdTa2VpbjUxMi0xNzYnOiAweGIzMzYsXG4gICdTa2VpbjUxMi0xODQnOiAweGIzMzcsXG4gICdTa2VpbjUxMi0xOTInOiAweGIzMzgsXG4gICdTa2VpbjUxMi0yMDAnOiAweGIzMzksXG4gICdTa2VpbjUxMi0yMDgnOiAweGIzM2EsXG4gICdTa2VpbjUxMi0yMTYnOiAweGIzM2IsXG4gICdTa2VpbjUxMi0yMjQnOiAweGIzM2MsXG4gICdTa2VpbjUxMi0yMzInOiAweGIzM2QsXG4gICdTa2VpbjUxMi0yNDAnOiAweGIzM2UsXG4gICdTa2VpbjUxMi0yNDgnOiAweGIzM2YsXG4gICdTa2VpbjUxMi0yNTYnOiAweGIzNDAsXG4gICdTa2VpbjUxMi0yNjQnOiAweGIzNDEsXG4gICdTa2VpbjUxMi0yNzInOiAweGIzNDIsXG4gICdTa2VpbjUxMi0yODAnOiAweGIzNDMsXG4gICdTa2VpbjUxMi0yODgnOiAweGIzNDQsXG4gICdTa2VpbjUxMi0yOTYnOiAweGIzNDUsXG4gICdTa2VpbjUxMi0zMDQnOiAweGIzNDYsXG4gICdTa2VpbjUxMi0zMTInOiAweGIzNDcsXG4gICdTa2VpbjUxMi0zMjAnOiAweGIzNDgsXG4gICdTa2VpbjUxMi0zMjgnOiAweGIzNDksXG4gICdTa2VpbjUxMi0zMzYnOiAweGIzNGEsXG4gICdTa2VpbjUxMi0zNDQnOiAweGIzNGIsXG4gICdTa2VpbjUxMi0zNTInOiAweGIzNGMsXG4gICdTa2VpbjUxMi0zNjAnOiAweGIzNGQsXG4gICdTa2VpbjUxMi0zNjgnOiAweGIzNGUsXG4gICdTa2VpbjUxMi0zNzYnOiAweGIzNGYsXG4gICdTa2VpbjUxMi0zODQnOiAweGIzNTAsXG4gICdTa2VpbjUxMi0zOTInOiAweGIzNTEsXG4gICdTa2VpbjUxMi00MDAnOiAweGIzNTIsXG4gICdTa2VpbjUxMi00MDgnOiAweGIzNTMsXG4gICdTa2VpbjUxMi00MTYnOiAweGIzNTQsXG4gICdTa2VpbjUxMi00MjQnOiAweGIzNTUsXG4gICdTa2VpbjUxMi00MzInOiAweGIzNTYsXG4gICdTa2VpbjUxMi00NDAnOiAweGIzNTcsXG4gICdTa2VpbjUxMi00NDgnOiAweGIzNTgsXG4gICdTa2VpbjUxMi00NTYnOiAweGIzNTksXG4gICdTa2VpbjUxMi00NjQnOiAweGIzNWEsXG4gICdTa2VpbjUxMi00NzInOiAweGIzNWIsXG4gICdTa2VpbjUxMi00ODAnOiAweGIzNWMsXG4gICdTa2VpbjUxMi00ODgnOiAweGIzNWQsXG4gICdTa2VpbjUxMi00OTYnOiAweGIzNWUsXG4gICdTa2VpbjUxMi01MDQnOiAweGIzNWYsXG4gICdTa2VpbjUxMi01MTInOiAweGIzNjAsXG4gICdTa2VpbjEwMjQtOCc6IDB4YjM2MSxcbiAgJ1NrZWluMTAyNC0xNic6IDB4YjM2MixcbiAgJ1NrZWluMTAyNC0yNCc6IDB4YjM2MyxcbiAgJ1NrZWluMTAyNC0zMic6IDB4YjM2NCxcbiAgJ1NrZWluMTAyNC00MCc6IDB4YjM2NSxcbiAgJ1NrZWluMTAyNC00OCc6IDB4YjM2NixcbiAgJ1NrZWluMTAyNC01Nic6IDB4YjM2NyxcbiAgJ1NrZWluMTAyNC02NCc6IDB4YjM2OCxcbiAgJ1NrZWluMTAyNC03Mic6IDB4YjM2OSxcbiAgJ1NrZWluMTAyNC04MCc6IDB4YjM2YSxcbiAgJ1NrZWluMTAyNC04OCc6IDB4YjM2YixcbiAgJ1NrZWluMTAyNC05Nic6IDB4YjM2YyxcbiAgJ1NrZWluMTAyNC0xMDQnOiAweGIzNmQsXG4gICdTa2VpbjEwMjQtMTEyJzogMHhiMzZlLFxuICAnU2tlaW4xMDI0LTEyMCc6IDB4YjM2ZixcbiAgJ1NrZWluMTAyNC0xMjgnOiAweGIzNzAsXG4gICdTa2VpbjEwMjQtMTM2JzogMHhiMzcxLFxuICAnU2tlaW4xMDI0LTE0NCc6IDB4YjM3MixcbiAgJ1NrZWluMTAyNC0xNTInOiAweGIzNzMsXG4gICdTa2VpbjEwMjQtMTYwJzogMHhiMzc0LFxuICAnU2tlaW4xMDI0LTE2OCc6IDB4YjM3NSxcbiAgJ1NrZWluMTAyNC0xNzYnOiAweGIzNzYsXG4gICdTa2VpbjEwMjQtMTg0JzogMHhiMzc3LFxuICAnU2tlaW4xMDI0LTE5Mic6IDB4YjM3OCxcbiAgJ1NrZWluMTAyNC0yMDAnOiAweGIzNzksXG4gICdTa2VpbjEwMjQtMjA4JzogMHhiMzdhLFxuICAnU2tlaW4xMDI0LTIxNic6IDB4YjM3YixcbiAgJ1NrZWluMTAyNC0yMjQnOiAweGIzN2MsXG4gICdTa2VpbjEwMjQtMjMyJzogMHhiMzdkLFxuICAnU2tlaW4xMDI0LTI0MCc6IDB4YjM3ZSxcbiAgJ1NrZWluMTAyNC0yNDgnOiAweGIzN2YsXG4gICdTa2VpbjEwMjQtMjU2JzogMHhiMzgwLFxuICAnU2tlaW4xMDI0LTI2NCc6IDB4YjM4MSxcbiAgJ1NrZWluMTAyNC0yNzInOiAweGIzODIsXG4gICdTa2VpbjEwMjQtMjgwJzogMHhiMzgzLFxuICAnU2tlaW4xMDI0LTI4OCc6IDB4YjM4NCxcbiAgJ1NrZWluMTAyNC0yOTYnOiAweGIzODUsXG4gICdTa2VpbjEwMjQtMzA0JzogMHhiMzg2LFxuICAnU2tlaW4xMDI0LTMxMic6IDB4YjM4NyxcbiAgJ1NrZWluMTAyNC0zMjAnOiAweGIzODgsXG4gICdTa2VpbjEwMjQtMzI4JzogMHhiMzg5LFxuICAnU2tlaW4xMDI0LTMzNic6IDB4YjM4YSxcbiAgJ1NrZWluMTAyNC0zNDQnOiAweGIzOGIsXG4gICdTa2VpbjEwMjQtMzUyJzogMHhiMzhjLFxuICAnU2tlaW4xMDI0LTM2MCc6IDB4YjM4ZCxcbiAgJ1NrZWluMTAyNC0zNjgnOiAweGIzOGUsXG4gICdTa2VpbjEwMjQtMzc2JzogMHhiMzhmLFxuICAnU2tlaW4xMDI0LTM4NCc6IDB4YjM5MCxcbiAgJ1NrZWluMTAyNC0zOTInOiAweGIzOTEsXG4gICdTa2VpbjEwMjQtNDAwJzogMHhiMzkyLFxuICAnU2tlaW4xMDI0LTQwOCc6IDB4YjM5MyxcbiAgJ1NrZWluMTAyNC00MTYnOiAweGIzOTQsXG4gICdTa2VpbjEwMjQtNDI0JzogMHhiMzk1LFxuICAnU2tlaW4xMDI0LTQzMic6IDB4YjM5NixcbiAgJ1NrZWluMTAyNC00NDAnOiAweGIzOTcsXG4gICdTa2VpbjEwMjQtNDQ4JzogMHhiMzk4LFxuICAnU2tlaW4xMDI0LTQ1Nic6IDB4YjM5OSxcbiAgJ1NrZWluMTAyNC00NjQnOiAweGIzOWEsXG4gICdTa2VpbjEwMjQtNDcyJzogMHhiMzliLFxuICAnU2tlaW4xMDI0LTQ4MCc6IDB4YjM5YyxcbiAgJ1NrZWluMTAyNC00ODgnOiAweGIzOWQsXG4gICdTa2VpbjEwMjQtNDk2JzogMHhiMzllLFxuICAnU2tlaW4xMDI0LTUwNCc6IDB4YjM5ZixcbiAgJ1NrZWluMTAyNC01MTInOiAweGIzYTAsXG4gICdTa2VpbjEwMjQtNTIwJzogMHhiM2ExLFxuICAnU2tlaW4xMDI0LTUyOCc6IDB4YjNhMixcbiAgJ1NrZWluMTAyNC01MzYnOiAweGIzYTMsXG4gICdTa2VpbjEwMjQtNTQ0JzogMHhiM2E0LFxuICAnU2tlaW4xMDI0LTU1Mic6IDB4YjNhNSxcbiAgJ1NrZWluMTAyNC01NjAnOiAweGIzYTYsXG4gICdTa2VpbjEwMjQtNTY4JzogMHhiM2E3LFxuICAnU2tlaW4xMDI0LTU3Nic6IDB4YjNhOCxcbiAgJ1NrZWluMTAyNC01ODQnOiAweGIzYTksXG4gICdTa2VpbjEwMjQtNTkyJzogMHhiM2FhLFxuICAnU2tlaW4xMDI0LTYwMCc6IDB4YjNhYixcbiAgJ1NrZWluMTAyNC02MDgnOiAweGIzYWMsXG4gICdTa2VpbjEwMjQtNjE2JzogMHhiM2FkLFxuICAnU2tlaW4xMDI0LTYyNCc6IDB4YjNhZSxcbiAgJ1NrZWluMTAyNC02MzInOiAweGIzYWYsXG4gICdTa2VpbjEwMjQtNjQwJzogMHhiM2IwLFxuICAnU2tlaW4xMDI0LTY0OCc6IDB4YjNiMSxcbiAgJ1NrZWluMTAyNC02NTYnOiAweGIzYjIsXG4gICdTa2VpbjEwMjQtNjY0JzogMHhiM2IzLFxuICAnU2tlaW4xMDI0LTY3Mic6IDB4YjNiNCxcbiAgJ1NrZWluMTAyNC02ODAnOiAweGIzYjUsXG4gICdTa2VpbjEwMjQtNjg4JzogMHhiM2I2LFxuICAnU2tlaW4xMDI0LTY5Nic6IDB4YjNiNyxcbiAgJ1NrZWluMTAyNC03MDQnOiAweGIzYjgsXG4gICdTa2VpbjEwMjQtNzEyJzogMHhiM2I5LFxuICAnU2tlaW4xMDI0LTcyMCc6IDB4YjNiYSxcbiAgJ1NrZWluMTAyNC03MjgnOiAweGIzYmIsXG4gICdTa2VpbjEwMjQtNzM2JzogMHhiM2JjLFxuICAnU2tlaW4xMDI0LTc0NCc6IDB4YjNiZCxcbiAgJ1NrZWluMTAyNC03NTInOiAweGIzYmUsXG4gICdTa2VpbjEwMjQtNzYwJzogMHhiM2JmLFxuICAnU2tlaW4xMDI0LTc2OCc6IDB4YjNjMCxcbiAgJ1NrZWluMTAyNC03NzYnOiAweGIzYzEsXG4gICdTa2VpbjEwMjQtNzg0JzogMHhiM2MyLFxuICAnU2tlaW4xMDI0LTc5Mic6IDB4YjNjMyxcbiAgJ1NrZWluMTAyNC04MDAnOiAweGIzYzQsXG4gICdTa2VpbjEwMjQtODA4JzogMHhiM2M1LFxuICAnU2tlaW4xMDI0LTgxNic6IDB4YjNjNixcbiAgJ1NrZWluMTAyNC04MjQnOiAweGIzYzcsXG4gICdTa2VpbjEwMjQtODMyJzogMHhiM2M4LFxuICAnU2tlaW4xMDI0LTg0MCc6IDB4YjNjOSxcbiAgJ1NrZWluMTAyNC04NDgnOiAweGIzY2EsXG4gICdTa2VpbjEwMjQtODU2JzogMHhiM2NiLFxuICAnU2tlaW4xMDI0LTg2NCc6IDB4YjNjYyxcbiAgJ1NrZWluMTAyNC04NzInOiAweGIzY2QsXG4gICdTa2VpbjEwMjQtODgwJzogMHhiM2NlLFxuICAnU2tlaW4xMDI0LTg4OCc6IDB4YjNjZixcbiAgJ1NrZWluMTAyNC04OTYnOiAweGIzZDAsXG4gICdTa2VpbjEwMjQtOTA0JzogMHhiM2QxLFxuICAnU2tlaW4xMDI0LTkxMic6IDB4YjNkMixcbiAgJ1NrZWluMTAyNC05MjAnOiAweGIzZDMsXG4gICdTa2VpbjEwMjQtOTI4JzogMHhiM2Q0LFxuICAnU2tlaW4xMDI0LTkzNic6IDB4YjNkNSxcbiAgJ1NrZWluMTAyNC05NDQnOiAweGIzZDYsXG4gICdTa2VpbjEwMjQtOTUyJzogMHhiM2Q3LFxuICAnU2tlaW4xMDI0LTk2MCc6IDB4YjNkOCxcbiAgJ1NrZWluMTAyNC05NjgnOiAweGIzZDksXG4gICdTa2VpbjEwMjQtOTc2JzogMHhiM2RhLFxuICAnU2tlaW4xMDI0LTk4NCc6IDB4YjNkYixcbiAgJ1NrZWluMTAyNC05OTInOiAweGIzZGMsXG4gICdTa2VpbjEwMjQtMTAwMCc6IDB4YjNkZCxcbiAgJ1NrZWluMTAyNC0xMDA4JzogMHhiM2RlLFxuICAnU2tlaW4xMDI0LTEwMTYnOiAweGIzZGYsXG4gICdTa2VpbjEwMjQtMTAyNCc6IDB4YjNlMFxufSlcblxuZXhwb3J0cy5jb2RlcyA9IE9iamVjdC5mcmVlemUoe1xuICAweDA6ICdpZGVudGl0eScsXG5cbiAgLy8gc2hhIGZhbWlseVxuICAweDExOiAnc2hhMScsXG4gIDB4MTI6ICdzaGEyLTI1NicsXG4gIDB4MTM6ICdzaGEyLTUxMicsXG4gIDB4NTY6ICdkYmwtc2hhMi0yNTYnLFxuICAweDE3OiAnc2hhMy0yMjQnLFxuICAweDE2OiAnc2hhMy0yNTYnLFxuICAweDE1OiAnc2hhMy0zODQnLFxuICAweDE0OiAnc2hhMy01MTInLFxuICAweDE4OiAnc2hha2UtMTI4JyxcbiAgMHgxOTogJ3NoYWtlLTI1NicsXG4gIDB4MUE6ICdrZWNjYWstMjI0JyxcbiAgMHgxQjogJ2tlY2Nhay0yNTYnLFxuICAweDFDOiAna2VjY2FrLTM4NCcsXG4gIDB4MUQ6ICdrZWNjYWstNTEyJyxcblxuICAweDIyOiAnbXVybXVyMy0xMjgnLFxuICAweDIzOiAnbXVybXVyMy0zMicsXG5cbiAgLy8gYmxha2UyXG4gIDB4YjIwMTogJ2JsYWtlMmItOCcsXG4gIDB4YjIwMjogJ2JsYWtlMmItMTYnLFxuICAweGIyMDM6ICdibGFrZTJiLTI0JyxcbiAgMHhiMjA0OiAnYmxha2UyYi0zMicsXG4gIDB4YjIwNTogJ2JsYWtlMmItNDAnLFxuICAweGIyMDY6ICdibGFrZTJiLTQ4JyxcbiAgMHhiMjA3OiAnYmxha2UyYi01NicsXG4gIDB4YjIwODogJ2JsYWtlMmItNjQnLFxuICAweGIyMDk6ICdibGFrZTJiLTcyJyxcbiAgMHhiMjBhOiAnYmxha2UyYi04MCcsXG4gIDB4YjIwYjogJ2JsYWtlMmItODgnLFxuICAweGIyMGM6ICdibGFrZTJiLTk2JyxcbiAgMHhiMjBkOiAnYmxha2UyYi0xMDQnLFxuICAweGIyMGU6ICdibGFrZTJiLTExMicsXG4gIDB4YjIwZjogJ2JsYWtlMmItMTIwJyxcbiAgMHhiMjEwOiAnYmxha2UyYi0xMjgnLFxuICAweGIyMTE6ICdibGFrZTJiLTEzNicsXG4gIDB4YjIxMjogJ2JsYWtlMmItMTQ0JyxcbiAgMHhiMjEzOiAnYmxha2UyYi0xNTInLFxuICAweGIyMTQ6ICdibGFrZTJiLTE2MCcsXG4gIDB4YjIxNTogJ2JsYWtlMmItMTY4JyxcbiAgMHhiMjE2OiAnYmxha2UyYi0xNzYnLFxuICAweGIyMTc6ICdibGFrZTJiLTE4NCcsXG4gIDB4YjIxODogJ2JsYWtlMmItMTkyJyxcbiAgMHhiMjE5OiAnYmxha2UyYi0yMDAnLFxuICAweGIyMWE6ICdibGFrZTJiLTIwOCcsXG4gIDB4YjIxYjogJ2JsYWtlMmItMjE2JyxcbiAgMHhiMjFjOiAnYmxha2UyYi0yMjQnLFxuICAweGIyMWQ6ICdibGFrZTJiLTIzMicsXG4gIDB4YjIxZTogJ2JsYWtlMmItMjQwJyxcbiAgMHhiMjFmOiAnYmxha2UyYi0yNDgnLFxuICAweGIyMjA6ICdibGFrZTJiLTI1NicsXG4gIDB4YjIyMTogJ2JsYWtlMmItMjY0JyxcbiAgMHhiMjIyOiAnYmxha2UyYi0yNzInLFxuICAweGIyMjM6ICdibGFrZTJiLTI4MCcsXG4gIDB4YjIyNDogJ2JsYWtlMmItMjg4JyxcbiAgMHhiMjI1OiAnYmxha2UyYi0yOTYnLFxuICAweGIyMjY6ICdibGFrZTJiLTMwNCcsXG4gIDB4YjIyNzogJ2JsYWtlMmItMzEyJyxcbiAgMHhiMjI4OiAnYmxha2UyYi0zMjAnLFxuICAweGIyMjk6ICdibGFrZTJiLTMyOCcsXG4gIDB4YjIyYTogJ2JsYWtlMmItMzM2JyxcbiAgMHhiMjJiOiAnYmxha2UyYi0zNDQnLFxuICAweGIyMmM6ICdibGFrZTJiLTM1MicsXG4gIDB4YjIyZDogJ2JsYWtlMmItMzYwJyxcbiAgMHhiMjJlOiAnYmxha2UyYi0zNjgnLFxuICAweGIyMmY6ICdibGFrZTJiLTM3NicsXG4gIDB4YjIzMDogJ2JsYWtlMmItMzg0JyxcbiAgMHhiMjMxOiAnYmxha2UyYi0zOTInLFxuICAweGIyMzI6ICdibGFrZTJiLTQwMCcsXG4gIDB4YjIzMzogJ2JsYWtlMmItNDA4JyxcbiAgMHhiMjM0OiAnYmxha2UyYi00MTYnLFxuICAweGIyMzU6ICdibGFrZTJiLTQyNCcsXG4gIDB4YjIzNjogJ2JsYWtlMmItNDMyJyxcbiAgMHhiMjM3OiAnYmxha2UyYi00NDAnLFxuICAweGIyMzg6ICdibGFrZTJiLTQ0OCcsXG4gIDB4YjIzOTogJ2JsYWtlMmItNDU2JyxcbiAgMHhiMjNhOiAnYmxha2UyYi00NjQnLFxuICAweGIyM2I6ICdibGFrZTJiLTQ3MicsXG4gIDB4YjIzYzogJ2JsYWtlMmItNDgwJyxcbiAgMHhiMjNkOiAnYmxha2UyYi00ODgnLFxuICAweGIyM2U6ICdibGFrZTJiLTQ5NicsXG4gIDB4YjIzZjogJ2JsYWtlMmItNTA0JyxcbiAgMHhiMjQwOiAnYmxha2UyYi01MTInLFxuICAweGIyNDE6ICdibGFrZTJzLTgnLFxuICAweGIyNDI6ICdibGFrZTJzLTE2JyxcbiAgMHhiMjQzOiAnYmxha2Uycy0yNCcsXG4gIDB4YjI0NDogJ2JsYWtlMnMtMzInLFxuICAweGIyNDU6ICdibGFrZTJzLTQwJyxcbiAgMHhiMjQ2OiAnYmxha2Uycy00OCcsXG4gIDB4YjI0NzogJ2JsYWtlMnMtNTYnLFxuICAweGIyNDg6ICdibGFrZTJzLTY0JyxcbiAgMHhiMjQ5OiAnYmxha2Uycy03MicsXG4gIDB4YjI0YTogJ2JsYWtlMnMtODAnLFxuICAweGIyNGI6ICdibGFrZTJzLTg4JyxcbiAgMHhiMjRjOiAnYmxha2Uycy05NicsXG4gIDB4YjI0ZDogJ2JsYWtlMnMtMTA0JyxcbiAgMHhiMjRlOiAnYmxha2Uycy0xMTInLFxuICAweGIyNGY6ICdibGFrZTJzLTEyMCcsXG4gIDB4YjI1MDogJ2JsYWtlMnMtMTI4JyxcbiAgMHhiMjUxOiAnYmxha2Uycy0xMzYnLFxuICAweGIyNTI6ICdibGFrZTJzLTE0NCcsXG4gIDB4YjI1MzogJ2JsYWtlMnMtMTUyJyxcbiAgMHhiMjU0OiAnYmxha2Uycy0xNjAnLFxuICAweGIyNTU6ICdibGFrZTJzLTE2OCcsXG4gIDB4YjI1NjogJ2JsYWtlMnMtMTc2JyxcbiAgMHhiMjU3OiAnYmxha2Uycy0xODQnLFxuICAweGIyNTg6ICdibGFrZTJzLTE5MicsXG4gIDB4YjI1OTogJ2JsYWtlMnMtMjAwJyxcbiAgMHhiMjVhOiAnYmxha2Uycy0yMDgnLFxuICAweGIyNWI6ICdibGFrZTJzLTIxNicsXG4gIDB4YjI1YzogJ2JsYWtlMnMtMjI0JyxcbiAgMHhiMjVkOiAnYmxha2Uycy0yMzInLFxuICAweGIyNWU6ICdibGFrZTJzLTI0MCcsXG4gIDB4YjI1ZjogJ2JsYWtlMnMtMjQ4JyxcbiAgMHhiMjYwOiAnYmxha2Uycy0yNTYnLFxuXG4gIC8vIHNrZWluXG4gIDB4YjMwMTogJ1NrZWluMjU2LTgnLFxuICAweGIzMDI6ICdTa2VpbjI1Ni0xNicsXG4gIDB4YjMwMzogJ1NrZWluMjU2LTI0JyxcbiAgMHhiMzA0OiAnU2tlaW4yNTYtMzInLFxuICAweGIzMDU6ICdTa2VpbjI1Ni00MCcsXG4gIDB4YjMwNjogJ1NrZWluMjU2LTQ4JyxcbiAgMHhiMzA3OiAnU2tlaW4yNTYtNTYnLFxuICAweGIzMDg6ICdTa2VpbjI1Ni02NCcsXG4gIDB4YjMwOTogJ1NrZWluMjU2LTcyJyxcbiAgMHhiMzBhOiAnU2tlaW4yNTYtODAnLFxuICAweGIzMGI6ICdTa2VpbjI1Ni04OCcsXG4gIDB4YjMwYzogJ1NrZWluMjU2LTk2JyxcbiAgMHhiMzBkOiAnU2tlaW4yNTYtMTA0JyxcbiAgMHhiMzBlOiAnU2tlaW4yNTYtMTEyJyxcbiAgMHhiMzBmOiAnU2tlaW4yNTYtMTIwJyxcbiAgMHhiMzEwOiAnU2tlaW4yNTYtMTI4JyxcbiAgMHhiMzExOiAnU2tlaW4yNTYtMTM2JyxcbiAgMHhiMzEyOiAnU2tlaW4yNTYtMTQ0JyxcbiAgMHhiMzEzOiAnU2tlaW4yNTYtMTUyJyxcbiAgMHhiMzE0OiAnU2tlaW4yNTYtMTYwJyxcbiAgMHhiMzE1OiAnU2tlaW4yNTYtMTY4JyxcbiAgMHhiMzE2OiAnU2tlaW4yNTYtMTc2JyxcbiAgMHhiMzE3OiAnU2tlaW4yNTYtMTg0JyxcbiAgMHhiMzE4OiAnU2tlaW4yNTYtMTkyJyxcbiAgMHhiMzE5OiAnU2tlaW4yNTYtMjAwJyxcbiAgMHhiMzFhOiAnU2tlaW4yNTYtMjA4JyxcbiAgMHhiMzFiOiAnU2tlaW4yNTYtMjE2JyxcbiAgMHhiMzFjOiAnU2tlaW4yNTYtMjI0JyxcbiAgMHhiMzFkOiAnU2tlaW4yNTYtMjMyJyxcbiAgMHhiMzFlOiAnU2tlaW4yNTYtMjQwJyxcbiAgMHhiMzFmOiAnU2tlaW4yNTYtMjQ4JyxcbiAgMHhiMzIwOiAnU2tlaW4yNTYtMjU2JyxcbiAgMHhiMzIxOiAnU2tlaW41MTItOCcsXG4gIDB4YjMyMjogJ1NrZWluNTEyLTE2JyxcbiAgMHhiMzIzOiAnU2tlaW41MTItMjQnLFxuICAweGIzMjQ6ICdTa2VpbjUxMi0zMicsXG4gIDB4YjMyNTogJ1NrZWluNTEyLTQwJyxcbiAgMHhiMzI2OiAnU2tlaW41MTItNDgnLFxuICAweGIzMjc6ICdTa2VpbjUxMi01NicsXG4gIDB4YjMyODogJ1NrZWluNTEyLTY0JyxcbiAgMHhiMzI5OiAnU2tlaW41MTItNzInLFxuICAweGIzMmE6ICdTa2VpbjUxMi04MCcsXG4gIDB4YjMyYjogJ1NrZWluNTEyLTg4JyxcbiAgMHhiMzJjOiAnU2tlaW41MTItOTYnLFxuICAweGIzMmQ6ICdTa2VpbjUxMi0xMDQnLFxuICAweGIzMmU6ICdTa2VpbjUxMi0xMTInLFxuICAweGIzMmY6ICdTa2VpbjUxMi0xMjAnLFxuICAweGIzMzA6ICdTa2VpbjUxMi0xMjgnLFxuICAweGIzMzE6ICdTa2VpbjUxMi0xMzYnLFxuICAweGIzMzI6ICdTa2VpbjUxMi0xNDQnLFxuICAweGIzMzM6ICdTa2VpbjUxMi0xNTInLFxuICAweGIzMzQ6ICdTa2VpbjUxMi0xNjAnLFxuICAweGIzMzU6ICdTa2VpbjUxMi0xNjgnLFxuICAweGIzMzY6ICdTa2VpbjUxMi0xNzYnLFxuICAweGIzMzc6ICdTa2VpbjUxMi0xODQnLFxuICAweGIzMzg6ICdTa2VpbjUxMi0xOTInLFxuICAweGIzMzk6ICdTa2VpbjUxMi0yMDAnLFxuICAweGIzM2E6ICdTa2VpbjUxMi0yMDgnLFxuICAweGIzM2I6ICdTa2VpbjUxMi0yMTYnLFxuICAweGIzM2M6ICdTa2VpbjUxMi0yMjQnLFxuICAweGIzM2Q6ICdTa2VpbjUxMi0yMzInLFxuICAweGIzM2U6ICdTa2VpbjUxMi0yNDAnLFxuICAweGIzM2Y6ICdTa2VpbjUxMi0yNDgnLFxuICAweGIzNDA6ICdTa2VpbjUxMi0yNTYnLFxuICAweGIzNDE6ICdTa2VpbjUxMi0yNjQnLFxuICAweGIzNDI6ICdTa2VpbjUxMi0yNzInLFxuICAweGIzNDM6ICdTa2VpbjUxMi0yODAnLFxuICAweGIzNDQ6ICdTa2VpbjUxMi0yODgnLFxuICAweGIzNDU6ICdTa2VpbjUxMi0yOTYnLFxuICAweGIzNDY6ICdTa2VpbjUxMi0zMDQnLFxuICAweGIzNDc6ICdTa2VpbjUxMi0zMTInLFxuICAweGIzNDg6ICdTa2VpbjUxMi0zMjAnLFxuICAweGIzNDk6ICdTa2VpbjUxMi0zMjgnLFxuICAweGIzNGE6ICdTa2VpbjUxMi0zMzYnLFxuICAweGIzNGI6ICdTa2VpbjUxMi0zNDQnLFxuICAweGIzNGM6ICdTa2VpbjUxMi0zNTInLFxuICAweGIzNGQ6ICdTa2VpbjUxMi0zNjAnLFxuICAweGIzNGU6ICdTa2VpbjUxMi0zNjgnLFxuICAweGIzNGY6ICdTa2VpbjUxMi0zNzYnLFxuICAweGIzNTA6ICdTa2VpbjUxMi0zODQnLFxuICAweGIzNTE6ICdTa2VpbjUxMi0zOTInLFxuICAweGIzNTI6ICdTa2VpbjUxMi00MDAnLFxuICAweGIzNTM6ICdTa2VpbjUxMi00MDgnLFxuICAweGIzNTQ6ICdTa2VpbjUxMi00MTYnLFxuICAweGIzNTU6ICdTa2VpbjUxMi00MjQnLFxuICAweGIzNTY6ICdTa2VpbjUxMi00MzInLFxuICAweGIzNTc6ICdTa2VpbjUxMi00NDAnLFxuICAweGIzNTg6ICdTa2VpbjUxMi00NDgnLFxuICAweGIzNTk6ICdTa2VpbjUxMi00NTYnLFxuICAweGIzNWE6ICdTa2VpbjUxMi00NjQnLFxuICAweGIzNWI6ICdTa2VpbjUxMi00NzInLFxuICAweGIzNWM6ICdTa2VpbjUxMi00ODAnLFxuICAweGIzNWQ6ICdTa2VpbjUxMi00ODgnLFxuICAweGIzNWU6ICdTa2VpbjUxMi00OTYnLFxuICAweGIzNWY6ICdTa2VpbjUxMi01MDQnLFxuICAweGIzNjA6ICdTa2VpbjUxMi01MTInLFxuICAweGIzNjE6ICdTa2VpbjEwMjQtOCcsXG4gIDB4YjM2MjogJ1NrZWluMTAyNC0xNicsXG4gIDB4YjM2MzogJ1NrZWluMTAyNC0yNCcsXG4gIDB4YjM2NDogJ1NrZWluMTAyNC0zMicsXG4gIDB4YjM2NTogJ1NrZWluMTAyNC00MCcsXG4gIDB4YjM2NjogJ1NrZWluMTAyNC00OCcsXG4gIDB4YjM2NzogJ1NrZWluMTAyNC01NicsXG4gIDB4YjM2ODogJ1NrZWluMTAyNC02NCcsXG4gIDB4YjM2OTogJ1NrZWluMTAyNC03MicsXG4gIDB4YjM2YTogJ1NrZWluMTAyNC04MCcsXG4gIDB4YjM2YjogJ1NrZWluMTAyNC04OCcsXG4gIDB4YjM2YzogJ1NrZWluMTAyNC05NicsXG4gIDB4YjM2ZDogJ1NrZWluMTAyNC0xMDQnLFxuICAweGIzNmU6ICdTa2VpbjEwMjQtMTEyJyxcbiAgMHhiMzZmOiAnU2tlaW4xMDI0LTEyMCcsXG4gIDB4YjM3MDogJ1NrZWluMTAyNC0xMjgnLFxuICAweGIzNzE6ICdTa2VpbjEwMjQtMTM2JyxcbiAgMHhiMzcyOiAnU2tlaW4xMDI0LTE0NCcsXG4gIDB4YjM3MzogJ1NrZWluMTAyNC0xNTInLFxuICAweGIzNzQ6ICdTa2VpbjEwMjQtMTYwJyxcbiAgMHhiMzc1OiAnU2tlaW4xMDI0LTE2OCcsXG4gIDB4YjM3NjogJ1NrZWluMTAyNC0xNzYnLFxuICAweGIzNzc6ICdTa2VpbjEwMjQtMTg0JyxcbiAgMHhiMzc4OiAnU2tlaW4xMDI0LTE5MicsXG4gIDB4YjM3OTogJ1NrZWluMTAyNC0yMDAnLFxuICAweGIzN2E6ICdTa2VpbjEwMjQtMjA4JyxcbiAgMHhiMzdiOiAnU2tlaW4xMDI0LTIxNicsXG4gIDB4YjM3YzogJ1NrZWluMTAyNC0yMjQnLFxuICAweGIzN2Q6ICdTa2VpbjEwMjQtMjMyJyxcbiAgMHhiMzdlOiAnU2tlaW4xMDI0LTI0MCcsXG4gIDB4YjM3ZjogJ1NrZWluMTAyNC0yNDgnLFxuICAweGIzODA6ICdTa2VpbjEwMjQtMjU2JyxcbiAgMHhiMzgxOiAnU2tlaW4xMDI0LTI2NCcsXG4gIDB4YjM4MjogJ1NrZWluMTAyNC0yNzInLFxuICAweGIzODM6ICdTa2VpbjEwMjQtMjgwJyxcbiAgMHhiMzg0OiAnU2tlaW4xMDI0LTI4OCcsXG4gIDB4YjM4NTogJ1NrZWluMTAyNC0yOTYnLFxuICAweGIzODY6ICdTa2VpbjEwMjQtMzA0JyxcbiAgMHhiMzg3OiAnU2tlaW4xMDI0LTMxMicsXG4gIDB4YjM4ODogJ1NrZWluMTAyNC0zMjAnLFxuICAweGIzODk6ICdTa2VpbjEwMjQtMzI4JyxcbiAgMHhiMzhhOiAnU2tlaW4xMDI0LTMzNicsXG4gIDB4YjM4YjogJ1NrZWluMTAyNC0zNDQnLFxuICAweGIzOGM6ICdTa2VpbjEwMjQtMzUyJyxcbiAgMHhiMzhkOiAnU2tlaW4xMDI0LTM2MCcsXG4gIDB4YjM4ZTogJ1NrZWluMTAyNC0zNjgnLFxuICAweGIzOGY6ICdTa2VpbjEwMjQtMzc2JyxcbiAgMHhiMzkwOiAnU2tlaW4xMDI0LTM4NCcsXG4gIDB4YjM5MTogJ1NrZWluMTAyNC0zOTInLFxuICAweGIzOTI6ICdTa2VpbjEwMjQtNDAwJyxcbiAgMHhiMzkzOiAnU2tlaW4xMDI0LTQwOCcsXG4gIDB4YjM5NDogJ1NrZWluMTAyNC00MTYnLFxuICAweGIzOTU6ICdTa2VpbjEwMjQtNDI0JyxcbiAgMHhiMzk2OiAnU2tlaW4xMDI0LTQzMicsXG4gIDB4YjM5NzogJ1NrZWluMTAyNC00NDAnLFxuICAweGIzOTg6ICdTa2VpbjEwMjQtNDQ4JyxcbiAgMHhiMzk5OiAnU2tlaW4xMDI0LTQ1NicsXG4gIDB4YjM5YTogJ1NrZWluMTAyNC00NjQnLFxuICAweGIzOWI6ICdTa2VpbjEwMjQtNDcyJyxcbiAgMHhiMzljOiAnU2tlaW4xMDI0LTQ4MCcsXG4gIDB4YjM5ZDogJ1NrZWluMTAyNC00ODgnLFxuICAweGIzOWU6ICdTa2VpbjEwMjQtNDk2JyxcbiAgMHhiMzlmOiAnU2tlaW4xMDI0LTUwNCcsXG4gIDB4YjNhMDogJ1NrZWluMTAyNC01MTInLFxuICAweGIzYTE6ICdTa2VpbjEwMjQtNTIwJyxcbiAgMHhiM2EyOiAnU2tlaW4xMDI0LTUyOCcsXG4gIDB4YjNhMzogJ1NrZWluMTAyNC01MzYnLFxuICAweGIzYTQ6ICdTa2VpbjEwMjQtNTQ0JyxcbiAgMHhiM2E1OiAnU2tlaW4xMDI0LTU1MicsXG4gIDB4YjNhNjogJ1NrZWluMTAyNC01NjAnLFxuICAweGIzYTc6ICdTa2VpbjEwMjQtNTY4JyxcbiAgMHhiM2E4OiAnU2tlaW4xMDI0LTU3NicsXG4gIDB4YjNhOTogJ1NrZWluMTAyNC01ODQnLFxuICAweGIzYWE6ICdTa2VpbjEwMjQtNTkyJyxcbiAgMHhiM2FiOiAnU2tlaW4xMDI0LTYwMCcsXG4gIDB4YjNhYzogJ1NrZWluMTAyNC02MDgnLFxuICAweGIzYWQ6ICdTa2VpbjEwMjQtNjE2JyxcbiAgMHhiM2FlOiAnU2tlaW4xMDI0LTYyNCcsXG4gIDB4YjNhZjogJ1NrZWluMTAyNC02MzInLFxuICAweGIzYjA6ICdTa2VpbjEwMjQtNjQwJyxcbiAgMHhiM2IxOiAnU2tlaW4xMDI0LTY0OCcsXG4gIDB4YjNiMjogJ1NrZWluMTAyNC02NTYnLFxuICAweGIzYjM6ICdTa2VpbjEwMjQtNjY0JyxcbiAgMHhiM2I0OiAnU2tlaW4xMDI0LTY3MicsXG4gIDB4YjNiNTogJ1NrZWluMTAyNC02ODAnLFxuICAweGIzYjY6ICdTa2VpbjEwMjQtNjg4JyxcbiAgMHhiM2I3OiAnU2tlaW4xMDI0LTY5NicsXG4gIDB4YjNiODogJ1NrZWluMTAyNC03MDQnLFxuICAweGIzYjk6ICdTa2VpbjEwMjQtNzEyJyxcbiAgMHhiM2JhOiAnU2tlaW4xMDI0LTcyMCcsXG4gIDB4YjNiYjogJ1NrZWluMTAyNC03MjgnLFxuICAweGIzYmM6ICdTa2VpbjEwMjQtNzM2JyxcbiAgMHhiM2JkOiAnU2tlaW4xMDI0LTc0NCcsXG4gIDB4YjNiZTogJ1NrZWluMTAyNC03NTInLFxuICAweGIzYmY6ICdTa2VpbjEwMjQtNzYwJyxcbiAgMHhiM2MwOiAnU2tlaW4xMDI0LTc2OCcsXG4gIDB4YjNjMTogJ1NrZWluMTAyNC03NzYnLFxuICAweGIzYzI6ICdTa2VpbjEwMjQtNzg0JyxcbiAgMHhiM2MzOiAnU2tlaW4xMDI0LTc5MicsXG4gIDB4YjNjNDogJ1NrZWluMTAyNC04MDAnLFxuICAweGIzYzU6ICdTa2VpbjEwMjQtODA4JyxcbiAgMHhiM2M2OiAnU2tlaW4xMDI0LTgxNicsXG4gIDB4YjNjNzogJ1NrZWluMTAyNC04MjQnLFxuICAweGIzYzg6ICdTa2VpbjEwMjQtODMyJyxcbiAgMHhiM2M5OiAnU2tlaW4xMDI0LTg0MCcsXG4gIDB4YjNjYTogJ1NrZWluMTAyNC04NDgnLFxuICAweGIzY2I6ICdTa2VpbjEwMjQtODU2JyxcbiAgMHhiM2NjOiAnU2tlaW4xMDI0LTg2NCcsXG4gIDB4YjNjZDogJ1NrZWluMTAyNC04NzInLFxuICAweGIzY2U6ICdTa2VpbjEwMjQtODgwJyxcbiAgMHhiM2NmOiAnU2tlaW4xMDI0LTg4OCcsXG4gIDB4YjNkMDogJ1NrZWluMTAyNC04OTYnLFxuICAweGIzZDE6ICdTa2VpbjEwMjQtOTA0JyxcbiAgMHhiM2QyOiAnU2tlaW4xMDI0LTkxMicsXG4gIDB4YjNkMzogJ1NrZWluMTAyNC05MjAnLFxuICAweGIzZDQ6ICdTa2VpbjEwMjQtOTI4JyxcbiAgMHhiM2Q1OiAnU2tlaW4xMDI0LTkzNicsXG4gIDB4YjNkNjogJ1NrZWluMTAyNC05NDQnLFxuICAweGIzZDc6ICdTa2VpbjEwMjQtOTUyJyxcbiAgMHhiM2Q4OiAnU2tlaW4xMDI0LTk2MCcsXG4gIDB4YjNkOTogJ1NrZWluMTAyNC05NjgnLFxuICAweGIzZGE6ICdTa2VpbjEwMjQtOTc2JyxcbiAgMHhiM2RiOiAnU2tlaW4xMDI0LTk4NCcsXG4gIDB4YjNkYzogJ1NrZWluMTAyNC05OTInLFxuICAweGIzZGQ6ICdTa2VpbjEwMjQtMTAwMCcsXG4gIDB4YjNkZTogJ1NrZWluMTAyNC0xMDA4JyxcbiAgMHhiM2RmOiAnU2tlaW4xMDI0LTEwMTYnLFxuICAweGIzZTA6ICdTa2VpbjEwMjQtMTAyNCdcbn0pXG5cbmV4cG9ydHMuZGVmYXVsdExlbmd0aHMgPSBPYmplY3QuZnJlZXplKHtcbiAgMHgxMTogMjAsXG4gIDB4MTI6IDMyLFxuICAweDEzOiA2NCxcbiAgMHg1NjogMzIsXG4gIDB4MTc6IDI4LFxuICAweDE2OiAzMixcbiAgMHgxNTogNDgsXG4gIDB4MTQ6IDY0LFxuICAweDE4OiAzMixcbiAgMHgxOTogNjQsXG4gIDB4MUE6IDI4LFxuICAweDFCOiAzMixcbiAgMHgxQzogNDgsXG4gIDB4MUQ6IDY0LFxuICAweDIyOiAzMixcblxuICAweGIyMDE6IDB4MDEsXG4gIDB4YjIwMjogMHgwMixcbiAgMHhiMjAzOiAweDAzLFxuICAweGIyMDQ6IDB4MDQsXG4gIDB4YjIwNTogMHgwNSxcbiAgMHhiMjA2OiAweDA2LFxuICAweGIyMDc6IDB4MDcsXG4gIDB4YjIwODogMHgwOCxcbiAgMHhiMjA5OiAweDA5LFxuICAweGIyMGE6IDB4MGEsXG4gIDB4YjIwYjogMHgwYixcbiAgMHhiMjBjOiAweDBjLFxuICAweGIyMGQ6IDB4MGQsXG4gIDB4YjIwZTogMHgwZSxcbiAgMHhiMjBmOiAweDBmLFxuICAweGIyMTA6IDB4MTAsXG4gIDB4YjIxMTogMHgxMSxcbiAgMHhiMjEyOiAweDEyLFxuICAweGIyMTM6IDB4MTMsXG4gIDB4YjIxNDogMHgxNCxcbiAgMHhiMjE1OiAweDE1LFxuICAweGIyMTY6IDB4MTYsXG4gIDB4YjIxNzogMHgxNyxcbiAgMHhiMjE4OiAweDE4LFxuICAweGIyMTk6IDB4MTksXG4gIDB4YjIxYTogMHgxYSxcbiAgMHhiMjFiOiAweDFiLFxuICAweGIyMWM6IDB4MWMsXG4gIDB4YjIxZDogMHgxZCxcbiAgMHhiMjFlOiAweDFlLFxuICAweGIyMWY6IDB4MWYsXG4gIDB4YjIyMDogMHgyMCxcbiAgMHhiMjIxOiAweDIxLFxuICAweGIyMjI6IDB4MjIsXG4gIDB4YjIyMzogMHgyMyxcbiAgMHhiMjI0OiAweDI0LFxuICAweGIyMjU6IDB4MjUsXG4gIDB4YjIyNjogMHgyNixcbiAgMHhiMjI3OiAweDI3LFxuICAweGIyMjg6IDB4MjgsXG4gIDB4YjIyOTogMHgyOSxcbiAgMHhiMjJhOiAweDJhLFxuICAweGIyMmI6IDB4MmIsXG4gIDB4YjIyYzogMHgyYyxcbiAgMHhiMjJkOiAweDJkLFxuICAweGIyMmU6IDB4MmUsXG4gIDB4YjIyZjogMHgyZixcbiAgMHhiMjMwOiAweDMwLFxuICAweGIyMzE6IDB4MzEsXG4gIDB4YjIzMjogMHgzMixcbiAgMHhiMjMzOiAweDMzLFxuICAweGIyMzQ6IDB4MzQsXG4gIDB4YjIzNTogMHgzNSxcbiAgMHhiMjM2OiAweDM2LFxuICAweGIyMzc6IDB4MzcsXG4gIDB4YjIzODogMHgzOCxcbiAgMHhiMjM5OiAweDM5LFxuICAweGIyM2E6IDB4M2EsXG4gIDB4YjIzYjogMHgzYixcbiAgMHhiMjNjOiAweDNjLFxuICAweGIyM2Q6IDB4M2QsXG4gIDB4YjIzZTogMHgzZSxcbiAgMHhiMjNmOiAweDNmLFxuICAweGIyNDA6IDB4NDAsXG4gIDB4YjI0MTogMHgwMSxcbiAgMHhiMjQyOiAweDAyLFxuICAweGIyNDM6IDB4MDMsXG4gIDB4YjI0NDogMHgwNCxcbiAgMHhiMjQ1OiAweDA1LFxuICAweGIyNDY6IDB4MDYsXG4gIDB4YjI0NzogMHgwNyxcbiAgMHhiMjQ4OiAweDA4LFxuICAweGIyNDk6IDB4MDksXG4gIDB4YjI0YTogMHgwYSxcbiAgMHhiMjRiOiAweDBiLFxuICAweGIyNGM6IDB4MGMsXG4gIDB4YjI0ZDogMHgwZCxcbiAgMHhiMjRlOiAweDBlLFxuICAweGIyNGY6IDB4MGYsXG4gIDB4YjI1MDogMHgxMCxcbiAgMHhiMjUxOiAweDExLFxuICAweGIyNTI6IDB4MTIsXG4gIDB4YjI1MzogMHgxMyxcbiAgMHhiMjU0OiAweDE0LFxuICAweGIyNTU6IDB4MTUsXG4gIDB4YjI1NjogMHgxNixcbiAgMHhiMjU3OiAweDE3LFxuICAweGIyNTg6IDB4MTgsXG4gIDB4YjI1OTogMHgxOSxcbiAgMHhiMjVhOiAweDFhLFxuICAweGIyNWI6IDB4MWIsXG4gIDB4YjI1YzogMHgxYyxcbiAgMHhiMjVkOiAweDFkLFxuICAweGIyNWU6IDB4MWUsXG4gIDB4YjI1ZjogMHgxZixcbiAgMHhiMjYwOiAweDIwLFxuICAweGIzMDE6IDB4MDEsXG4gIDB4YjMwMjogMHgwMixcbiAgMHhiMzAzOiAweDAzLFxuICAweGIzMDQ6IDB4MDQsXG4gIDB4YjMwNTogMHgwNSxcbiAgMHhiMzA2OiAweDA2LFxuICAweGIzMDc6IDB4MDcsXG4gIDB4YjMwODogMHgwOCxcbiAgMHhiMzA5OiAweDA5LFxuICAweGIzMGE6IDB4MGEsXG4gIDB4YjMwYjogMHgwYixcbiAgMHhiMzBjOiAweDBjLFxuICAweGIzMGQ6IDB4MGQsXG4gIDB4YjMwZTogMHgwZSxcbiAgMHhiMzBmOiAweDBmLFxuICAweGIzMTA6IDB4MTAsXG4gIDB4YjMxMTogMHgxMSxcbiAgMHhiMzEyOiAweDEyLFxuICAweGIzMTM6IDB4MTMsXG4gIDB4YjMxNDogMHgxNCxcbiAgMHhiMzE1OiAweDE1LFxuICAweGIzMTY6IDB4MTYsXG4gIDB4YjMxNzogMHgxNyxcbiAgMHhiMzE4OiAweDE4LFxuICAweGIzMTk6IDB4MTksXG4gIDB4YjMxYTogMHgxYSxcbiAgMHhiMzFiOiAweDFiLFxuICAweGIzMWM6IDB4MWMsXG4gIDB4YjMxZDogMHgxZCxcbiAgMHhiMzFlOiAweDFlLFxuICAweGIzMWY6IDB4MWYsXG4gIDB4YjMyMDogMHgyMCxcbiAgMHhiMzIxOiAweDAxLFxuICAweGIzMjI6IDB4MDIsXG4gIDB4YjMyMzogMHgwMyxcbiAgMHhiMzI0OiAweDA0LFxuICAweGIzMjU6IDB4MDUsXG4gIDB4YjMyNjogMHgwNixcbiAgMHhiMzI3OiAweDA3LFxuICAweGIzMjg6IDB4MDgsXG4gIDB4YjMyOTogMHgwOSxcbiAgMHhiMzJhOiAweDBhLFxuICAweGIzMmI6IDB4MGIsXG4gIDB4YjMyYzogMHgwYyxcbiAgMHhiMzJkOiAweDBkLFxuICAweGIzMmU6IDB4MGUsXG4gIDB4YjMyZjogMHgwZixcbiAgMHhiMzMwOiAweDEwLFxuICAweGIzMzE6IDB4MTEsXG4gIDB4YjMzMjogMHgxMixcbiAgMHhiMzMzOiAweDEzLFxuICAweGIzMzQ6IDB4MTQsXG4gIDB4YjMzNTogMHgxNSxcbiAgMHhiMzM2OiAweDE2LFxuICAweGIzMzc6IDB4MTcsXG4gIDB4YjMzODogMHgxOCxcbiAgMHhiMzM5OiAweDE5LFxuICAweGIzM2E6IDB4MWEsXG4gIDB4YjMzYjogMHgxYixcbiAgMHhiMzNjOiAweDFjLFxuICAweGIzM2Q6IDB4MWQsXG4gIDB4YjMzZTogMHgxZSxcbiAgMHhiMzNmOiAweDFmLFxuICAweGIzNDA6IDB4MjAsXG4gIDB4YjM0MTogMHgyMSxcbiAgMHhiMzQyOiAweDIyLFxuICAweGIzNDM6IDB4MjMsXG4gIDB4YjM0NDogMHgyNCxcbiAgMHhiMzQ1OiAweDI1LFxuICAweGIzNDY6IDB4MjYsXG4gIDB4YjM0NzogMHgyNyxcbiAgMHhiMzQ4OiAweDI4LFxuICAweGIzNDk6IDB4MjksXG4gIDB4YjM0YTogMHgyYSxcbiAgMHhiMzRiOiAweDJiLFxuICAweGIzNGM6IDB4MmMsXG4gIDB4YjM0ZDogMHgyZCxcbiAgMHhiMzRlOiAweDJlLFxuICAweGIzNGY6IDB4MmYsXG4gIDB4YjM1MDogMHgzMCxcbiAgMHhiMzUxOiAweDMxLFxuICAweGIzNTI6IDB4MzIsXG4gIDB4YjM1MzogMHgzMyxcbiAgMHhiMzU0OiAweDM0LFxuICAweGIzNTU6IDB4MzUsXG4gIDB4YjM1NjogMHgzNixcbiAgMHhiMzU3OiAweDM3LFxuICAweGIzNTg6IDB4MzgsXG4gIDB4YjM1OTogMHgzOSxcbiAgMHhiMzVhOiAweDNhLFxuICAweGIzNWI6IDB4M2IsXG4gIDB4YjM1YzogMHgzYyxcbiAgMHhiMzVkOiAweDNkLFxuICAweGIzNWU6IDB4M2UsXG4gIDB4YjM1ZjogMHgzZixcbiAgMHhiMzYwOiAweDQwLFxuICAweGIzNjE6IDB4MDEsXG4gIDB4YjM2MjogMHgwMixcbiAgMHhiMzYzOiAweDAzLFxuICAweGIzNjQ6IDB4MDQsXG4gIDB4YjM2NTogMHgwNSxcbiAgMHhiMzY2OiAweDA2LFxuICAweGIzNjc6IDB4MDcsXG4gIDB4YjM2ODogMHgwOCxcbiAgMHhiMzY5OiAweDA5LFxuICAweGIzNmE6IDB4MGEsXG4gIDB4YjM2YjogMHgwYixcbiAgMHhiMzZjOiAweDBjLFxuICAweGIzNmQ6IDB4MGQsXG4gIDB4YjM2ZTogMHgwZSxcbiAgMHhiMzZmOiAweDBmLFxuICAweGIzNzA6IDB4MTAsXG4gIDB4YjM3MTogMHgxMSxcbiAgMHhiMzcyOiAweDEyLFxuICAweGIzNzM6IDB4MTMsXG4gIDB4YjM3NDogMHgxNCxcbiAgMHhiMzc1OiAweDE1LFxuICAweGIzNzY6IDB4MTYsXG4gIDB4YjM3NzogMHgxNyxcbiAgMHhiMzc4OiAweDE4LFxuICAweGIzNzk6IDB4MTksXG4gIDB4YjM3YTogMHgxYSxcbiAgMHhiMzdiOiAweDFiLFxuICAweGIzN2M6IDB4MWMsXG4gIDB4YjM3ZDogMHgxZCxcbiAgMHhiMzdlOiAweDFlLFxuICAweGIzN2Y6IDB4MWYsXG4gIDB4YjM4MDogMHgyMCxcbiAgMHhiMzgxOiAweDIxLFxuICAweGIzODI6IDB4MjIsXG4gIDB4YjM4MzogMHgyMyxcbiAgMHhiMzg0OiAweDI0LFxuICAweGIzODU6IDB4MjUsXG4gIDB4YjM4NjogMHgyNixcbiAgMHhiMzg3OiAweDI3LFxuICAweGIzODg6IDB4MjgsXG4gIDB4YjM4OTogMHgyOSxcbiAgMHhiMzhhOiAweDJhLFxuICAweGIzOGI6IDB4MmIsXG4gIDB4YjM4YzogMHgyYyxcbiAgMHhiMzhkOiAweDJkLFxuICAweGIzOGU6IDB4MmUsXG4gIDB4YjM4ZjogMHgyZixcbiAgMHhiMzkwOiAweDMwLFxuICAweGIzOTE6IDB4MzEsXG4gIDB4YjM5MjogMHgzMixcbiAgMHhiMzkzOiAweDMzLFxuICAweGIzOTQ6IDB4MzQsXG4gIDB4YjM5NTogMHgzNSxcbiAgMHhiMzk2OiAweDM2LFxuICAweGIzOTc6IDB4MzcsXG4gIDB4YjM5ODogMHgzOCxcbiAgMHhiMzk5OiAweDM5LFxuICAweGIzOWE6IDB4M2EsXG4gIDB4YjM5YjogMHgzYixcbiAgMHhiMzljOiAweDNjLFxuICAweGIzOWQ6IDB4M2QsXG4gIDB4YjM5ZTogMHgzZSxcbiAgMHhiMzlmOiAweDNmLFxuICAweGIzYTA6IDB4NDAsXG4gIDB4YjNhMTogMHg0MSxcbiAgMHhiM2EyOiAweDQyLFxuICAweGIzYTM6IDB4NDMsXG4gIDB4YjNhNDogMHg0NCxcbiAgMHhiM2E1OiAweDQ1LFxuICAweGIzYTY6IDB4NDYsXG4gIDB4YjNhNzogMHg0NyxcbiAgMHhiM2E4OiAweDQ4LFxuICAweGIzYTk6IDB4NDksXG4gIDB4YjNhYTogMHg0YSxcbiAgMHhiM2FiOiAweDRiLFxuICAweGIzYWM6IDB4NGMsXG4gIDB4YjNhZDogMHg0ZCxcbiAgMHhiM2FlOiAweDRlLFxuICAweGIzYWY6IDB4NGYsXG4gIDB4YjNiMDogMHg1MCxcbiAgMHhiM2IxOiAweDUxLFxuICAweGIzYjI6IDB4NTIsXG4gIDB4YjNiMzogMHg1MyxcbiAgMHhiM2I0OiAweDU0LFxuICAweGIzYjU6IDB4NTUsXG4gIDB4YjNiNjogMHg1NixcbiAgMHhiM2I3OiAweDU3LFxuICAweGIzYjg6IDB4NTgsXG4gIDB4YjNiOTogMHg1OSxcbiAgMHhiM2JhOiAweDVhLFxuICAweGIzYmI6IDB4NWIsXG4gIDB4YjNiYzogMHg1YyxcbiAgMHhiM2JkOiAweDVkLFxuICAweGIzYmU6IDB4NWUsXG4gIDB4YjNiZjogMHg1ZixcbiAgMHhiM2MwOiAweDYwLFxuICAweGIzYzE6IDB4NjEsXG4gIDB4YjNjMjogMHg2MixcbiAgMHhiM2MzOiAweDYzLFxuICAweGIzYzQ6IDB4NjQsXG4gIDB4YjNjNTogMHg2NSxcbiAgMHhiM2M2OiAweDY2LFxuICAweGIzYzc6IDB4NjcsXG4gIDB4YjNjODogMHg2OCxcbiAgMHhiM2M5OiAweDY5LFxuICAweGIzY2E6IDB4NmEsXG4gIDB4YjNjYjogMHg2YixcbiAgMHhiM2NjOiAweDZjLFxuICAweGIzY2Q6IDB4NmQsXG4gIDB4YjNjZTogMHg2ZSxcbiAgMHhiM2NmOiAweDZmLFxuICAweGIzZDA6IDB4NzAsXG4gIDB4YjNkMTogMHg3MSxcbiAgMHhiM2QyOiAweDcyLFxuICAweGIzZDM6IDB4NzMsXG4gIDB4YjNkNDogMHg3NCxcbiAgMHhiM2Q1OiAweDc1LFxuICAweGIzZDY6IDB4NzYsXG4gIDB4YjNkNzogMHg3NyxcbiAgMHhiM2Q4OiAweDc4LFxuICAweGIzZDk6IDB4NzksXG4gIDB4YjNkYTogMHg3YSxcbiAgMHhiM2RiOiAweDdiLFxuICAweGIzZGM6IDB4N2MsXG4gIDB4YjNkZDogMHg3ZCxcbiAgMHhiM2RlOiAweDdlLFxuICAweGIzZGY6IDB4N2YsXG4gIDB4YjNlMDogMHg4MFxufSlcbiIsIm1vZHVsZS5leHBvcnRzID0gZW5jb2RlXG5cbnZhciBNU0IgPSAweDgwXG4gICwgUkVTVCA9IDB4N0ZcbiAgLCBNU0JBTEwgPSB+UkVTVFxuICAsIElOVCA9IE1hdGgucG93KDIsIDMxKVxuXG5mdW5jdGlvbiBlbmNvZGUobnVtLCBvdXQsIG9mZnNldCkge1xuICBvdXQgPSBvdXQgfHwgW11cbiAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDBcbiAgdmFyIG9sZE9mZnNldCA9IG9mZnNldFxuXG4gIHdoaWxlKG51bSA+PSBJTlQpIHtcbiAgICBvdXRbb2Zmc2V0KytdID0gKG51bSAmIDB4RkYpIHwgTVNCXG4gICAgbnVtIC89IDEyOFxuICB9XG4gIHdoaWxlKG51bSAmIE1TQkFMTCkge1xuICAgIG91dFtvZmZzZXQrK10gPSAobnVtICYgMHhGRikgfCBNU0JcbiAgICBudW0gPj4+PSA3XG4gIH1cbiAgb3V0W29mZnNldF0gPSBudW0gfCAwXG4gIFxuICBlbmNvZGUuYnl0ZXMgPSBvZmZzZXQgLSBvbGRPZmZzZXQgKyAxXG4gIFxuICByZXR1cm4gb3V0XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlYWRcblxudmFyIE1TQiA9IDB4ODBcbiAgLCBSRVNUID0gMHg3RlxuXG5mdW5jdGlvbiByZWFkKGJ1Ziwgb2Zmc2V0KSB7XG4gIHZhciByZXMgICAgPSAwXG4gICAgLCBvZmZzZXQgPSBvZmZzZXQgfHwgMFxuICAgICwgc2hpZnQgID0gMFxuICAgICwgY291bnRlciA9IG9mZnNldFxuICAgICwgYlxuICAgICwgbCA9IGJ1Zi5sZW5ndGhcblxuICBkbyB7XG4gICAgaWYgKGNvdW50ZXIgPj0gbCkge1xuICAgICAgcmVhZC5ieXRlcyA9IDBcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb3VsZCBub3QgZGVjb2RlIHZhcmludCcpXG4gICAgfVxuICAgIGIgPSBidWZbY291bnRlcisrXVxuICAgIHJlcyArPSBzaGlmdCA8IDI4XG4gICAgICA/IChiICYgUkVTVCkgPDwgc2hpZnRcbiAgICAgIDogKGIgJiBSRVNUKSAqIE1hdGgucG93KDIsIHNoaWZ0KVxuICAgIHNoaWZ0ICs9IDdcbiAgfSB3aGlsZSAoYiA+PSBNU0IpXG5cbiAgcmVhZC5ieXRlcyA9IGNvdW50ZXIgLSBvZmZzZXRcblxuICByZXR1cm4gcmVzXG59XG4iLCJcbnZhciBOMSA9IE1hdGgucG93KDIsICA3KVxudmFyIE4yID0gTWF0aC5wb3coMiwgMTQpXG52YXIgTjMgPSBNYXRoLnBvdygyLCAyMSlcbnZhciBONCA9IE1hdGgucG93KDIsIDI4KVxudmFyIE41ID0gTWF0aC5wb3coMiwgMzUpXG52YXIgTjYgPSBNYXRoLnBvdygyLCA0MilcbnZhciBONyA9IE1hdGgucG93KDIsIDQ5KVxudmFyIE44ID0gTWF0aC5wb3coMiwgNTYpXG52YXIgTjkgPSBNYXRoLnBvdygyLCA2MylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSA8IE4xID8gMVxuICA6IHZhbHVlIDwgTjIgPyAyXG4gIDogdmFsdWUgPCBOMyA/IDNcbiAgOiB2YWx1ZSA8IE40ID8gNFxuICA6IHZhbHVlIDwgTjUgPyA1XG4gIDogdmFsdWUgPCBONiA/IDZcbiAgOiB2YWx1ZSA8IE43ID8gN1xuICA6IHZhbHVlIDwgTjggPyA4XG4gIDogdmFsdWUgPCBOOSA/IDlcbiAgOiAgICAgICAgICAgICAgMTBcbiAgKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UuanMnKVxuY29uc3QgYmFzZVggPSByZXF1aXJlKCdiYXNlLXgnKVxuY29uc3QgYmFzZTE2ID0gcmVxdWlyZSgnLi9iYXNlMTYnKVxuY29uc3QgYmFzZTMyID0gcmVxdWlyZSgnLi9iYXNlMzInKVxuY29uc3QgYmFzZTY0ID0gcmVxdWlyZSgnLi9iYXNlNjQnKVxuXG4vLyBuYW1lLCBjb2RlLCBpbXBsZW1lbnRhdGlvbiwgYWxwaGFiZXRcbmNvbnN0IGNvbnN0YW50cyA9IFtcbiAgWydiYXNlMScsICcxJywgJycsICcxJ10sXG4gIFsnYmFzZTInLCAnMCcsIGJhc2VYLCAnMDEnXSxcbiAgWydiYXNlOCcsICc3JywgYmFzZVgsICcwMTIzNDU2NyddLFxuICBbJ2Jhc2UxMCcsICc5JywgYmFzZVgsICcwMTIzNDU2Nzg5J10sXG4gIFsnYmFzZTE2JywgJ2YnLCBiYXNlMTYsICcwMTIzNDU2Nzg5YWJjZGVmJ10sXG4gIFsnYmFzZTMyJywgJ2InLCBiYXNlMzIsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejIzNDU2NyddLFxuICBbJ2Jhc2UzMnBhZCcsICdjJywgYmFzZTMyLCAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoyMzQ1Njc9J10sXG4gIFsnYmFzZTMyaGV4JywgJ3YnLCBiYXNlMzIsICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1diddLFxuICBbJ2Jhc2UzMmhleHBhZCcsICd0JywgYmFzZTMyLCAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXY9J10sXG4gIFsnYmFzZTMyeicsICdoJywgYmFzZTMyLCAneWJuZHJmZzhlamttY3BxeG90MXV3aXN6YTM0NWg3NjknXSxcbiAgWydiYXNlNThmbGlja3InLCAnWicsIGJhc2VYLCAnMTIzNDU2Nzg5YWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ekFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWiddLFxuICBbJ2Jhc2U1OGJ0YycsICd6JywgYmFzZVgsICcxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6J10sXG4gIFsnYmFzZTY0JywgJ20nLCBiYXNlNjQsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ10sXG4gIFsnYmFzZTY0cGFkJywgJ00nLCBiYXNlNjQsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSddLFxuICBbJ2Jhc2U2NHVybCcsICd1JywgYmFzZTY0LCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXyddLFxuICBbJ2Jhc2U2NHVybHBhZCcsICdVJywgYmFzZTY0LCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXz0nXVxuXVxuXG5jb25zdCBuYW1lcyA9IGNvbnN0YW50cy5yZWR1Y2UoKHByZXYsIHR1cHBsZSkgPT4ge1xuICBwcmV2W3R1cHBsZVswXV0gPSBuZXcgQmFzZSh0dXBwbGVbMF0sIHR1cHBsZVsxXSwgdHVwcGxlWzJdLCB0dXBwbGVbM10pXG4gIHJldHVybiBwcmV2XG59LCB7fSlcblxuY29uc3QgY29kZXMgPSBjb25zdGFudHMucmVkdWNlKChwcmV2LCB0dXBwbGUpID0+IHtcbiAgcHJldlt0dXBwbGVbMV1dID0gbmFtZXNbdHVwcGxlWzBdXVxuICByZXR1cm4gcHJldlxufSwge30pXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBuYW1lczogbmFtZXMsXG4gIGNvZGVzOiBjb2Rlc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNsYXNzIEJhc2Uge1xuICBjb25zdHJ1Y3RvciAobmFtZSwgY29kZSwgaW1wbGVtZW50YXRpb24sIGFscGhhYmV0KSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMuY29kZSA9IGNvZGVcbiAgICB0aGlzLmFscGhhYmV0ID0gYWxwaGFiZXRcbiAgICBpZiAoaW1wbGVtZW50YXRpb24gJiYgYWxwaGFiZXQpIHtcbiAgICAgIHRoaXMuZW5naW5lID0gaW1wbGVtZW50YXRpb24oYWxwaGFiZXQpXG4gICAgfVxuICB9XG5cbiAgZW5jb2RlIChzdHJpbmdPckJ1ZmZlcikge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZS5lbmNvZGUoc3RyaW5nT3JCdWZmZXIpXG4gIH1cblxuICBkZWNvZGUgKHN0cmluZ09yQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLmRlY29kZShzdHJpbmdPckJ1ZmZlcilcbiAgfVxuXG4gIGlzSW1wbGVtZW50ZWQgKCkge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmFzZTE2IChhbHBoYWJldCkge1xuICByZXR1cm4ge1xuICAgIGVuY29kZSAoaW5wdXQpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShpbnB1dCkudG9TdHJpbmcoJ2hleCcpXG4gICAgICB9XG4gICAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoJ2hleCcpXG4gICAgfSxcbiAgICBkZWNvZGUgKGlucHV0KSB7XG4gICAgICBmb3IgKGxldCBjaGFyIG9mIGlucHV0KSB7XG4gICAgICAgIGlmIChhbHBoYWJldC5pbmRleE9mKGNoYXIpIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBiYXNlMTYgY2hhcmFjdGVyJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlucHV0LCAnaGV4JylcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBkZWNvZGUgKGlucHV0LCBhbHBoYWJldCkge1xuICBpbnB1dCA9IGlucHV0LnJlcGxhY2UobmV3IFJlZ0V4cCgnPScsICdnJyksICcnKVxuICBsZXQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoXG5cbiAgbGV0IGJpdHMgPSAwXG4gIGxldCB2YWx1ZSA9IDBcblxuICBsZXQgaW5kZXggPSAwXG4gIGxldCBvdXRwdXQgPSBuZXcgVWludDhBcnJheSgobGVuZ3RoICogNSAvIDgpIHwgMClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgNSkgfCBhbHBoYWJldC5pbmRleE9mKGlucHV0W2ldKVxuICAgIGJpdHMgKz0gNVxuXG4gICAgaWYgKGJpdHMgPj0gOCkge1xuICAgICAgb3V0cHV0W2luZGV4KytdID0gKHZhbHVlID4+PiAoYml0cyAtIDgpKSAmIDI1NVxuICAgICAgYml0cyAtPSA4XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dC5idWZmZXJcbn1cblxuZnVuY3Rpb24gZW5jb2RlIChidWZmZXIsIGFscGhhYmV0KSB7XG4gIGxldCBsZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aFxuICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcilcbiAgbGV0IHBhZGRpbmcgPSBhbHBoYWJldC5pbmRleE9mKCc9JykgPT09IGFscGhhYmV0Lmxlbmd0aCAtIDFcblxuICBpZiAocGFkZGluZykge1xuICAgIGFscGhhYmV0ID0gYWxwaGFiZXQuc3Vic3RyaW5nKDAsIGFscGhhYmV0Lmxlbmd0aCAtIDIpXG4gIH1cblxuICBsZXQgYml0cyA9IDBcbiAgbGV0IHZhbHVlID0gMFxuICBsZXQgb3V0cHV0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgOCkgfCB2aWV3W2ldXG4gICAgYml0cyArPSA4XG5cbiAgICB3aGlsZSAoYml0cyA+PSA1KSB7XG4gICAgICBvdXRwdXQgKz0gYWxwaGFiZXRbKHZhbHVlID4+PiAoYml0cyAtIDUpKSAmIDMxXVxuICAgICAgYml0cyAtPSA1XG4gICAgfVxuICB9XG5cbiAgaWYgKGJpdHMgPiAwKSB7XG4gICAgb3V0cHV0ICs9IGFscGhhYmV0Wyh2YWx1ZSA8PCAoNSAtIGJpdHMpKSAmIDMxXVxuICB9XG5cbiAgaWYgKHBhZGRpbmcpIHtcbiAgICB3aGlsZSAoKG91dHB1dC5sZW5ndGggJSA4KSAhPT0gMCkge1xuICAgICAgb3V0cHV0ICs9ICc9J1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXNlMzIgKGFscGhhYmV0KSB7XG4gIHJldHVybiB7XG4gICAgZW5jb2RlIChpbnB1dCkge1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZShCdWZmZXIuZnJvbShpbnB1dCksIGFscGhhYmV0KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW5jb2RlKGlucHV0LCBhbHBoYWJldClcbiAgICB9LFxuICAgIGRlY29kZSAoaW5wdXQpIHtcbiAgICAgIGZvciAobGV0IGNoYXIgb2YgaW5wdXQpIHtcbiAgICAgICAgaWYgKGFscGhhYmV0LmluZGV4T2YoY2hhcikgPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGJhc2UzMiBjaGFyYWN0ZXInKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWNvZGUoaW5wdXQsIGFscGhhYmV0KVxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmFzZTY0IChhbHBoYWJldCkge1xuICAvLyBUaGUgYWxwaGFiZXQgaXMgb25seSB1c2VkIHRvIGtub3c6XG4gIC8vICAgMS4gSWYgcGFkZGluZyBpcyBlbmFibGVkIChtdXN0IGNvbnRhaW4gJz0nKVxuICAvLyAgIDIuIElmIHRoZSBvdXRwdXQgbXVzdCBiZSB1cmwtc2FmZSAobXVzdCBjb250YWluICctJyBhbmQgJ18nKVxuICAvLyAgIDMuIElmIHRoZSBpbnB1dCBvZiB0aGUgb3V0cHV0IGZ1bmN0aW9uIGlzIHZhbGlkXG4gIC8vIFRoZSBhbHBoYWJldHMgZnJvbSBSRkMgNDY0OCBhcmUgYWx3YXlzIHVzZWQuXG4gIGNvbnN0IHBhZGRpbmcgPSBhbHBoYWJldC5pbmRleE9mKCc9JykgPiAtMVxuICBjb25zdCB1cmwgPSBhbHBoYWJldC5pbmRleE9mKCctJykgPiAtMSAmJiBhbHBoYWJldC5pbmRleE9mKCdfJykgPiAtMVxuXG4gIHJldHVybiB7XG4gICAgZW5jb2RlIChpbnB1dCkge1xuICAgICAgbGV0IG91dHB1dCA9ICcnXG5cbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG91dHB1dCA9IEJ1ZmZlci5mcm9tKGlucHV0KS50b1N0cmluZygnYmFzZTY0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dCA9IGlucHV0LnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgfVxuXG4gICAgICBpZiAodXJsKSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYWQgPSBvdXRwdXQuaW5kZXhPZignPScpXG4gICAgICBpZiAocGFkID4gMCAmJiAhcGFkZGluZykge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3Vic3RyaW5nKDAsIHBhZClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG91dHB1dFxuICAgIH0sXG4gICAgZGVjb2RlIChpbnB1dCkge1xuICAgICAgZm9yIChsZXQgY2hhciBvZiBpbnB1dCkge1xuICAgICAgICBpZiAoYWxwaGFiZXQuaW5kZXhPZihjaGFyKSA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYmFzZTY0IGNoYXJhY3RlcicpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlucHV0LCAnYmFzZTY0JylcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBjb252ZXJ0ID0gcmVxdWlyZSgnLi9jb252ZXJ0JylcbmNvbnN0IHByb3RvY29scyA9IHJlcXVpcmUoJy4vcHJvdG9jb2xzLXRhYmxlJylcbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5cbi8vIGV4cG9ydCBjb2RlY1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN0cmluZ1RvU3RyaW5nVHVwbGVzOiBzdHJpbmdUb1N0cmluZ1R1cGxlcyxcbiAgc3RyaW5nVHVwbGVzVG9TdHJpbmc6IHN0cmluZ1R1cGxlc1RvU3RyaW5nLFxuXG4gIHR1cGxlc1RvU3RyaW5nVHVwbGVzOiB0dXBsZXNUb1N0cmluZ1R1cGxlcyxcbiAgc3RyaW5nVHVwbGVzVG9UdXBsZXM6IHN0cmluZ1R1cGxlc1RvVHVwbGVzLFxuXG4gIGJ1ZmZlclRvVHVwbGVzOiBidWZmZXJUb1R1cGxlcyxcbiAgdHVwbGVzVG9CdWZmZXI6IHR1cGxlc1RvQnVmZmVyLFxuXG4gIGJ1ZmZlclRvU3RyaW5nOiBidWZmZXJUb1N0cmluZyxcbiAgc3RyaW5nVG9CdWZmZXI6IHN0cmluZ1RvQnVmZmVyLFxuXG4gIGZyb21TdHJpbmc6IGZyb21TdHJpbmcsXG4gIGZyb21CdWZmZXI6IGZyb21CdWZmZXIsXG4gIHZhbGlkYXRlQnVmZmVyOiB2YWxpZGF0ZUJ1ZmZlcixcbiAgaXNWYWxpZEJ1ZmZlcjogaXNWYWxpZEJ1ZmZlcixcbiAgY2xlYW5QYXRoOiBjbGVhblBhdGgsXG5cbiAgUGFyc2VFcnJvcjogUGFyc2VFcnJvcixcbiAgcHJvdG9Gcm9tVHVwbGU6IHByb3RvRnJvbVR1cGxlLFxuXG4gIHNpemVGb3JBZGRyOiBzaXplRm9yQWRkclxufVxuXG4vLyBzdHJpbmcgLT4gW1tzdHIgbmFtZSwgc3RyIGFkZHJdLi4uIF1cbmZ1bmN0aW9uIHN0cmluZ1RvU3RyaW5nVHVwbGVzIChzdHIpIHtcbiAgY29uc3QgdHVwbGVzID0gW11cbiAgY29uc3QgcGFydHMgPSBzdHIuc3BsaXQoJy8nKS5zbGljZSgxKSAvLyBza2lwIGZpcnN0IGVtcHR5IGVsZW1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBwYXJ0c1swXSA9PT0gJycpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGZvciAobGV0IHAgPSAwOyBwIDwgcGFydHMubGVuZ3RoOyBwKyspIHtcbiAgICBjb25zdCBwYXJ0ID0gcGFydHNbcF1cbiAgICBjb25zdCBwcm90byA9IHByb3RvY29scyhwYXJ0KVxuXG4gICAgaWYgKHByb3RvLnNpemUgPT09IDApIHtcbiAgICAgIHR1cGxlcy5wdXNoKFtwYXJ0XSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgcCsrIC8vIGFkdmFuY2UgYWRkciBwYXJ0XG4gICAgaWYgKHAgPj0gcGFydHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBQYXJzZUVycm9yKCdpbnZhbGlkIGFkZHJlc3M6ICcgKyBzdHIpXG4gICAgfVxuXG4gICAgLy8gaWYgaXQncyBhIHBhdGggcHJvdG8sIHRha2UgdGhlIHJlc3RcbiAgICBpZiAocHJvdG8ucGF0aCkge1xuICAgICAgdHVwbGVzLnB1c2goW1xuICAgICAgICBwYXJ0LFxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgd2UgbmVlZCB0byBjaGVjayBlYWNoIHBhdGggcGFydCB0byBzZWUgaWYgaXQncyBhIHByb3RvP1xuICAgICAgICAvLyBUaGlzIHdvdWxkIGFsbG93IGZvciBvdGhlciBwcm90b2NvbHMgdG8gYmUgYWRkZWQgYWZ0ZXIgYSB1bml4IHBhdGgsXG4gICAgICAgIC8vIGhvd2V2ZXIgaXQgd291bGQgaGF2ZSBpc3N1ZXMgaWYgdGhlIHBhdGggaGFkIGEgcHJvdG9jb2wgbmFtZSBpbiB0aGUgcGF0aFxuICAgICAgICBjbGVhblBhdGgocGFydHMuc2xpY2UocCkuam9pbignLycpKVxuICAgICAgXSlcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgdHVwbGVzLnB1c2goW3BhcnQsIHBhcnRzW3BdXSlcbiAgfVxuXG4gIHJldHVybiB0dXBsZXNcbn1cblxuLy8gW1tzdHIgbmFtZSwgc3RyIGFkZHJdLi4uIF0gLT4gc3RyaW5nXG5mdW5jdGlvbiBzdHJpbmdUdXBsZXNUb1N0cmluZyAodHVwbGVzKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgdHVwbGVzLm1hcCh0dXAgPT4ge1xuICAgIGNvbnN0IHByb3RvID0gcHJvdG9Gcm9tVHVwbGUodHVwKVxuICAgIHBhcnRzLnB1c2gocHJvdG8ubmFtZSlcbiAgICBpZiAodHVwLmxlbmd0aCA+IDEpIHtcbiAgICAgIHBhcnRzLnB1c2godHVwWzFdKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gY2xlYW5QYXRoKHBhcnRzLmpvaW4oJy8nKSlcbn1cblxuLy8gW1tzdHIgbmFtZSwgc3RyIGFkZHJdLi4uIF0gLT4gW1tpbnQgY29kZSwgQnVmZmVyXS4uLiBdXG5mdW5jdGlvbiBzdHJpbmdUdXBsZXNUb1R1cGxlcyAodHVwbGVzKSB7XG4gIHJldHVybiB0dXBsZXMubWFwKHR1cCA9PiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR1cCkpIHtcbiAgICAgIHR1cCA9IFt0dXBdXG4gICAgfVxuICAgIGNvbnN0IHByb3RvID0gcHJvdG9Gcm9tVHVwbGUodHVwKVxuICAgIGlmICh0dXAubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIFtwcm90by5jb2RlLCBjb252ZXJ0LnRvQnVmZmVyKHByb3RvLmNvZGUsIHR1cFsxXSldXG4gICAgfVxuICAgIHJldHVybiBbcHJvdG8uY29kZV1cbiAgfSlcbn1cblxuLy8gW1tpbnQgY29kZSwgQnVmZmVyXS4uLiBdIC0+IFtbc3RyIG5hbWUsIHN0ciBhZGRyXS4uLiBdXG5mdW5jdGlvbiB0dXBsZXNUb1N0cmluZ1R1cGxlcyAodHVwbGVzKSB7XG4gIHJldHVybiB0dXBsZXMubWFwKHR1cCA9PiB7XG4gICAgY29uc3QgcHJvdG8gPSBwcm90b0Zyb21UdXBsZSh0dXApXG4gICAgaWYgKHR1cC5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gW3Byb3RvLmNvZGUsIGNvbnZlcnQudG9TdHJpbmcocHJvdG8uY29kZSwgdHVwWzFdKV1cbiAgICB9XG4gICAgcmV0dXJuIFtwcm90by5jb2RlXVxuICB9KVxufVxuXG4vLyBbW2ludCBjb2RlLCBCdWZmZXIgXS4uLiBdIC0+IEJ1ZmZlclxuZnVuY3Rpb24gdHVwbGVzVG9CdWZmZXIgKHR1cGxlcykge1xuICByZXR1cm4gZnJvbUJ1ZmZlcihCdWZmZXIuY29uY2F0KHR1cGxlcy5tYXAodHVwID0+IHtcbiAgICBjb25zdCBwcm90byA9IHByb3RvRnJvbVR1cGxlKHR1cClcbiAgICBsZXQgYnVmID0gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShwcm90by5jb2RlKSlcblxuICAgIGlmICh0dXAubGVuZ3RoID4gMSkge1xuICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCB0dXBbMV1dKSAvLyBhZGQgYWRkcmVzcyBidWZmZXJcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmXG4gIH0pKSlcbn1cblxuZnVuY3Rpb24gc2l6ZUZvckFkZHIgKHAsIGFkZHIpIHtcbiAgaWYgKHAuc2l6ZSA+IDApIHtcbiAgICByZXR1cm4gcC5zaXplIC8gOFxuICB9IGVsc2UgaWYgKHAuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybiAwXG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2l6ZSA9IHZhcmludC5kZWNvZGUoYWRkcilcbiAgICByZXR1cm4gc2l6ZSArIHZhcmludC5kZWNvZGUuYnl0ZXNcbiAgfVxufVxuXG4vLyBCdWZmZXIgLT4gW1tpbnQgY29kZSwgQnVmZmVyIF0uLi4gXVxuZnVuY3Rpb24gYnVmZmVyVG9UdXBsZXMgKGJ1Zikge1xuICBjb25zdCB0dXBsZXMgPSBbXVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBidWYubGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IHZhcmludC5kZWNvZGUoYnVmLCBpKVxuICAgIGNvbnN0IG4gPSB2YXJpbnQuZGVjb2RlLmJ5dGVzXG5cbiAgICBjb25zdCBwID0gcHJvdG9jb2xzKGNvZGUpXG5cbiAgICBjb25zdCBzaXplID0gc2l6ZUZvckFkZHIocCwgYnVmLnNsaWNlKGkgKyBuKSlcblxuICAgIGlmIChzaXplID09PSAwKSB7XG4gICAgICB0dXBsZXMucHVzaChbY29kZV0pXG4gICAgICBpICs9IG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgYWRkciA9IGJ1Zi5zbGljZShpICsgbiwgaSArIG4gKyBzaXplKVxuXG4gICAgaSArPSAoc2l6ZSArIG4pXG5cbiAgICBpZiAoaSA+IGJ1Zi5sZW5ndGgpIHsgLy8gZGlkIG5vdCBlbmQgX2V4YWN0bHlfIGF0IGJ1ZmZlci5sZW5ndGhcbiAgICAgIHRocm93IFBhcnNlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyBidWZmZXI6ICcgKyBidWYudG9TdHJpbmcoJ2hleCcpKVxuICAgIH1cblxuICAgIC8vIG9rLCB0dXBsZSBzZWVtcyBnb29kLlxuICAgIHR1cGxlcy5wdXNoKFtjb2RlLCBhZGRyXSlcbiAgfVxuXG4gIHJldHVybiB0dXBsZXNcbn1cblxuLy8gQnVmZmVyIC0+IFN0cmluZ1xuZnVuY3Rpb24gYnVmZmVyVG9TdHJpbmcgKGJ1Zikge1xuICBjb25zdCBhID0gYnVmZmVyVG9UdXBsZXMoYnVmKVxuICBjb25zdCBiID0gdHVwbGVzVG9TdHJpbmdUdXBsZXMoYSlcbiAgcmV0dXJuIHN0cmluZ1R1cGxlc1RvU3RyaW5nKGIpXG59XG5cbi8vIFN0cmluZyAtPiBCdWZmZXJcbmZ1bmN0aW9uIHN0cmluZ1RvQnVmZmVyIChzdHIpIHtcbiAgc3RyID0gY2xlYW5QYXRoKHN0cilcbiAgY29uc3QgYSA9IHN0cmluZ1RvU3RyaW5nVHVwbGVzKHN0cilcbiAgY29uc3QgYiA9IHN0cmluZ1R1cGxlc1RvVHVwbGVzKGEpXG5cbiAgcmV0dXJuIHR1cGxlc1RvQnVmZmVyKGIpXG59XG5cbi8vIFN0cmluZyAtPiBCdWZmZXJcbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyaW5nVG9CdWZmZXIoc3RyKVxufVxuXG4vLyBCdWZmZXIgLT4gQnVmZmVyXG5mdW5jdGlvbiBmcm9tQnVmZmVyIChidWYpIHtcbiAgY29uc3QgZXJyID0gdmFsaWRhdGVCdWZmZXIoYnVmKVxuICBpZiAoZXJyKSB0aHJvdyBlcnJcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJ1ZikgLy8gY29weVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUJ1ZmZlciAoYnVmKSB7XG4gIHRyeSB7XG4gICAgYnVmZmVyVG9UdXBsZXMoYnVmKSAvLyB0cnkgdG8gcGFyc2UuIHdpbGwgdGhyb3cgaWYgYnJlYWtzXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBlcnJcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkQnVmZmVyIChidWYpIHtcbiAgcmV0dXJuIHZhbGlkYXRlQnVmZmVyKGJ1ZikgPT09IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBjbGVhblBhdGggKHN0cikge1xuICByZXR1cm4gJy8nICsgc3RyLnRyaW0oKS5zcGxpdCgnLycpLmZpbHRlcihhID0+IGEpLmpvaW4oJy8nKVxufVxuXG5mdW5jdGlvbiBQYXJzZUVycm9yIChzdHIpIHtcbiAgcmV0dXJuIG5ldyBFcnJvcignRXJyb3IgcGFyc2luZyBhZGRyZXNzOiAnICsgc3RyKVxufVxuXG5mdW5jdGlvbiBwcm90b0Zyb21UdXBsZSAodHVwKSB7XG4gIGNvbnN0IHByb3RvID0gcHJvdG9jb2xzKHR1cFswXSlcbiAgcmV0dXJuIHByb3RvXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgaXAgPSByZXF1aXJlKCdpcCcpXG5jb25zdCBpc0lwID0gcmVxdWlyZSgnaXMtaXAnKVxuY29uc3QgcHJvdG9jb2xzID0gcmVxdWlyZSgnLi9wcm90b2NvbHMtdGFibGUnKVxuY29uc3QgYnM1OCA9IHJlcXVpcmUoJ2JzNTgnKVxuY29uc3QgQ0lEID0gcmVxdWlyZSgnY2lkcycpXG5jb25zdCBiYXNlMzIgPSByZXF1aXJlKCdoaS1iYXNlMzInKVxuY29uc3QgdmFyaW50ID0gcmVxdWlyZSgndmFyaW50JylcblxubW9kdWxlLmV4cG9ydHMgPSBDb252ZXJ0XG5cbi8vIGNvbnZlcnRzIChzZXJpYWxpemVzKSBhZGRyZXNzZXNcbmZ1bmN0aW9uIENvbnZlcnQgKHByb3RvLCBhKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgcmV0dXJuIENvbnZlcnQudG9TdHJpbmcocHJvdG8sIGEpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIENvbnZlcnQudG9CdWZmZXIocHJvdG8sIGEpXG4gIH1cbn1cblxuQ29udmVydC50b1N0cmluZyA9IGZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyAocHJvdG8sIGJ1Zikge1xuICBwcm90byA9IHByb3RvY29scyhwcm90bylcbiAgc3dpdGNoIChwcm90by5jb2RlKSB7XG4gICAgY2FzZSA0OiAvLyBpcHY0XG4gICAgY2FzZSA0MTogLy8gaXB2NlxuICAgICAgcmV0dXJuIGJ1ZjJpcChidWYpXG5cbiAgICBjYXNlIDY6IC8vIHRjcFxuICAgIGNhc2UgMjczOiAvLyB1ZHBcbiAgICBjYXNlIDMzOiAvLyBkY2NwXG4gICAgY2FzZSAxMzI6IC8vIHNjdHBcbiAgICAgIHJldHVybiBidWYycG9ydChidWYpXG5cbiAgICBjYXNlIDUzOiAvLyBkbnNcbiAgICBjYXNlIDU0OiAvLyBkbnM0XG4gICAgY2FzZSA1NTogLy8gZG5zNlxuICAgIGNhc2UgNTY6IC8vIGRuc2FkZHJcbiAgICBjYXNlIDQwMDogLy8gdW5peFxuICAgICAgcmV0dXJuIGJ1ZjJzdHIoYnVmKVxuXG4gICAgY2FzZSA0MjE6IC8vIGlwZnNcbiAgICAgIHJldHVybiBidWYybWgoYnVmKVxuICAgIGNhc2UgNDQ0OiAvLyBvbmlvblxuICAgICAgcmV0dXJuIGJ1ZjJvbmlvbihidWYpXG4gICAgY2FzZSA0NDU6IC8vIG9uaW9uM1xuICAgICAgcmV0dXJuIGJ1ZjJvbmlvbihidWYpXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBidWYudG9TdHJpbmcoJ2hleCcpIC8vIG5vIGNsdWUuIGNvbnZlcnQgdG8gaGV4XG4gIH1cbn1cblxuQ29udmVydC50b0J1ZmZlciA9IGZ1bmN0aW9uIGNvbnZlcnRUb0J1ZmZlciAocHJvdG8sIHN0cikge1xuICBwcm90byA9IHByb3RvY29scyhwcm90bylcbiAgc3dpdGNoIChwcm90by5jb2RlKSB7XG4gICAgY2FzZSA0OiAvLyBpcHY0XG4gICAgICByZXR1cm4gaXAyYnVmKHN0cilcbiAgICBjYXNlIDQxOiAvLyBpcHY2XG4gICAgICByZXR1cm4gaXAyYnVmKHN0cilcblxuICAgIGNhc2UgNjogLy8gdGNwXG4gICAgY2FzZSAyNzM6IC8vIHVkcFxuICAgIGNhc2UgMzM6IC8vIGRjY3BcbiAgICBjYXNlIDEzMjogLy8gc2N0cFxuICAgICAgcmV0dXJuIHBvcnQyYnVmKHBhcnNlSW50KHN0ciwgMTApKVxuXG4gICAgY2FzZSA1MzogLy8gZG5zXG4gICAgY2FzZSA1NDogLy8gZG5zNFxuICAgIGNhc2UgNTU6IC8vIGRuczZcbiAgICBjYXNlIDU2OiAvLyBkbnNhZGRyXG4gICAgY2FzZSA0MDA6IC8vIHVuaXhcbiAgICAgIHJldHVybiBzdHIyYnVmKHN0cilcblxuICAgIGNhc2UgNDIxOiAvLyBpcGZzXG4gICAgICByZXR1cm4gbWgyYnVmKHN0cilcbiAgICBjYXNlIDQ0NDogLy8gb25pb25cbiAgICAgIHJldHVybiBvbmlvbjJidWYoc3RyKVxuICAgIGNhc2UgNDQ1OiAvLyBvbmlvbjNcbiAgICAgIHJldHVybiBvbmlvbjMyYnVmKHN0cilcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2hleCcpIC8vIG5vIGNsdWUuIGNvbnZlcnQgZnJvbSBoZXhcbiAgfVxufVxuXG5mdW5jdGlvbiBpcDJidWYgKGlwU3RyaW5nKSB7XG4gIGlmICghaXNJcChpcFN0cmluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaXAgYWRkcmVzcycpXG4gIH1cbiAgcmV0dXJuIGlwLnRvQnVmZmVyKGlwU3RyaW5nKVxufVxuXG5mdW5jdGlvbiBidWYyaXAgKGlwQnVmZikge1xuICBjb25zdCBpcFN0cmluZyA9IGlwLnRvU3RyaW5nKGlwQnVmZilcbiAgaWYgKCFpc0lwKGlwU3RyaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpcCBhZGRyZXNzJylcbiAgfVxuICByZXR1cm4gaXBTdHJpbmdcbn1cblxuZnVuY3Rpb24gcG9ydDJidWYgKHBvcnQpIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDIpXG4gIGJ1Zi53cml0ZVVJbnQxNkJFKHBvcnQsIDApXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnVmMnBvcnQgKGJ1Zikge1xuICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRSgwKVxufVxuXG5mdW5jdGlvbiBzdHIyYnVmIChzdHIpIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oc3RyKVxuICBjb25zdCBzaXplID0gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShidWYubGVuZ3RoKSlcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3NpemUsIGJ1Zl0pXG59XG5cbmZ1bmN0aW9uIGJ1ZjJzdHIgKGJ1Zikge1xuICBjb25zdCBzaXplID0gdmFyaW50LmRlY29kZShidWYpXG4gIGJ1ZiA9IGJ1Zi5zbGljZSh2YXJpbnQuZGVjb2RlLmJ5dGVzKVxuXG4gIGlmIChidWYubGVuZ3RoICE9PSBzaXplKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbmNvbnNpc3RlbnQgbGVuZ3RocycpXG4gIH1cblxuICByZXR1cm4gYnVmLnRvU3RyaW5nKClcbn1cblxuZnVuY3Rpb24gbWgyYnVmIChoYXNoKSB7XG4gIC8vIHRoZSBhZGRyZXNzIGlzIGEgdmFyaW50IHByZWZpeGVkIG11bHRpaGFzaCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgY29uc3QgbWggPSBuZXcgQ0lEKGhhc2gpLm11bHRpaGFzaFxuICBjb25zdCBzaXplID0gQnVmZmVyLmZyb20odmFyaW50LmVuY29kZShtaC5sZW5ndGgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbc2l6ZSwgbWhdKVxufVxuXG5mdW5jdGlvbiBidWYybWggKGJ1Zikge1xuICBjb25zdCBzaXplID0gdmFyaW50LmRlY29kZShidWYpXG4gIGNvbnN0IGFkZHJlc3MgPSBidWYuc2xpY2UodmFyaW50LmRlY29kZS5ieXRlcylcblxuICBpZiAoYWRkcmVzcy5sZW5ndGggIT09IHNpemUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2luY29uc2lzdGVudCBsZW5ndGhzJylcbiAgfVxuXG4gIHJldHVybiBiczU4LmVuY29kZShhZGRyZXNzKVxufVxuXG5mdW5jdGlvbiBvbmlvbjJidWYgKHN0cikge1xuICBjb25zdCBhZGRyID0gc3RyLnNwbGl0KCc6JylcbiAgaWYgKGFkZHIubGVuZ3RoICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gcGFyc2Ugb25pb24gYWRkcjogJyArIGFkZHIgKyAnIGRvZXMgbm90IGNvbnRhaW4gYSBwb3J0IG51bWJlcicpXG4gIH1cbiAgaWYgKGFkZHJbMF0ubGVuZ3RoICE9PSAxNikge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIHBhcnNlIG9uaW9uIGFkZHI6ICcgKyBhZGRyWzBdICsgJyBub3QgYSBUb3Igb25pb24gYWRkcmVzcy4nKVxuICB9XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGJhc2UzMi5kZWNvZGUuYXNCeXRlcyhhZGRyWzBdLnRvVXBwZXJDYXNlKCkpKVxuXG4gIC8vIG9uaW9uIHBvcnQgbnVtYmVyXG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChhZGRyWzFdLCAxMClcbiAgaWYgKHBvcnQgPCAxIHx8IHBvcnQgPiA2NTUzNikge1xuICAgIHRocm93IG5ldyBFcnJvcignUG9ydCBudW1iZXIgaXMgbm90IGluIHJhbmdlKDEsIDY1NTM2KScpXG4gIH1cbiAgY29uc3QgcG9ydEJ1ZiA9IHBvcnQyYnVmKHBvcnQpXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtidWYsIHBvcnRCdWZdKVxufVxuXG5mdW5jdGlvbiBvbmlvbjMyYnVmIChzdHIpIHtcbiAgY29uc3QgYWRkciA9IHN0ci5zcGxpdCgnOicpXG4gIGlmIChhZGRyLmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIHBhcnNlIG9uaW9uIGFkZHI6ICcgKyBhZGRyICsgJyBkb2VzIG5vdCBjb250YWluIGEgcG9ydCBudW1iZXInKVxuICB9XG4gIGlmIChhZGRyWzBdLmxlbmd0aCAhPT0gNTYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBwYXJzZSBvbmlvbiBhZGRyOiAnICsgYWRkclswXSArICcgbm90IGEgVG9yIG9uaW9uMyBhZGRyZXNzLicpXG4gIH1cbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oYmFzZTMyLmRlY29kZS5hc0J5dGVzKGFkZHJbMF0udG9VcHBlckNhc2UoKSkpXG5cbiAgLy8gb25pb24gcG9ydCBudW1iZXJcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KGFkZHJbMV0sIDEwKVxuICBpZiAocG9ydCA8IDEgfHwgcG9ydCA+IDY1NTM2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQb3J0IG51bWJlciBpcyBub3QgaW4gcmFuZ2UoMSwgNjU1MzYpJylcbiAgfVxuICBjb25zdCBwb3J0QnVmID0gcG9ydDJidWYocG9ydClcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2J1ZiwgcG9ydEJ1Zl0pXG59XG5cbmZ1bmN0aW9uIGJ1ZjJvbmlvbiAoYnVmKSB7XG4gIGNvbnN0IGFkZHJCeXRlcyA9IGJ1Zi5zbGljZSgwLCBidWYubGVuZ3RoIC0gMilcbiAgY29uc3QgcG9ydEJ5dGVzID0gYnVmLnNsaWNlKGJ1Zi5sZW5ndGggLSAyKVxuICBjb25zdCBhZGRyID0gYmFzZTMyLmVuY29kZShhZGRyQnl0ZXMpLnRvTG93ZXJDYXNlKClcbiAgY29uc3QgcG9ydCA9IGJ1ZjJwb3J0KHBvcnRCeXRlcylcbiAgcmV0dXJuIGFkZHIgKyAnOicgKyBwb3J0XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpcCA9IGV4cG9ydHM7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xudmFyIG9zID0gcmVxdWlyZSgnb3MnKTtcblxuaXAudG9CdWZmZXIgPSBmdW5jdGlvbihpcCwgYnVmZiwgb2Zmc2V0KSB7XG4gIG9mZnNldCA9IH5+b2Zmc2V0O1xuXG4gIHZhciByZXN1bHQ7XG5cbiAgaWYgKHRoaXMuaXNWNEZvcm1hdChpcCkpIHtcbiAgICByZXN1bHQgPSBidWZmIHx8IG5ldyBCdWZmZXIob2Zmc2V0ICsgNCk7XG4gICAgaXAuc3BsaXQoL1xcLi9nKS5tYXAoZnVuY3Rpb24oYnl0ZSkge1xuICAgICAgcmVzdWx0W29mZnNldCsrXSA9IHBhcnNlSW50KGJ5dGUsIDEwKSAmIDB4ZmY7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc1Y2Rm9ybWF0KGlwKSkge1xuICAgIHZhciBzZWN0aW9ucyA9IGlwLnNwbGl0KCc6JywgOCk7XG5cbiAgICB2YXIgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpc3Y0ID0gdGhpcy5pc1Y0Rm9ybWF0KHNlY3Rpb25zW2ldKTtcbiAgICAgIHZhciB2NEJ1ZmZlcjtcblxuICAgICAgaWYgKGlzdjQpIHtcbiAgICAgICAgdjRCdWZmZXIgPSB0aGlzLnRvQnVmZmVyKHNlY3Rpb25zW2ldKTtcbiAgICAgICAgc2VjdGlvbnNbaV0gPSB2NEJ1ZmZlci5zbGljZSgwLCAyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2NEJ1ZmZlciAmJiArK2kgPCA4KSB7XG4gICAgICAgIHNlY3Rpb25zLnNwbGljZShpLCAwLCB2NEJ1ZmZlci5zbGljZSgyLCA0KS50b1N0cmluZygnaGV4JykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWN0aW9uc1swXSA9PT0gJycpIHtcbiAgICAgIHdoaWxlIChzZWN0aW9ucy5sZW5ndGggPCA4KSBzZWN0aW9ucy51bnNoaWZ0KCcwJyk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uc1tzZWN0aW9ucy5sZW5ndGggLSAxXSA9PT0gJycpIHtcbiAgICAgIHdoaWxlIChzZWN0aW9ucy5sZW5ndGggPCA4KSBzZWN0aW9ucy5wdXNoKCcwJyk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9ucy5sZW5ndGggPCA4KSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoICYmIHNlY3Rpb25zW2ldICE9PSAnJzsgaSsrKTtcbiAgICAgIHZhciBhcmd2ID0gWyBpLCAxIF07XG4gICAgICBmb3IgKGkgPSA5IC0gc2VjdGlvbnMubGVuZ3RoOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGFyZ3YucHVzaCgnMCcpO1xuICAgICAgfVxuICAgICAgc2VjdGlvbnMuc3BsaWNlLmFwcGx5KHNlY3Rpb25zLCBhcmd2KTtcbiAgICB9XG5cbiAgICByZXN1bHQgPSBidWZmIHx8IG5ldyBCdWZmZXIob2Zmc2V0ICsgMTYpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdvcmQgPSBwYXJzZUludChzZWN0aW9uc1tpXSwgMTYpO1xuICAgICAgcmVzdWx0W29mZnNldCsrXSA9ICh3b3JkID4+IDgpICYgMHhmZjtcbiAgICAgIHJlc3VsdFtvZmZzZXQrK10gPSB3b3JkICYgMHhmZjtcbiAgICB9XG4gIH1cblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IEVycm9yKCdJbnZhbGlkIGlwIGFkZHJlc3M6ICcgKyBpcCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuaXAudG9TdHJpbmcgPSBmdW5jdGlvbihidWZmLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSB+fm9mZnNldDtcbiAgbGVuZ3RoID0gbGVuZ3RoIHx8IChidWZmLmxlbmd0aCAtIG9mZnNldCk7XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAobGVuZ3RoID09PSA0KSB7XG4gICAgLy8gSVB2NFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1ZmZbb2Zmc2V0ICsgaV0pO1xuICAgIH1cbiAgICByZXN1bHQgPSByZXN1bHQuam9pbignLicpO1xuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gMTYpIHtcbiAgICAvLyBJUHY2XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMikge1xuICAgICAgcmVzdWx0LnB1c2goYnVmZi5yZWFkVUludDE2QkUob2Zmc2V0ICsgaSkudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gICAgcmVzdWx0ID0gcmVzdWx0LmpvaW4oJzonKTtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvKF58OikwKDowKSo6MCg6fCQpLywgJyQxOjokMycpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC86ezMsNH0vLCAnOjonKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgaXB2NFJlZ2V4ID0gL14oXFxkezEsM31cXC4pezMsM31cXGR7MSwzfSQvO1xudmFyIGlwdjZSZWdleCA9XG4gICAgL14oOjopPygoKFxcZHsxLDN9XFwuKXszfShcXGR7MSwzfSl7MX0pPyhbMC05YS1mXSl7MCw0fTp7MCwyfSl7MSw4fSg6Oik/JC9pO1xuXG5pcC5pc1Y0Rm9ybWF0ID0gZnVuY3Rpb24oaXApIHtcbiAgcmV0dXJuIGlwdjRSZWdleC50ZXN0KGlwKTtcbn07XG5cbmlwLmlzVjZGb3JtYXQgPSBmdW5jdGlvbihpcCkge1xuICByZXR1cm4gaXB2NlJlZ2V4LnRlc3QoaXApO1xufTtcbmZ1bmN0aW9uIF9ub3JtYWxpemVGYW1pbHkoZmFtaWx5KSB7XG4gIHJldHVybiBmYW1pbHkgPyBmYW1pbHkudG9Mb3dlckNhc2UoKSA6ICdpcHY0Jztcbn1cblxuaXAuZnJvbVByZWZpeExlbiA9IGZ1bmN0aW9uKHByZWZpeGxlbiwgZmFtaWx5KSB7XG4gIGlmIChwcmVmaXhsZW4gPiAzMikge1xuICAgIGZhbWlseSA9ICdpcHY2JztcbiAgfSBlbHNlIHtcbiAgICBmYW1pbHkgPSBfbm9ybWFsaXplRmFtaWx5KGZhbWlseSk7XG4gIH1cblxuICB2YXIgbGVuID0gNDtcbiAgaWYgKGZhbWlseSA9PT0gJ2lwdjYnKSB7XG4gICAgbGVuID0gMTY7XG4gIH1cbiAgdmFyIGJ1ZmYgPSBuZXcgQnVmZmVyKGxlbik7XG5cbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBidWZmLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIHZhciBiaXRzID0gODtcbiAgICBpZiAocHJlZml4bGVuIDwgOCkge1xuICAgICAgYml0cyA9IHByZWZpeGxlbjtcbiAgICB9XG4gICAgcHJlZml4bGVuIC09IGJpdHM7XG5cbiAgICBidWZmW2ldID0gfigweGZmID4+IGJpdHMpICYgMHhmZjtcbiAgfVxuXG4gIHJldHVybiBpcC50b1N0cmluZyhidWZmKTtcbn07XG5cbmlwLm1hc2sgPSBmdW5jdGlvbihhZGRyLCBtYXNrKSB7XG4gIGFkZHIgPSBpcC50b0J1ZmZlcihhZGRyKTtcbiAgbWFzayA9IGlwLnRvQnVmZmVyKG1hc2spO1xuXG4gIHZhciByZXN1bHQgPSBuZXcgQnVmZmVyKE1hdGgubWF4KGFkZHIubGVuZ3RoLCBtYXNrLmxlbmd0aCkpO1xuXG4gIHZhciBpID0gMDtcbiAgLy8gU2FtZSBwcm90b2NvbCAtIGRvIGJpdHdpc2UgYW5kXG4gIGlmIChhZGRyLmxlbmd0aCA9PT0gbWFzay5sZW5ndGgpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYWRkci5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYWRkcltpXSAmIG1hc2tbaV07XG4gICAgfVxuICB9IGVsc2UgaWYgKG1hc2subGVuZ3RoID09PSA0KSB7XG4gICAgLy8gSVB2NiBhZGRyZXNzIGFuZCBJUHY0IG1hc2tcbiAgICAvLyAoTWFzayBsb3cgYml0cylcbiAgICBmb3IgKGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYWRkclthZGRyLmxlbmd0aCAtIDQgICsgaV0gJiBtYXNrW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJUHY2IG1hc2sgYW5kIElQdjQgYWRkclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aCAtIDY7IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyA6OmZmZmY6aXB2NFxuICAgIHJlc3VsdFsxMF0gPSAweGZmO1xuICAgIHJlc3VsdFsxMV0gPSAweGZmO1xuICAgIGZvciAoaSA9IDA7IGkgPCBhZGRyLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHRbaSArIDEyXSA9IGFkZHJbaV0gJiBtYXNrW2kgKyAxMl07XG4gICAgfVxuICAgIGkgPSBpICsgMTI7XG4gIH1cbiAgZm9yICg7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspXG4gICAgcmVzdWx0W2ldID0gMDtcblxuICByZXR1cm4gaXAudG9TdHJpbmcocmVzdWx0KTtcbn07XG5cbmlwLmNpZHIgPSBmdW5jdGlvbihjaWRyU3RyaW5nKSB7XG4gIHZhciBjaWRyUGFydHMgPSBjaWRyU3RyaW5nLnNwbGl0KCcvJyk7XG5cbiAgdmFyIGFkZHIgPSBjaWRyUGFydHNbMF07XG4gIGlmIChjaWRyUGFydHMubGVuZ3RoICE9PSAyKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBDSURSIHN1Ym5ldDogJyArIGFkZHIpO1xuXG4gIHZhciBtYXNrID0gaXAuZnJvbVByZWZpeExlbihwYXJzZUludChjaWRyUGFydHNbMV0sIDEwKSk7XG5cbiAgcmV0dXJuIGlwLm1hc2soYWRkciwgbWFzayk7XG59O1xuXG5pcC5zdWJuZXQgPSBmdW5jdGlvbihhZGRyLCBtYXNrKSB7XG4gIHZhciBuZXR3b3JrQWRkcmVzcyA9IGlwLnRvTG9uZyhpcC5tYXNrKGFkZHIsIG1hc2spKTtcblxuICAvLyBDYWxjdWxhdGUgdGhlIG1hc2sncyBsZW5ndGguXG4gIHZhciBtYXNrQnVmZmVyID0gaXAudG9CdWZmZXIobWFzayk7XG4gIHZhciBtYXNrTGVuZ3RoID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1hc2tCdWZmZXIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobWFza0J1ZmZlcltpXSA9PT0gMHhmZikge1xuICAgICAgbWFza0xlbmd0aCArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb2N0ZXQgPSBtYXNrQnVmZmVyW2ldICYgMHhmZjtcbiAgICAgIHdoaWxlIChvY3RldCkge1xuICAgICAgICBvY3RldCA9IChvY3RldCA8PCAxKSAmIDB4ZmY7XG4gICAgICAgIG1hc2tMZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgbnVtYmVyT2ZBZGRyZXNzZXMgPSBNYXRoLnBvdygyLCAzMiAtIG1hc2tMZW5ndGgpO1xuXG4gIHJldHVybiB7XG4gICAgbmV0d29ya0FkZHJlc3M6IGlwLmZyb21Mb25nKG5ldHdvcmtBZGRyZXNzKSxcbiAgICBmaXJzdEFkZHJlc3M6IG51bWJlck9mQWRkcmVzc2VzIDw9IDIgP1xuICAgICAgICAgICAgICAgICAgICBpcC5mcm9tTG9uZyhuZXR3b3JrQWRkcmVzcykgOlxuICAgICAgICAgICAgICAgICAgICBpcC5mcm9tTG9uZyhuZXR3b3JrQWRkcmVzcyArIDEpLFxuICAgIGxhc3RBZGRyZXNzOiBudW1iZXJPZkFkZHJlc3NlcyA8PSAyID9cbiAgICAgICAgICAgICAgICAgICAgaXAuZnJvbUxvbmcobmV0d29ya0FkZHJlc3MgKyBudW1iZXJPZkFkZHJlc3NlcyAtIDEpIDpcbiAgICAgICAgICAgICAgICAgICAgaXAuZnJvbUxvbmcobmV0d29ya0FkZHJlc3MgKyBudW1iZXJPZkFkZHJlc3NlcyAtIDIpLFxuICAgIGJyb2FkY2FzdEFkZHJlc3M6IGlwLmZyb21Mb25nKG5ldHdvcmtBZGRyZXNzICsgbnVtYmVyT2ZBZGRyZXNzZXMgLSAxKSxcbiAgICBzdWJuZXRNYXNrOiBtYXNrLFxuICAgIHN1Ym5ldE1hc2tMZW5ndGg6IG1hc2tMZW5ndGgsXG4gICAgbnVtSG9zdHM6IG51bWJlck9mQWRkcmVzc2VzIDw9IDIgP1xuICAgICAgICAgICAgICAgIG51bWJlck9mQWRkcmVzc2VzIDogbnVtYmVyT2ZBZGRyZXNzZXMgLSAyLFxuICAgIGxlbmd0aDogbnVtYmVyT2ZBZGRyZXNzZXMsXG4gICAgY29udGFpbnM6IGZ1bmN0aW9uKG90aGVyKSB7XG4gICAgICByZXR1cm4gbmV0d29ya0FkZHJlc3MgPT09IGlwLnRvTG9uZyhpcC5tYXNrKG90aGVyLCBtYXNrKSk7XG4gICAgfVxuICB9O1xufTtcblxuaXAuY2lkclN1Ym5ldCA9IGZ1bmN0aW9uKGNpZHJTdHJpbmcpIHtcbiAgdmFyIGNpZHJQYXJ0cyA9IGNpZHJTdHJpbmcuc3BsaXQoJy8nKTtcblxuICB2YXIgYWRkciA9IGNpZHJQYXJ0c1swXTtcbiAgaWYgKGNpZHJQYXJ0cy5sZW5ndGggIT09IDIpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIENJRFIgc3VibmV0OiAnICsgYWRkcik7XG5cbiAgdmFyIG1hc2sgPSBpcC5mcm9tUHJlZml4TGVuKHBhcnNlSW50KGNpZHJQYXJ0c1sxXSwgMTApKTtcblxuICByZXR1cm4gaXAuc3VibmV0KGFkZHIsIG1hc2spO1xufTtcblxuaXAubm90ID0gZnVuY3Rpb24oYWRkcikge1xuICB2YXIgYnVmZiA9IGlwLnRvQnVmZmVyKGFkZHIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICBidWZmW2ldID0gMHhmZiBeIGJ1ZmZbaV07XG4gIH1cbiAgcmV0dXJuIGlwLnRvU3RyaW5nKGJ1ZmYpO1xufTtcblxuaXAub3IgPSBmdW5jdGlvbihhLCBiKSB7XG4gIGEgPSBpcC50b0J1ZmZlcihhKTtcbiAgYiA9IGlwLnRvQnVmZmVyKGIpO1xuXG4gIC8vIHNhbWUgcHJvdG9jb2xcbiAgaWYgKGEubGVuZ3RoID09PSBiLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkge1xuICAgICAgYVtpXSB8PSBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gaXAudG9TdHJpbmcoYSk7XG5cbiAgLy8gbWl4ZWQgcHJvdG9jb2xzXG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ1ZmYgPSBhO1xuICAgIHZhciBvdGhlciA9IGI7XG4gICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgIGJ1ZmYgPSBiO1xuICAgICAgb3RoZXIgPSBhO1xuICAgIH1cblxuICAgIHZhciBvZmZzZXQgPSBidWZmLmxlbmd0aCAtIG90aGVyLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gb2Zmc2V0OyBpIDwgYnVmZi5sZW5ndGg7ICsraSkge1xuICAgICAgYnVmZltpXSB8PSBvdGhlcltpIC0gb2Zmc2V0XTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXAudG9TdHJpbmcoYnVmZik7XG4gIH1cbn07XG5cbmlwLmlzRXF1YWwgPSBmdW5jdGlvbihhLCBiKSB7XG4gIGEgPSBpcC50b0J1ZmZlcihhKTtcbiAgYiA9IGlwLnRvQnVmZmVyKGIpO1xuXG4gIC8vIFNhbWUgcHJvdG9jb2xcbiAgaWYgKGEubGVuZ3RoID09PSBiLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBTd2FwXG4gIGlmIChiLmxlbmd0aCA9PT0gNCkge1xuICAgIHZhciB0ID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdDtcbiAgfVxuXG4gIC8vIGEgLSBJUHY0LCBiIC0gSVB2NlxuICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICBpZiAoYltpXSAhPT0gMCkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHdvcmQgPSBiLnJlYWRVSW50MTZCRSgxMCk7XG4gIGlmICh3b3JkICE9PSAwICYmIHdvcmQgIT09IDB4ZmZmZikgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaSArIDEyXSkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5pcC5pc1ByaXZhdGUgPSBmdW5jdGlvbihhZGRyKSB7XG4gIHJldHVybiAvXig6OmZ7NH06KT8xMFxcLihbMC05XXsxLDN9KVxcLihbMC05XXsxLDN9KVxcLihbMC05XXsxLDN9KSQvaVxuICAgICAgLnRlc3QoYWRkcikgfHxcbiAgICAvXig6OmZ7NH06KT8xOTJcXC4xNjhcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkkL2kudGVzdChhZGRyKSB8fFxuICAgIC9eKDo6Zns0fTopPzE3MlxcLigxWzYtOV18MlxcZHwzMHwzMSlcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkkL2lcbiAgICAgIC50ZXN0KGFkZHIpIHx8XG4gICAgL14oOjpmezR9Oik/MTI3XFwuKFswLTldezEsM30pXFwuKFswLTldezEsM30pXFwuKFswLTldezEsM30pJC9pLnRlc3QoYWRkcikgfHxcbiAgICAvXig6OmZ7NH06KT8xNjlcXC4yNTRcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkkL2kudGVzdChhZGRyKSB8fFxuICAgIC9eZltjZF1bMC05YS1mXXsyfTovaS50ZXN0KGFkZHIpIHx8XG4gICAgL15mZTgwOi9pLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6MSQvLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6JC8udGVzdChhZGRyKTtcbn07XG5cbmlwLmlzUHVibGljID0gZnVuY3Rpb24oYWRkcikge1xuICByZXR1cm4gIWlwLmlzUHJpdmF0ZShhZGRyKTtcbn07XG5cbmlwLmlzTG9vcGJhY2sgPSBmdW5jdGlvbihhZGRyKSB7XG4gIHJldHVybiAvXig6OmZ7NH06KT8xMjdcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSlcXC4oWzAtOV17MSwzfSkvXG4gICAgICAudGVzdChhZGRyKSB8fFxuICAgIC9eZmU4MDo6MSQvLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6MSQvLnRlc3QoYWRkcikgfHxcbiAgICAvXjo6JC8udGVzdChhZGRyKTtcbn07XG5cbmlwLmxvb3BiYWNrID0gZnVuY3Rpb24oZmFtaWx5KSB7XG4gIC8vXG4gIC8vIERlZmF1bHQgdG8gYGlwdjRgXG4gIC8vXG4gIGZhbWlseSA9IF9ub3JtYWxpemVGYW1pbHkoZmFtaWx5KTtcblxuICBpZiAoZmFtaWx5ICE9PSAnaXB2NCcgJiYgZmFtaWx5ICE9PSAnaXB2NicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhbWlseSBtdXN0IGJlIGlwdjQgb3IgaXB2NicpO1xuICB9XG5cbiAgcmV0dXJuIGZhbWlseSA9PT0gJ2lwdjQnID8gJzEyNy4wLjAuMScgOiAnZmU4MDo6MSc7XG59O1xuXG4vL1xuLy8gIyMjIGZ1bmN0aW9uIGFkZHJlc3MgKG5hbWUsIGZhbWlseSlcbi8vICMjIyMgQG5hbWUge3N0cmluZ3wncHVibGljJ3wncHJpdmF0ZSd9ICoqT3B0aW9uYWwqKiBOYW1lIG9yIHNlY3VyaXR5XG4vLyAgICAgIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbi8vICMjIyMgQGZhbWlseSB7aXB2NHxpcHY2fSAqKk9wdGlvbmFsKiogSVAgZmFtaWx5IG9mIHRoZSBhZGRyZXNzIChkZWZhdWx0c1xuLy8gICAgICB0byBpcHY0KS5cbi8vXG4vLyBSZXR1cm5zIHRoZSBhZGRyZXNzIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2Ugb24gdGhlIGN1cnJlbnQgc3lzdGVtIHdpdGhcbi8vIHRoZSBzcGVjaWZpZWQgYG5hbWVgOlxuLy8gICAqIFN0cmluZzogRmlyc3QgYGZhbWlseWAgYWRkcmVzcyBvZiB0aGUgaW50ZXJmYWNlLlxuLy8gICAgICAgICAgICAgSWYgbm90IGZvdW5kIHNlZSBgdW5kZWZpbmVkYC5cbi8vICAgKiAncHVibGljJzogdGhlIGZpcnN0IHB1YmxpYyBpcCBhZGRyZXNzIG9mIGZhbWlseS5cbi8vICAgKiAncHJpdmF0ZSc6IHRoZSBmaXJzdCBwcml2YXRlIGlwIGFkZHJlc3Mgb2YgZmFtaWx5LlxuLy8gICAqIHVuZGVmaW5lZDogRmlyc3QgYWRkcmVzcyB3aXRoIGBpcHY0YCBvciBsb29wYmFjayBhZGRyZXNzIGAxMjcuMC4wLjFgLlxuLy9cbmlwLmFkZHJlc3MgPSBmdW5jdGlvbihuYW1lLCBmYW1pbHkpIHtcbiAgdmFyIGludGVyZmFjZXMgPSBvcy5uZXR3b3JrSW50ZXJmYWNlcygpO1xuICB2YXIgYWxsO1xuXG4gIC8vXG4gIC8vIERlZmF1bHQgdG8gYGlwdjRgXG4gIC8vXG4gIGZhbWlseSA9IF9ub3JtYWxpemVGYW1pbHkoZmFtaWx5KTtcblxuICAvL1xuICAvLyBJZiBhIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlIGhhcyBiZWVuIG5hbWVkLFxuICAvLyByZXR1cm4gdGhlIGFkZHJlc3MuXG4gIC8vXG4gIGlmIChuYW1lICYmIG5hbWUgIT09ICdwcml2YXRlJyAmJiBuYW1lICE9PSAncHVibGljJykge1xuICAgIHZhciByZXMgPSBpbnRlcmZhY2VzW25hbWVdLmZpbHRlcihmdW5jdGlvbihkZXRhaWxzKSB7XG4gICAgICB2YXIgaXRlbUZhbWlseSA9IGRldGFpbHMuZmFtaWx5LnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gaXRlbUZhbWlseSA9PT0gZmFtaWx5O1xuICAgIH0pO1xuICAgIGlmIChyZXMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzWzBdLmFkZHJlc3M7XG4gIH1cblxuICB2YXIgYWxsID0gT2JqZWN0LmtleXMoaW50ZXJmYWNlcykubWFwKGZ1bmN0aW9uIChuaWMpIHtcbiAgICAvL1xuICAgIC8vIE5vdGU6IG5hbWUgd2lsbCBvbmx5IGJlIGBwdWJsaWNgIG9yIGBwcml2YXRlYFxuICAgIC8vIHdoZW4gdGhpcyBpcyBjYWxsZWQuXG4gICAgLy9cbiAgICB2YXIgYWRkcmVzc2VzID0gaW50ZXJmYWNlc1tuaWNdLmZpbHRlcihmdW5jdGlvbiAoZGV0YWlscykge1xuICAgICAgZGV0YWlscy5mYW1pbHkgPSBkZXRhaWxzLmZhbWlseS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGRldGFpbHMuZmFtaWx5ICE9PSBmYW1pbHkgfHwgaXAuaXNMb29wYmFjayhkZXRhaWxzLmFkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuYW1lID09PSAncHVibGljJyA/IGlwLmlzUHJpdmF0ZShkZXRhaWxzLmFkZHJlc3MpIDpcbiAgICAgICAgICBpcC5pc1B1YmxpYyhkZXRhaWxzLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFkZHJlc3Nlcy5sZW5ndGggPyBhZGRyZXNzZXNbMF0uYWRkcmVzcyA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIHJldHVybiAhYWxsLmxlbmd0aCA/IGlwLmxvb3BiYWNrKGZhbWlseSkgOiBhbGxbMF07XG59O1xuXG5pcC50b0xvbmcgPSBmdW5jdGlvbihpcCkge1xuICB2YXIgaXBsID0gMDtcbiAgaXAuc3BsaXQoJy4nKS5mb3JFYWNoKGZ1bmN0aW9uKG9jdGV0KSB7XG4gICAgaXBsIDw8PSA4O1xuICAgIGlwbCArPSBwYXJzZUludChvY3RldCk7XG4gIH0pO1xuICByZXR1cm4oaXBsID4+PiAwKTtcbn07XG5cbmlwLmZyb21Mb25nID0gZnVuY3Rpb24oaXBsKSB7XG4gIHJldHVybiAoKGlwbCA+Pj4gMjQpICsgJy4nICtcbiAgICAgIChpcGwgPj4gMTYgJiAyNTUpICsgJy4nICtcbiAgICAgIChpcGwgPj4gOCAmIDI1NSkgKyAnLicgK1xuICAgICAgKGlwbCAmIDI1NSkgKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5jb25zdCBpcFJlZ2V4ID0gcmVxdWlyZSgnaXAtcmVnZXgnKTtcblxuY29uc3QgaXNJcCA9IHN0cmluZyA9PiBpcFJlZ2V4KHtleGFjdDogdHJ1ZX0pLnRlc3Qoc3RyaW5nKTtcbmlzSXAudjQgPSBzdHJpbmcgPT4gaXBSZWdleC52NCh7ZXhhY3Q6IHRydWV9KS50ZXN0KHN0cmluZyk7XG5pc0lwLnY2ID0gc3RyaW5nID0+IGlwUmVnZXgudjYoe2V4YWN0OiB0cnVlfSkudGVzdChzdHJpbmcpO1xuaXNJcC52ZXJzaW9uID0gc3RyaW5nID0+IGlzSXAoc3RyaW5nKSA/IChpc0lwLnY0KHN0cmluZykgPyA0IDogNikgOiB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJcDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgd29yZCA9ICdbYS1mQS1GXFxcXGQ6XSc7XG5jb25zdCBiID0gb3B0aW9ucyA9PiBvcHRpb25zICYmIG9wdGlvbnMuaW5jbHVkZUJvdW5kYXJpZXMgP1xuXHRgKD86KD88PVxcXFxzfF4pKD89JHt3b3JkfSl8KD88PSR7d29yZH0pKD89XFxcXHN8JCkpYCA6XG5cdCcnO1xuXG5jb25zdCB2NCA9ICcoPzoyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldXFxcXGR8XFxcXGQpKD86XFxcXC4oPzoyNVswLTVdfDJbMC00XVxcXFxkfDFcXFxcZFxcXFxkfFsxLTldXFxcXGR8XFxcXGQpKXszfSc7XG5cbmNvbnN0IHY2c2VnID0gJ1thLWZBLUZcXFxcZF17MSw0fSc7XG5jb25zdCB2NiA9IGBcbihcbig/OiR7djZzZWd9Oil7N30oPzoke3Y2c2VnfXw6KXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE6MjozOjQ6NTo2Ojc6OiAgMToyOjM6NDo1OjY6Nzo4XG4oPzoke3Y2c2VnfTopezZ9KD86JHt2NH18OiR7djZzZWd9fDopfCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxOjI6Mzo0OjU6Njo6ICAgIDE6MjozOjQ6NTo2Ojo4ICAgMToyOjM6NDo1OjY6OjggIDE6MjozOjQ6NTo2OjoxLjIuMy40XG4oPzoke3Y2c2VnfTopezV9KD86OiR7djR9fCg6JHt2NnNlZ30pezEsMn18Oil8ICAgICAgICAgICAgICAgICAvLyAxOjI6Mzo0OjU6OiAgICAgIDE6MjozOjQ6NTo6Nzo4ICAgMToyOjM6NDo1Ojo4ICAgIDE6MjozOjQ6NTo6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezR9KD86KDoke3Y2c2VnfSl7MCwxfToke3Y0fXwoOiR7djZzZWd9KXsxLDN9fDopfCAvLyAxOjI6Mzo0OjogICAgICAgIDE6MjozOjQ6OjY6Nzo4ICAgMToyOjM6NDo6OCAgICAgIDE6MjozOjQ6OjY6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezN9KD86KDoke3Y2c2VnfSl7MCwyfToke3Y0fXwoOiR7djZzZWd9KXsxLDR9fDopfCAvLyAxOjI6Mzo6ICAgICAgICAgIDE6MjozOjo1OjY6Nzo4ICAgMToyOjM6OjggICAgICAgIDE6MjozOjo1OjY6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezJ9KD86KDoke3Y2c2VnfSl7MCwzfToke3Y0fXwoOiR7djZzZWd9KXsxLDV9fDopfCAvLyAxOjI6OiAgICAgICAgICAgIDE6Mjo6NDo1OjY6Nzo4ICAgMToyOjo4ICAgICAgICAgIDE6Mjo6NDo1OjY6NzoxLjIuMy40XG4oPzoke3Y2c2VnfTopezF9KD86KDoke3Y2c2VnfSl7MCw0fToke3Y0fXwoOiR7djZzZWd9KXsxLDZ9fDopfCAvLyAxOjogICAgICAgICAgICAgIDE6OjM6NDo1OjY6Nzo4ICAgMTo6OCAgICAgICAgICAgIDE6OjM6NDo1OjY6NzoxLjIuMy40XG4oPzo6KCg/Ojoke3Y2c2VnfSl7MCw1fToke3Y0fXwoPzo6JHt2NnNlZ30pezEsN318OikpICAgICAgICAgICAvLyA6OjI6Mzo0OjU6Njo3OjggIDo6MjozOjQ6NTo2Ojc6OCAgOjo4ICAgICAgICAgICAgIDo6MS4yLjMuNFxuKSglWzAtOWEtekEtWl17MSx9KT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJWV0aDAgICAgICAgICAgICAlMVxuYC5yZXBsYWNlKC9cXHMqXFwvXFwvLiokL2dtLCAnJykucmVwbGFjZSgvXFxuL2csICcnKS50cmltKCk7XG5cbmNvbnN0IGlwID0gb3B0aW9ucyA9PiBvcHRpb25zICYmIG9wdGlvbnMuZXhhY3QgP1xuXHRuZXcgUmVnRXhwKGAoPzpeJHt2NH0kKXwoPzpeJHt2Nn0kKWApIDpcblx0bmV3IFJlZ0V4cChgKD86JHtiKG9wdGlvbnMpfSR7djR9JHtiKG9wdGlvbnMpfSl8KD86JHtiKG9wdGlvbnMpfSR7djZ9JHtiKG9wdGlvbnMpfSlgLCAnZycpO1xuXG5pcC52NCA9IG9wdGlvbnMgPT4gb3B0aW9ucyAmJiBvcHRpb25zLmV4YWN0ID8gbmV3IFJlZ0V4cChgXiR7djR9JGApIDogbmV3IFJlZ0V4cChgJHtiKG9wdGlvbnMpfSR7djR9JHtiKG9wdGlvbnMpfWAsICdnJyk7XG5pcC52NiA9IG9wdGlvbnMgPT4gb3B0aW9ucyAmJiBvcHRpb25zLmV4YWN0ID8gbmV3IFJlZ0V4cChgXiR7djZ9JGApIDogbmV3IFJlZ0V4cChgJHtiKG9wdGlvbnMpfSR7djZ9JHtiKG9wdGlvbnMpfWAsICdnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXA7XG4iLCIvKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBtdWx0aWNvZGVjIHNwZWNpZmljYXRpb24uXG4gKlxuICogQG1vZHVsZSBtdWx0aWNvZGVjXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbXVsdGljb2RlYyA9IHJlcXVpcmUoJ211bHRpY29kZWMnKVxuICpcbiAqIGNvbnN0IHByZWZpeGVkUHJvdG9idWYgPSBtdWx0aWNvZGVjLmFkZFByZWZpeCgncHJvdG9idWYnLCBwcm90b2J1ZkJ1ZmZlcilcbiAqIC8vIHByZWZpeGVkUHJvdG9idWYgMHg1MC4uLlxuICpcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHZhcmludCA9IHJlcXVpcmUoJ3ZhcmludCcpXG5jb25zdCBpbnRUYWJsZSA9IHJlcXVpcmUoJy4vaW50LXRhYmxlJylcbmNvbnN0IGNvZGVjTmFtZVRvQ29kZVZhcmludCA9IHJlcXVpcmUoJy4vdmFyaW50LXRhYmxlJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKVxuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHNcblxuLyoqXG4gKiBQcmVmaXggYSBidWZmZXIgd2l0aCBhIG11bHRpY29kZWMtcGFja2VkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbXVsdGljb2RlY1N0ck9yQ29kZVxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGFcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMuYWRkUHJlZml4ID0gKG11bHRpY29kZWNTdHJPckNvZGUsIGRhdGEpID0+IHtcbiAgbGV0IHByZWZpeFxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobXVsdGljb2RlY1N0ck9yQ29kZSkpIHtcbiAgICBwcmVmaXggPSB1dGlsLnZhcmludEJ1ZmZlckVuY29kZShtdWx0aWNvZGVjU3RyT3JDb2RlKVxuICB9IGVsc2Uge1xuICAgIGlmIChjb2RlY05hbWVUb0NvZGVWYXJpbnRbbXVsdGljb2RlY1N0ck9yQ29kZV0pIHtcbiAgICAgIHByZWZpeCA9IGNvZGVjTmFtZVRvQ29kZVZhcmludFttdWx0aWNvZGVjU3RyT3JDb2RlXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ211bHRpY29kZWMgbm90IHJlY29nbml6ZWQnKVxuICAgIH1cbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbcHJlZml4LCBkYXRhXSlcbn1cblxuLyoqXG4gKiBEZWNhcHN1bGF0ZSB0aGUgbXVsdGljb2RlYy1wYWNrZWQgcHJlZml4IGZyb20gdGhlIGRhdGEuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGRhdGFcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMucm1QcmVmaXggPSAoZGF0YSkgPT4ge1xuICB2YXJpbnQuZGVjb2RlKGRhdGEpXG4gIHJldHVybiBkYXRhLnNsaWNlKHZhcmludC5kZWNvZGUuYnl0ZXMpXG59XG5cbi8qKlxuICogR2V0IHRoZSBjb2RlYyBvZiB0aGUgcHJlZml4ZWQgZGF0YS5cbiAqIEBwYXJhbSB7QnVmZmVyfSBwcmVmaXhlZERhdGFcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0Q29kZWMgPSAocHJlZml4ZWREYXRhKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSB2YXJpbnQuZGVjb2RlKHByZWZpeGVkRGF0YSlcbiAgY29uc3QgY29kZWNOYW1lID0gaW50VGFibGUuZ2V0KGNvZGUpXG4gIGlmIChjb2RlY05hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ29kZSAke2NvZGV9IG5vdCBmb3VuZGApXG4gIH1cbiAgcmV0dXJuIGNvZGVjTmFtZVxufVxuXG4vKipcbiAqIEdldCB0aGUgbmFtZSBvZiB0aGUgY29kZWMuXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZWNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydHMuZ2V0TmFtZSA9IChjb2RlYykgPT4ge1xuICByZXR1cm4gaW50VGFibGUuZ2V0KGNvZGVjKVxufVxuXG4vKipcbiAqIEdldCB0aGUgY29kZSBvZiB0aGUgY29kZWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnRzLmdldE51bWJlciA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSBjb2RlY05hbWVUb0NvZGVWYXJpbnRbbmFtZV1cbiAgaWYgKGNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29kZWMgYCcgKyBuYW1lICsgJ2Agbm90IGZvdW5kJylcbiAgfVxuICByZXR1cm4gdXRpbC52YXJpbnRCdWZmZXJEZWNvZGUoY29kZSlbMF1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgb2YgdGhlIHByZWZpeGVkIGRhdGEuXG4gKiBAcGFyYW0ge0J1ZmZlcn0gcHJlZml4ZWREYXRhXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnRzLmdldENvZGUgPSAocHJlZml4ZWREYXRhKSA9PiB7XG4gIHJldHVybiB2YXJpbnQuZGVjb2RlKHByZWZpeGVkRGF0YSlcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgYXMgdmFyaW50IG9mIGEgY29kZWMgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlY05hbWVcbiAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gKi9cbmV4cG9ydHMuZ2V0Q29kZVZhcmludCA9IChjb2RlY05hbWUpID0+IHtcbiAgY29uc3QgY29kZSA9IGNvZGVjTmFtZVRvQ29kZVZhcmludFtjb2RlY05hbWVdXG4gIGlmIChjb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvZGVjIGAnICsgY29kZWNOYW1lICsgJ2Agbm90IGZvdW5kJylcbiAgfVxuICByZXR1cm4gY29kZVxufVxuXG4vKipcbiAqIEdldCB0aGUgdmFyaW50IG9mIGEgY29kZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlXG4gKiBAcmV0dXJucyB7QXJyYXkuPG51bWJlcj59XG4gKi9cbmV4cG9ydHMuZ2V0VmFyaW50ID0gKGNvZGUpID0+IHtcbiAgcmV0dXJuIHZhcmludC5lbmNvZGUoY29kZSlcbn1cblxuLy8gTWFrZSB0aGUgY29uc3RhbnRzIHRvcC1sZXZlbCBjb25zdGFudHNcbmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJylcbk9iamVjdC5hc3NpZ24oZXhwb3J0cywgY29uc3RhbnRzKVxuXG4vLyBIdW1hbiBmcmllbmRseSBuYW1lcyBmb3IgcHJpbnRpbmcsIGUuZy4gaW4gZXJyb3IgbWVzc2FnZXNcbmV4cG9ydHMucHJpbnQgPSByZXF1aXJlKCcuL3ByaW50JylcbiIsIid1c2Ugc3RyaWN0J1xuY29uc3QgYmFzZVRhYmxlID0gcmVxdWlyZSgnLi9iYXNlLXRhYmxlLmpzb24nKVxuXG4vLyBtYXAgZm9yIGhleFN0cmluZyAtPiBjb2RlY05hbWVcbmNvbnN0IG5hbWVUYWJsZSA9IG5ldyBNYXAoKVxuXG5mb3IgKGNvbnN0IGVuY29kaW5nTmFtZSBpbiBiYXNlVGFibGUpIHtcbiAgY29uc3QgY29kZSA9IGJhc2VUYWJsZVtlbmNvZGluZ05hbWVdXG4gIG5hbWVUYWJsZS5zZXQoY29kZSwgZW5jb2RpbmdOYW1lKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUobmFtZVRhYmxlKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGJhc2VUYWJsZSA9IHJlcXVpcmUoJy4vYmFzZS10YWJsZS5qc29uJylcbmNvbnN0IHZhcmludEVuY29kZSA9IHJlcXVpcmUoJy4vdXRpbCcpLnZhcmludEVuY29kZVxuXG4vLyBtYXAgZm9yIGNvZGVjTmFtZSAtPiBjb2RlVmFyaW50QnVmZmVyXG5jb25zdCB2YXJpbnRUYWJsZSA9IHt9XG5cbmZvciAoY29uc3QgZW5jb2RpbmdOYW1lIGluIGJhc2VUYWJsZSkge1xuICBjb25zdCBjb2RlID0gYmFzZVRhYmxlW2VuY29kaW5nTmFtZV1cbiAgdmFyaW50VGFibGVbZW5jb2RpbmdOYW1lXSA9IHZhcmludEVuY29kZShjb2RlKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUodmFyaW50VGFibGUpXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgdGFibGUgPSByZXF1aXJlKCcuL2Jhc2UtdGFibGUuanNvbicpXG5cbi8vIG1hcCBmb3IgY29kZWNDb25zdGFudCAtPiBjb2RlXG5jb25zdCBjb25zdGFudHMgPSB7fVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBjb2RlXSBvZiBPYmplY3QuZW50cmllcyh0YWJsZSkpIHtcbiAgY29uc3RhbnRzW25hbWUudG9VcHBlckNhc2UoKS5yZXBsYWNlKC8tL2csICdfJyldID0gY29kZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUoY29uc3RhbnRzKVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHRhYmxlID0gcmVxdWlyZSgnLi9iYXNlLXRhYmxlLmpzb24nKVxuXG4vLyBtYXAgZm9yIGNvZGUgLT4gcHJpbnQgZnJpZW5kbHkgbmFtZVxuY29uc3QgdGFibGVCeUNvZGUgPSB7fVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBjb2RlXSBvZiBPYmplY3QuZW50cmllcyh0YWJsZSkpIHtcbiAgaWYgKHRhYmxlQnlDb2RlW2NvZGVdID09PSB1bmRlZmluZWQpIHRhYmxlQnlDb2RlW2NvZGVdID0gbmFtZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5mcmVlemUodGFibGVCeUNvZGUpXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgbWggPSByZXF1aXJlKCdtdWx0aWhhc2hlcycpXG5cbnZhciBDSURVdGlsID0ge1xuICAvKipcbiAgICogVGVzdCBpZiB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSB2YWxpZCBDSUQgb2JqZWN0LlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgaWYgaXQgaXMgbm90LlxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBpdCBpcyBhIHZhbGlkIENJRC5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IG90aGVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBjaGVja0NJRENvbXBvbmVudHM6IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIGlmIChvdGhlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJ251bGwgdmFsdWVzIGFyZSBub3QgdmFsaWQgQ0lEcydcbiAgICB9XG5cbiAgICBpZiAoIShvdGhlci52ZXJzaW9uID09PSAwIHx8IG90aGVyLnZlcnNpb24gPT09IDEpKSB7XG4gICAgICByZXR1cm4gJ0ludmFsaWQgdmVyc2lvbiwgbXVzdCBiZSBhIG51bWJlciBlcXVhbCB0byAxIG9yIDAnXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvdGhlci5jb2RlYyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiAnY29kZWMgbXVzdCBiZSBzdHJpbmcnXG4gICAgfVxuXG4gICAgaWYgKG90aGVyLnZlcnNpb24gPT09IDApIHtcbiAgICAgIGlmIChvdGhlci5jb2RlYyAhPT0gJ2RhZy1wYicpIHtcbiAgICAgICAgcmV0dXJuIFwiY29kZWMgbXVzdCBiZSAnZGFnLXBiJyBmb3IgQ0lEdjBcIlxuICAgICAgfVxuICAgICAgaWYgKG90aGVyLm11bHRpYmFzZU5hbWUgIT09ICdiYXNlNThidGMnKSB7XG4gICAgICAgIHJldHVybiBcIm11bHRpYmFzZU5hbWUgbXVzdCBiZSAnYmFzZTU4YnRjJyBmb3IgQ0lEdjBcIlxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG90aGVyLm11bHRpaGFzaCkpIHtcbiAgICAgIHJldHVybiAnbXVsdGloYXNoIG11c3QgYmUgYSBCdWZmZXInXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIG1oLnZhbGlkYXRlKG90aGVyLm11bHRpaGFzaClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCBlcnJvck1zZyA9IGVyci5tZXNzYWdlXG4gICAgICBpZiAoIWVycm9yTXNnKSB7IC8vIEp1c3QgaW4gY2FzZSBtaC52YWxpZGF0ZSgpIHRocm93cyBhbiBlcnJvciB3aXRoIGVtcHR5IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgZXJyb3JNc2cgPSAnTXVsdGloYXNoIHZhbGlkYXRpb24gZmFpbGVkJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yTXNnXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ0lEVXRpbFxuIiwiLypcbiAqIFtoaS1iYXNlMzJde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW4xNzgvaGktYmFzZTMyfVxuICpcbiAqIEB2ZXJzaW9uIDAuNS4wXG4gKiBAYXV0aG9yIENoZW4sIFlpLUN5dWFuIFtlbW4xNzhAZ21haWwuY29tXVxuICogQGNvcHlyaWdodCBDaGVuLCBZaS1DeXVhbiAyMDE1LTIwMThcbiAqIEBsaWNlbnNlIE1JVFxuICovXG4vKmpzbGludCBiaXR3aXNlOiB0cnVlICovXG4oZnVuY3Rpb24gKCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgdmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyA/IHdpbmRvdyA6IHt9O1xuICB2YXIgTk9ERV9KUyA9ICFyb290LkhJX0JBU0UzMl9OT19OT0RFX0pTICYmIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbiAgaWYgKE5PREVfSlMpIHtcbiAgICByb290ID0gZ2xvYmFsO1xuICB9XG4gIHZhciBDT01NT05fSlMgPSAhcm9vdC5ISV9CQVNFMzJfTk9fQ09NTU9OX0pTICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzO1xuICB2YXIgQU1EID0gdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kO1xuICB2YXIgQkFTRTMyX0VOQ09ERV9DSEFSID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3Jy5zcGxpdCgnJyk7XG4gIHZhciBCQVNFMzJfREVDT0RFX0NIQVIgPSB7XG4gICAgJ0EnOiAwLCAnQic6IDEsICdDJzogMiwgJ0QnOiAzLCAnRSc6IDQsICdGJzogNSwgJ0cnOiA2LCAnSCc6IDcsICdJJzogOCxcbiAgICAnSic6IDksICdLJzogMTAsICdMJzogMTEsICdNJzogMTIsICdOJzogMTMsICdPJzogMTQsICdQJzogMTUsICdRJzogMTYsXG4gICAgJ1InOiAxNywgJ1MnOiAxOCwgJ1QnOiAxOSwgJ1UnOiAyMCwgJ1YnOiAyMSwgJ1cnOiAyMiwgJ1gnOiAyMywgJ1knOiAyNCxcbiAgICAnWic6IDI1LCAnMic6IDI2LCAnMyc6IDI3LCAnNCc6IDI4LCAnNSc6IDI5LCAnNic6IDMwLCAnNyc6IDMxXG4gIH07XG5cbiAgdmFyIGJsb2NrcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcblxuICB2YXIgdGhyb3dJbnZhbGlkVXRmOCA9IGZ1bmN0aW9uIChwb3NpdGlvbiwgcGFydGlhbCkge1xuICAgIGlmIChwYXJ0aWFsLmxlbmd0aCA+IDEwKSB7XG4gICAgICBwYXJ0aWFsID0gJy4uLicgKyBwYXJ0aWFsLnN1YnN0cigtMTApO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdEZWNvZGVkIGRhdGEgaXMgbm90IHZhbGlkIFVURi04LidcbiAgICAgICsgJyBNYXliZSB0cnkgYmFzZTMyLmRlY29kZS5hc0J5dGVzKCk/J1xuICAgICAgKyAnIFBhcnRpYWwgZGF0YSBhZnRlciByZWFkaW5nICcgKyBwb3NpdGlvbiArICcgYnl0ZXM6ICcgKyBwYXJ0aWFsICsgJyA8LScpO1xuICAgIGVyci5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRocm93IGVycjtcbiAgfTtcblxuICB2YXIgdG9VdGY4U3RyaW5nID0gZnVuY3Rpb24gKGJ5dGVzKSB7XG4gICAgdmFyIHN0ciA9ICcnLCBsZW5ndGggPSBieXRlcy5sZW5ndGgsIGkgPSAwLCBmb2xsb3dpbmdDaGFycyA9IDAsIGIsIGM7XG4gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICAgIGIgPSBieXRlc1tpKytdO1xuICAgICAgaWYgKGIgPD0gMHg3Rikge1xuICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKGIgPiAweEJGICYmIGIgPD0gMHhERikge1xuICAgICAgICBjID0gYiAmIDB4MUY7XG4gICAgICAgIGZvbGxvd2luZ0NoYXJzID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoYiA8PSAweEVGKSB7XG4gICAgICAgIGMgPSBiICYgMHgwRjtcbiAgICAgICAgZm9sbG93aW5nQ2hhcnMgPSAyO1xuICAgICAgfSBlbHNlIGlmIChiIDw9IDB4RjcpIHtcbiAgICAgICAgYyA9IGIgJiAweDA3O1xuICAgICAgICBmb2xsb3dpbmdDaGFycyA9IDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0ludmFsaWRVdGY4KGksIHN0cik7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm9sbG93aW5nQ2hhcnM7ICsraikge1xuICAgICAgICBiID0gYnl0ZXNbaSsrXTtcbiAgICAgICAgaWYgKGIgPCAweDgwIHx8IGIgPiAweEJGKSB7XG4gICAgICAgICAgdGhyb3dJbnZhbGlkVXRmOChpLCBzdHIpO1xuICAgICAgICB9XG4gICAgICAgIGMgPDw9IDY7XG4gICAgICAgIGMgKz0gYiAmIDB4M0Y7XG4gICAgICB9XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERGRkYpIHtcbiAgICAgICAgdGhyb3dJbnZhbGlkVXRmOChpLCBzdHIpO1xuICAgICAgfVxuICAgICAgaWYgKGMgPiAweDEwRkZGRikge1xuICAgICAgICB0aHJvd0ludmFsaWRVdGY4KGksIHN0cik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjIDw9IDB4RkZGRikge1xuICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGMgLT0gMHgxMDAwMDtcbiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gMTApICsgMHhEODAwKTtcbiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiAweDNGRikgKyAweERDMDApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIHZhciBkZWNvZGVBc0J5dGVzID0gZnVuY3Rpb24gKGJhc2UzMlN0cikge1xuICAgIGlmICghL15bQS1aMi03PV0rJC8udGVzdChiYXNlMzJTdHIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmFzZTMyIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgYmFzZTMyU3RyID0gYmFzZTMyU3RyLnJlcGxhY2UoLz0vZywgJycpO1xuICAgIHZhciB2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIGJ5dGVzID0gW10sIGluZGV4ID0gMCwgbGVuZ3RoID0gYmFzZTMyU3RyLmxlbmd0aDtcblxuICAgIC8vIDQgY2hhciB0byAzIGJ5dGVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGNvdW50ID0gbGVuZ3RoID4+IDMgPDwgMzsgaSA8IGNvdW50Oykge1xuICAgICAgdjEgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHYyID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MyA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjQgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY1ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjcgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY4ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2MSA8PCAzIHwgdjIgPj4+IDIpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2NCA8PCA0IHwgdjUgPj4+IDEpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjUgPDwgNyB8IHY2IDw8IDIgfCB2NyA+Pj4gMykgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2NyA8PCA1IHwgdjgpICYgMjU1O1xuICAgIH1cblxuICAgIC8vIHJlbWFpbiBieXRlc1xuICAgIHZhciByZW1haW4gPSBsZW5ndGggLSBjb3VudDtcbiAgICBpZiAocmVtYWluID09PSAyKSB7XG4gICAgICB2MSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjIgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTU7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDQpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2MSA8PCAzIHwgdjIgPj4+IDIpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTU7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDUpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHYyIDw8IDYgfCB2MyA8PCAxIHwgdjQgPj4+IDQpICYgMjU1O1xuICAgICAgYnl0ZXNbaW5kZXgrK10gPSAodjQgPDwgNCB8IHY1ID4+PiAxKSAmIDI1NTtcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gNykge1xuICAgICAgdjEgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHYyID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MyA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjQgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY1ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjcgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2MiA8PCA2IHwgdjMgPDwgMSB8IHY0ID4+PiA0KSAmIDI1NTtcbiAgICAgIGJ5dGVzW2luZGV4KytdID0gKHY0IDw8IDQgfCB2NSA+Pj4gMSkgJiAyNTU7XG4gICAgICBieXRlc1tpbmRleCsrXSA9ICh2NSA8PCA3IHwgdjYgPDwgMiB8IHY3ID4+PiAzKSAmIDI1NTtcbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVzO1xuICB9O1xuXG4gIHZhciBlbmNvZGVBc2NpaSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIgdjEsIHYyLCB2MywgdjQsIHY1LCBiYXNlMzJTdHIgPSAnJywgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBwYXJzZUludChsZW5ndGggLyA1KSAqIDU7IGkgPCBjb3VudDspIHtcbiAgICAgIHYxID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYyID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHY0ID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHY1ID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQgfCB2MyA+Pj4gNCkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEgfCB2NCA+Pj4gNykgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0ID4+PiAyKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPDwgMyB8IHY1ID4+PiA1KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlt2NSAmIDMxXTtcbiAgICB9XG5cbiAgICAvLyByZW1haW4gY2hhclxuICAgIHZhciByZW1haW4gPSBsZW5ndGggLSBjb3VudDtcbiAgICBpZiAocmVtYWluID09PSAxKSB7XG4gICAgICB2MSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYxIDw8IDIpICYgMzFdICtcbiAgICAgICAgJz09PT09PSc7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDIpIHtcbiAgICAgIHYxID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPj4+IDEpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0KSAmIDMxXSArXG4gICAgICAgICc9PT09JztcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gMykge1xuICAgICAgdjEgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuICAgICAgdjIgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuICAgICAgdjMgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQgfCB2MyA+Pj4gNCkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEpICYgMzFdICtcbiAgICAgICAgJz09PSc7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDQpIHtcbiAgICAgIHYxID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYyID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHYzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIHY0ID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPj4+IDEpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0IHwgdjMgPj4+IDQpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MyA8PCAxIHwgdjQgPj4+IDcpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2NCA+Pj4gMikgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0IDw8IDMpICYgMzFdICtcbiAgICAgICAgJz0nO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTMyU3RyO1xuICB9O1xuXG4gIHZhciBlbmNvZGVVdGY4ID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHZhciB2MSwgdjIsIHYzLCB2NCwgdjUsIGNvZGUsIGVuZCA9IGZhbHNlLCBiYXNlMzJTdHIgPSAnJyxcbiAgICAgIGluZGV4ID0gMCwgaSwgc3RhcnQgPSAwLCBieXRlcyA9IDAsIGxlbmd0aCA9IHN0ci5sZW5ndGg7XG4gICAgZG8ge1xuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzWzVdO1xuICAgICAgYmxvY2tzWzFdID0gYmxvY2tzWzZdO1xuICAgICAgYmxvY2tzWzJdID0gYmxvY2tzWzddO1xuICAgICAgZm9yIChpID0gc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCA1OyArK2luZGV4KSB7XG4gICAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgIGJsb2Nrc1tpKytdID0gY29kZTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4YzAgfCAoY29kZSA+PiA2KTtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4ODAgfCAoY29kZSAmIDB4M2YpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweGQ4MDAgfHwgY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4ZTAgfCAoY29kZSA+PiAxMik7XG4gICAgICAgICAgYmxvY2tzW2krK10gPSAweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZik7XG4gICAgICAgICAgYmxvY2tzW2krK10gPSAweDgwIHwgKGNvZGUgJiAweDNmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKHN0ci5jaGFyQ29kZUF0KCsraW5kZXgpICYgMHgzZmYpKTtcbiAgICAgICAgICBibG9ja3NbaSsrXSA9IDB4ZjAgfCAoY29kZSA+PiAxOCk7XG4gICAgICAgICAgYmxvY2tzW2krK10gPSAweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpO1xuICAgICAgICAgIGJsb2Nrc1tpKytdID0gMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpO1xuICAgICAgICAgIGJsb2Nrc1tpKytdID0gMHg4MCB8IChjb2RlICYgMHgzZik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ5dGVzICs9IGkgLSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gaSAtIDU7XG4gICAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgICArK2luZGV4O1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID4gbGVuZ3RoICYmIGkgPCA2KSB7XG4gICAgICAgIGVuZCA9IHRydWU7XG4gICAgICB9XG4gICAgICB2MSA9IGJsb2Nrc1swXTtcbiAgICAgIGlmIChpID4gNCkge1xuICAgICAgICB2MiA9IGJsb2Nrc1sxXTtcbiAgICAgICAgdjMgPSBibG9ja3NbMl07XG4gICAgICAgIHY0ID0gYmxvY2tzWzNdO1xuICAgICAgICB2NSA9IGJsb2Nrc1s0XTtcbiAgICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MyA8PCAxIHwgdjQgPj4+IDcpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0ID4+PiAyKSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2NCA8PCAzIHwgdjUgPj4+IDUpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbdjUgJiAzMV07XG4gICAgICB9IGVsc2UgaWYgKGkgPT09IDEpIHtcbiAgICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMikgJiAzMV0gK1xuICAgICAgICAgICc9PT09PT0nO1xuICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgIHYyID0gYmxvY2tzWzFdO1xuICAgICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0KSAmIDMxXSArXG4gICAgICAgICAgJz09PT0nO1xuICAgICAgfSBlbHNlIGlmIChpID09PSAzKSB7XG4gICAgICAgIHYyID0gYmxvY2tzWzFdO1xuICAgICAgICB2MyA9IGJsb2Nrc1syXTtcbiAgICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMiB8IHYyID4+PiA2KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MyA8PCAxKSAmIDMxXSArXG4gICAgICAgICAgJz09PSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2MiA9IGJsb2Nrc1sxXTtcbiAgICAgICAgdjMgPSBibG9ja3NbMl07XG4gICAgICAgIHY0ID0gYmxvY2tzWzNdO1xuICAgICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA8PCA0IHwgdjMgPj4+IDQpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEgfCB2NCA+Pj4gNykgJiAzMV0gK1xuICAgICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPj4+IDIpICYgMzFdICtcbiAgICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0IDw8IDMpICYgMzFdICtcbiAgICAgICAgICAnPSc7XG4gICAgICB9XG4gICAgfSB3aGlsZSAoIWVuZCk7XG4gICAgcmV0dXJuIGJhc2UzMlN0cjtcbiAgfTtcblxuICB2YXIgZW5jb2RlQnl0ZXMgPSBmdW5jdGlvbiAoYnl0ZXMpIHtcbiAgICB2YXIgdjEsIHYyLCB2MywgdjQsIHY1LCBiYXNlMzJTdHIgPSAnJywgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IHBhcnNlSW50KGxlbmd0aCAvIDUpICogNTsgaSA8IGNvdW50Oykge1xuICAgICAgdjEgPSBieXRlc1tpKytdO1xuICAgICAgdjIgPSBieXRlc1tpKytdO1xuICAgICAgdjMgPSBieXRlc1tpKytdO1xuICAgICAgdjQgPSBieXRlc1tpKytdO1xuICAgICAgdjUgPSBieXRlc1tpKytdO1xuICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYxIDw8IDIgfCB2MiA+Pj4gNikgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjMgPDwgMSB8IHY0ID4+PiA3KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPj4+IDIpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2NCA8PCAzIHwgdjUgPj4+IDUpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSW3Y1ICYgMzFdO1xuICAgIH1cblxuICAgIC8vIHJlbWFpbiBjaGFyXG4gICAgdmFyIHJlbWFpbiA9IGxlbmd0aCAtIGNvdW50O1xuICAgIGlmIChyZW1haW4gPT09IDEpIHtcbiAgICAgIHYxID0gYnl0ZXNbaV07XG4gICAgICBiYXNlMzJTdHIgKz0gQkFTRTMyX0VOQ09ERV9DSEFSW3YxID4+PiAzXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjEgPDwgMikgJiAzMV0gK1xuICAgICAgICAnPT09PT09JztcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gMikge1xuICAgICAgdjEgPSBieXRlc1tpKytdO1xuICAgICAgdjIgPSBieXRlc1tpXTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQpICYgMzFdICtcbiAgICAgICAgJz09PT0nO1xuICAgIH0gZWxzZSBpZiAocmVtYWluID09PSAzKSB7XG4gICAgICB2MSA9IGJ5dGVzW2krK107XG4gICAgICB2MiA9IGJ5dGVzW2krK107XG4gICAgICB2MyA9IGJ5dGVzW2ldO1xuICAgICAgYmFzZTMyU3RyICs9IEJBU0UzMl9FTkNPREVfQ0hBUlt2MSA+Pj4gM10gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYxIDw8IDIgfCB2MiA+Pj4gNikgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyID4+PiAxKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjIgPDwgNCB8IHYzID4+PiA0KSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjMgPDwgMSkgJiAzMV0gK1xuICAgICAgICAnPT09JztcbiAgICB9IGVsc2UgaWYgKHJlbWFpbiA9PT0gNCkge1xuICAgICAgdjEgPSBieXRlc1tpKytdO1xuICAgICAgdjIgPSBieXRlc1tpKytdO1xuICAgICAgdjMgPSBieXRlc1tpKytdO1xuICAgICAgdjQgPSBieXRlc1tpXTtcbiAgICAgIGJhc2UzMlN0ciArPSBCQVNFMzJfRU5DT0RFX0NIQVJbdjEgPj4+IDNdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MSA8PCAyIHwgdjIgPj4+IDYpICYgMzFdICtcbiAgICAgICAgQkFTRTMyX0VOQ09ERV9DSEFSWyh2MiA+Pj4gMSkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYyIDw8IDQgfCB2MyA+Pj4gNCkgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHYzIDw8IDEgfCB2NCA+Pj4gNykgJiAzMV0gK1xuICAgICAgICBCQVNFMzJfRU5DT0RFX0NIQVJbKHY0ID4+PiAyKSAmIDMxXSArXG4gICAgICAgIEJBU0UzMl9FTkNPREVfQ0hBUlsodjQgPDwgMykgJiAzMV0gK1xuICAgICAgICAnPSc7XG4gICAgfVxuICAgIHJldHVybiBiYXNlMzJTdHI7XG4gIH07XG5cbiAgdmFyIGVuY29kZSA9IGZ1bmN0aW9uIChpbnB1dCwgYXNjaWlPbmx5KSB7XG4gICAgdmFyIG5vdFN0cmluZyA9IHR5cGVvZihpbnB1dCkgIT09ICdzdHJpbmcnO1xuICAgIGlmIChub3RTdHJpbmcgJiYgaW5wdXQuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgICBpbnB1dCA9IG5ldyBVaW50OEFycmF5KGlucHV0KTtcbiAgICB9XG4gICAgaWYgKG5vdFN0cmluZykge1xuICAgICAgcmV0dXJuIGVuY29kZUJ5dGVzKGlucHV0KTtcbiAgICB9IGVsc2UgaWYgKGFzY2lpT25seSkge1xuICAgICAgcmV0dXJuIGVuY29kZUFzY2lpKGlucHV0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGVuY29kZVV0ZjgoaW5wdXQpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZGVjb2RlID0gZnVuY3Rpb24gKGJhc2UzMlN0ciwgYXNjaWlPbmx5KSB7XG4gICAgaWYgKCFhc2NpaU9ubHkpIHtcbiAgICAgIHJldHVybiB0b1V0ZjhTdHJpbmcoZGVjb2RlQXNCeXRlcyhiYXNlMzJTdHIpKTtcbiAgICB9XG4gICAgaWYgKCEvXltBLVoyLTc9XSskLy50ZXN0KGJhc2UzMlN0cikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBiYXNlMzIgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICB2YXIgdjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCBzdHIgPSAnJywgbGVuZ3RoID0gYmFzZTMyU3RyLmluZGV4T2YoJz0nKTtcbiAgICBpZiAobGVuZ3RoID09PSAtMSkge1xuICAgICAgbGVuZ3RoID0gYmFzZTMyU3RyLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyA4IGNoYXIgdG8gNSBieXRlc1xuICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGxlbmd0aCA+PiAzIDw8IDM7IGkgPCBjb3VudDspIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjYgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY3ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2OCA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjQgPDwgNCB8IHY1ID4+PiAxKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2NSA8PCA3IHwgdjYgPDwgMiB8IHY3ID4+PiAzKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2NyA8PCA1IHwgdjgpICYgMjU1KTtcbiAgICB9XG5cbiAgICAvLyByZW1haW4gYnl0ZXNcbiAgICB2YXIgcmVtYWluID0gbGVuZ3RoIC0gY291bnQ7XG4gICAgaWYgKHJlbWFpbiA9PT0gMikge1xuICAgICAgdjEgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHYyID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NSk7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDQpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2MiA8PCA2IHwgdjMgPDwgMSB8IHY0ID4+PiA0KSAmIDI1NSk7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDUpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKHYxIDw8IDMgfCB2MiA+Pj4gMikgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjIgPDwgNiB8IHYzIDw8IDEgfCB2NCA+Pj4gNCkgJiAyNTUpICtcbiAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgodjQgPDwgNCB8IHY1ID4+PiAxKSAmIDI1NSk7XG4gICAgfSBlbHNlIGlmIChyZW1haW4gPT09IDcpIHtcbiAgICAgIHYxID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2MiA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjMgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY0ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICB2NSA9IEJBU0UzMl9ERUNPREVfQ0hBUltiYXNlMzJTdHIuY2hhckF0KGkrKyldO1xuICAgICAgdjYgPSBCQVNFMzJfREVDT0RFX0NIQVJbYmFzZTMyU3RyLmNoYXJBdChpKyspXTtcbiAgICAgIHY3ID0gQkFTRTMyX0RFQ09ERV9DSEFSW2Jhc2UzMlN0ci5jaGFyQXQoaSsrKV07XG4gICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgodjEgPDwgMyB8IHYyID4+PiAyKSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2MiA8PCA2IHwgdjMgPDwgMSB8IHY0ID4+PiA0KSAmIDI1NSkgK1xuICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2NCA8PCA0IHwgdjUgPj4+IDEpICYgMjU1KSArXG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoKHY1IDw8IDcgfCB2NiA8PCAyIHwgdjcgPj4+IDMpICYgMjU1KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICB2YXIgZXhwb3J0cyA9IHtcbiAgICBlbmNvZGU6IGVuY29kZSxcbiAgICBkZWNvZGU6IGRlY29kZVxuICB9O1xuICBkZWNvZGUuYXNCeXRlcyA9IGRlY29kZUFzQnl0ZXM7XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiAgfSBlbHNlIHtcbiAgICByb290LmJhc2UzMiA9IGV4cG9ydHM7XG4gICAgaWYgKEFNRCkge1xuICAgICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSkoKTtcbiIsIi8qIGdsb2JhbHMgX193ZWJwYWNrX2FtZF9vcHRpb25zX18gKi9cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX2FtZF9vcHRpb25zX187XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgbXVsdGlhZGRyID0gcmVxdWlyZSgnbXVsdGlhZGRyJylcblxuLypcbiAqIFZhbGlkIGNvbWJpbmF0aW9uc1xuICovXG5jb25zdCBETlM0ID0gYmFzZSgnZG5zNCcpXG5jb25zdCBETlM2ID0gYmFzZSgnZG5zNicpXG5jb25zdCBETlMgPSBvcihcbiAgYmFzZSgnZG5zJyksXG4gIGJhc2UoJ2Ruc2FkZHInKSxcbiAgRE5TNCxcbiAgRE5TNlxuKVxuXG5jb25zdCBJUCA9IG9yKGJhc2UoJ2lwNCcpLCBiYXNlKCdpcDYnKSlcbmNvbnN0IFRDUCA9IG9yKFxuICBhbmQoSVAsIGJhc2UoJ3RjcCcpKSxcbiAgYW5kKEROUywgYmFzZSgndGNwJykpXG4pXG5jb25zdCBVRFAgPSBhbmQoSVAsIGJhc2UoJ3VkcCcpKVxuY29uc3QgVVRQID0gYW5kKFVEUCwgYmFzZSgndXRwJykpXG5cbmNvbnN0IFdlYlNvY2tldHMgPSBvcihcbiAgYW5kKFRDUCwgYmFzZSgnd3MnKSksXG4gIGFuZChETlMsIGJhc2UoJ3dzJykpXG4pXG5cbmNvbnN0IFdlYlNvY2tldHNTZWN1cmUgPSBvcihcbiAgYW5kKFRDUCwgYmFzZSgnd3NzJykpLFxuICBhbmQoRE5TLCBiYXNlKCd3c3MnKSlcbilcblxuY29uc3QgSFRUUCA9IG9yKFxuICBhbmQoVENQLCBiYXNlKCdodHRwJykpLFxuICBhbmQoSVAsIGJhc2UoJ2h0dHAnKSksXG4gIGFuZChETlMsIGJhc2UoJ2h0dHAnKSlcbilcblxuY29uc3QgSFRUUFMgPSBvcihcbiAgYW5kKFRDUCwgYmFzZSgnaHR0cHMnKSksXG4gIGFuZChJUCwgYmFzZSgnaHR0cHMnKSksXG4gIGFuZChETlMsIGJhc2UoJ2h0dHBzJykpXG4pXG5cbmNvbnN0IFdlYlJUQ1N0YXIgPSBvcihcbiAgYW5kKFdlYlNvY2tldHMsIGJhc2UoJ3AycC13ZWJydGMtc3RhcicpLCBiYXNlKCdwMnAnKSksXG4gIGFuZChXZWJTb2NrZXRzU2VjdXJlLCBiYXNlKCdwMnAtd2VicnRjLXN0YXInKSwgYmFzZSgncDJwJykpLFxuICBhbmQoV2ViU29ja2V0cywgYmFzZSgncDJwLXdlYnJ0Yy1zdGFyJykpLFxuICBhbmQoV2ViU29ja2V0c1NlY3VyZSwgYmFzZSgncDJwLXdlYnJ0Yy1zdGFyJykpXG4pXG5cbmNvbnN0IFdlYlNvY2tldFN0YXIgPSBvcihcbiAgYW5kKFdlYlNvY2tldHMsIGJhc2UoJ3AycC13ZWJzb2NrZXQtc3RhcicpLCBiYXNlKCdwMnAnKSksXG4gIGFuZChXZWJTb2NrZXRzU2VjdXJlLCBiYXNlKCdwMnAtd2Vic29ja2V0LXN0YXInKSwgYmFzZSgncDJwJykpLFxuICBhbmQoV2ViU29ja2V0cywgYmFzZSgncDJwLXdlYnNvY2tldC1zdGFyJykpLFxuICBhbmQoV2ViU29ja2V0c1NlY3VyZSwgYmFzZSgncDJwLXdlYnNvY2tldC1zdGFyJykpXG4pXG5cbmNvbnN0IFdlYlJUQ0RpcmVjdCA9IG9yKFxuICBhbmQoSFRUUCwgYmFzZSgncDJwLXdlYnJ0Yy1kaXJlY3QnKSksXG4gIGFuZChIVFRQUywgYmFzZSgncDJwLXdlYnJ0Yy1kaXJlY3QnKSlcbilcblxuY29uc3QgUmVsaWFibGUgPSBvcihcbiAgV2ViU29ja2V0cyxcbiAgV2ViU29ja2V0c1NlY3VyZSxcbiAgSFRUUCxcbiAgSFRUUFMsXG4gIFdlYlJUQ1N0YXIsXG4gIFdlYlJUQ0RpcmVjdCxcbiAgVENQLFxuICBVVFBcbilcblxuLy8gVW5saWtlIHdzLXN0YXIsIHN0YXJkdXN0IGNhbiBydW4gb3ZlciBhbnkgdHJhbnNwb3J0IHRodXMgcmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IGZvciB3ZWJzb2NrZXRzIChidXQgZG9uJ3QgZXZlbiB0aGluayBhYm91dCBydW5uaW5nIGEgc3RhcmR1c3Qgc2VydmVyIG92ZXIgd2VicnRjLXN0YXIgOykgKVxuY29uc3QgU3RhcmR1c3QgPSBvcihcbiAgYW5kKFJlbGlhYmxlLCBiYXNlKCdwMnAtc3RhcmR1c3QnKSwgYmFzZSgncDJwJykpLFxuICBhbmQoUmVsaWFibGUsIGJhc2UoJ3AycC1zdGFyZHVzdCcpKVxuKVxuXG5jb25zdCBfUDJQID0gb3IoXG4gIGFuZChSZWxpYWJsZSwgYmFzZSgncDJwJykpLFxuICBXZWJSVENTdGFyLFxuICBiYXNlKCdwMnAnKVxuKVxuXG5jb25zdCBfQ2lyY3VpdCA9IG9yKFxuICBhbmQoX1AyUCwgYmFzZSgncDJwLWNpcmN1aXQnKSwgX1AyUCksXG4gIGFuZChfUDJQLCBiYXNlKCdwMnAtY2lyY3VpdCcpKSxcbiAgYW5kKGJhc2UoJ3AycC1jaXJjdWl0JyksIF9QMlApLFxuICBhbmQoUmVsaWFibGUsIGJhc2UoJ3AycC1jaXJjdWl0JykpLFxuICBhbmQoYmFzZSgncDJwLWNpcmN1aXQnKSwgUmVsaWFibGUpLFxuICBiYXNlKCdwMnAtY2lyY3VpdCcpXG4pXG5cbmNvbnN0IENpcmN1aXRSZWN1cnNpdmUgPSAoKSA9PiBvcihcbiAgYW5kKF9DaXJjdWl0LCBDaXJjdWl0UmVjdXJzaXZlKSxcbiAgX0NpcmN1aXRcbilcblxuY29uc3QgQ2lyY3VpdCA9IENpcmN1aXRSZWN1cnNpdmUoKVxuXG5jb25zdCBQMlAgPSBvcihcbiAgYW5kKENpcmN1aXQsIF9QMlAsIENpcmN1aXQpLFxuICBhbmQoX1AyUCwgQ2lyY3VpdCksXG4gIGFuZChDaXJjdWl0LCBfUDJQKSxcbiAgQ2lyY3VpdCxcbiAgX1AyUFxuKVxuXG5leHBvcnRzLkROUyA9IEROU1xuZXhwb3J0cy5ETlM0ID0gRE5TNFxuZXhwb3J0cy5ETlM2ID0gRE5TNlxuZXhwb3J0cy5JUCA9IElQXG5leHBvcnRzLlRDUCA9IFRDUFxuZXhwb3J0cy5VRFAgPSBVRFBcbmV4cG9ydHMuVVRQID0gVVRQXG5leHBvcnRzLkhUVFAgPSBIVFRQXG5leHBvcnRzLkhUVFBTID0gSFRUUFNcbmV4cG9ydHMuV2ViU29ja2V0cyA9IFdlYlNvY2tldHNcbmV4cG9ydHMuV2ViU29ja2V0c1NlY3VyZSA9IFdlYlNvY2tldHNTZWN1cmVcbmV4cG9ydHMuV2ViU29ja2V0U3RhciA9IFdlYlNvY2tldFN0YXJcbmV4cG9ydHMuV2ViUlRDU3RhciA9IFdlYlJUQ1N0YXJcbmV4cG9ydHMuV2ViUlRDRGlyZWN0ID0gV2ViUlRDRGlyZWN0XG5leHBvcnRzLlJlbGlhYmxlID0gUmVsaWFibGVcbmV4cG9ydHMuU3RhcmR1c3QgPSBTdGFyZHVzdFxuZXhwb3J0cy5DaXJjdWl0ID0gQ2lyY3VpdFxuZXhwb3J0cy5QMlAgPSBQMlBcbmV4cG9ydHMuSVBGUyA9IFAyUFxuXG4vKlxuICogVmFsaWRhdGlvbiBmdW5jc1xuICovXG5cbmZ1bmN0aW9uIG1ha2VNYXRjaGVzRnVuY3Rpb24gKHBhcnRpYWxNYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24gbWF0Y2hlcyAoYSkge1xuICAgIGlmICghbXVsdGlhZGRyLmlzTXVsdGlhZGRyKGEpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhID0gbXVsdGlhZGRyKGEpXG4gICAgICB9IGNhdGNoIChlcnIpIHsgLy8gY2F0Y2ggZXJyb3JcbiAgICAgICAgcmV0dXJuIGZhbHNlIC8vIGFsc28gaWYgaXQncyBpbnZhbGlkIGl0J3MgcHJvcGFibHkgbm90IG1hdGNoaW5nIGFzIHdlbGwgc28gcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG91dCA9IHBhcnRpYWxNYXRjaChhLnByb3RvTmFtZXMoKSlcbiAgICBpZiAob3V0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIG91dC5sZW5ndGggPT09IDBcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmQgKCkge1xuICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpXG4gIGZ1bmN0aW9uIHBhcnRpYWxNYXRjaCAoYSkge1xuICAgIGlmIChhLmxlbmd0aCA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBhcmdzLnNvbWUoKGFyZykgPT4ge1xuICAgICAgYSA9IHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBhcmcoKS5wYXJ0aWFsTWF0Y2goYSlcbiAgICAgICAgOiBhcmcucGFydGlhbE1hdGNoKGEpXG5cbiAgICAgIGlmIChhID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBhXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAneyAnICsgYXJncy5qb2luKCcgJykgKyAnIH0nIH0sXG4gICAgaW5wdXQ6IGFyZ3MsXG4gICAgbWF0Y2hlczogbWFrZU1hdGNoZXNGdW5jdGlvbihwYXJ0aWFsTWF0Y2gpLFxuICAgIHBhcnRpYWxNYXRjaDogcGFydGlhbE1hdGNoXG4gIH1cbn1cblxuZnVuY3Rpb24gb3IgKCkge1xuICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpXG5cbiAgZnVuY3Rpb24gcGFydGlhbE1hdGNoIChhKSB7XG4gICAgbGV0IG91dCA9IG51bGxcbiAgICBhcmdzLnNvbWUoKGFyZykgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGFyZygpLnBhcnRpYWxNYXRjaChhKVxuICAgICAgICA6IGFyZy5wYXJ0aWFsTWF0Y2goYSlcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgb3V0ID0gcmVzXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ3sgJyArIGFyZ3Muam9pbignICcpICsgJyB9JyB9LFxuICAgIGlucHV0OiBhcmdzLFxuICAgIG1hdGNoZXM6IG1ha2VNYXRjaGVzRnVuY3Rpb24ocGFydGlhbE1hdGNoKSxcbiAgICBwYXJ0aWFsTWF0Y2g6IHBhcnRpYWxNYXRjaFxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBiYXNlIChuKSB7XG4gIGNvbnN0IG5hbWUgPSBuXG5cbiAgZnVuY3Rpb24gbWF0Y2hlcyAoYSkge1xuICAgIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGEgPSBtdWx0aWFkZHIoYSlcbiAgICAgIH0gY2F0Y2ggKGVycikgeyAvLyBjYXRjaCBlcnJvclxuICAgICAgICByZXR1cm4gZmFsc2UgLy8gYWxzbyBpZiBpdCdzIGludmFsaWQgaXQncyBwcm9wYWJseSBub3QgbWF0Y2hpbmcgYXMgd2VsbCBzbyByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwbmFtZXMgPSBhLnByb3RvTmFtZXMoKVxuICAgIGlmIChwbmFtZXMubGVuZ3RoID09PSAxICYmIHBuYW1lc1swXSA9PT0gbmFtZSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmdW5jdGlvbiBwYXJ0aWFsTWF0Y2ggKHByb3Rvcykge1xuICAgIGlmIChwcm90b3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChwcm90b3NbMF0gPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBwcm90b3Muc2xpY2UoMSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hbWUgfSxcbiAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgIHBhcnRpYWxNYXRjaDogcGFydGlhbE1hdGNoXG4gIH1cbn1cbiIsInZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpLlN0cmVhbTtcbnZhciBEZWxheWVkU3RyZWFtID0gcmVxdWlyZSgnZGVsYXllZC1zdHJlYW0nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDb21iaW5lZFN0cmVhbTtcbmZ1bmN0aW9uIENvbWJpbmVkU3RyZWFtKCkge1xuICB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xuICB0aGlzLmRhdGFTaXplID0gMDtcbiAgdGhpcy5tYXhEYXRhU2l6ZSA9IDIgKiAxMDI0ICogMTAyNDtcbiAgdGhpcy5wYXVzZVN0cmVhbXMgPSB0cnVlO1xuXG4gIHRoaXMuX3JlbGVhc2VkID0gZmFsc2U7XG4gIHRoaXMuX3N0cmVhbXMgPSBbXTtcbiAgdGhpcy5fY3VycmVudFN0cmVhbSA9IG51bGw7XG4gIHRoaXMuX2luc2lkZUxvb3AgPSBmYWxzZTtcbiAgdGhpcy5fcGVuZGluZ05leHQgPSBmYWxzZTtcbn1cbnV0aWwuaW5oZXJpdHMoQ29tYmluZWRTdHJlYW0sIFN0cmVhbSk7XG5cbkNvbWJpbmVkU3RyZWFtLmNyZWF0ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGNvbWJpbmVkU3RyZWFtID0gbmV3IHRoaXMoKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2YXIgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICBjb21iaW5lZFN0cmVhbVtvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dO1xuICB9XG5cbiAgcmV0dXJuIGNvbWJpbmVkU3RyZWFtO1xufTtcblxuQ29tYmluZWRTdHJlYW0uaXNTdHJlYW1MaWtlID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gIHJldHVybiAodHlwZW9mIHN0cmVhbSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAmJiAodHlwZW9mIHN0cmVhbSAhPT0gJ3N0cmluZycpXG4gICAgJiYgKHR5cGVvZiBzdHJlYW0gIT09ICdib29sZWFuJylcbiAgICAmJiAodHlwZW9mIHN0cmVhbSAhPT0gJ251bWJlcicpXG4gICAgJiYgKCFCdWZmZXIuaXNCdWZmZXIoc3RyZWFtKSk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gIHZhciBpc1N0cmVhbUxpa2UgPSBDb21iaW5lZFN0cmVhbS5pc1N0cmVhbUxpa2Uoc3RyZWFtKTtcblxuICBpZiAoaXNTdHJlYW1MaWtlKSB7XG4gICAgaWYgKCEoc3RyZWFtIGluc3RhbmNlb2YgRGVsYXllZFN0cmVhbSkpIHtcbiAgICAgIHZhciBuZXdTdHJlYW0gPSBEZWxheWVkU3RyZWFtLmNyZWF0ZShzdHJlYW0sIHtcbiAgICAgICAgbWF4RGF0YVNpemU6IEluZmluaXR5LFxuICAgICAgICBwYXVzZVN0cmVhbTogdGhpcy5wYXVzZVN0cmVhbXMsXG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignZGF0YScsIHRoaXMuX2NoZWNrRGF0YVNpemUuYmluZCh0aGlzKSk7XG4gICAgICBzdHJlYW0gPSBuZXdTdHJlYW07XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlRXJyb3JzKHN0cmVhbSk7XG5cbiAgICBpZiAodGhpcy5wYXVzZVN0cmVhbXMpIHtcbiAgICAgIHN0cmVhbS5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuX3N0cmVhbXMucHVzaChzdHJlYW0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oZGVzdCwgb3B0aW9ucykge1xuICBTdHJlYW0ucHJvdG90eXBlLnBpcGUuY2FsbCh0aGlzLCBkZXN0LCBvcHRpb25zKTtcbiAgdGhpcy5yZXN1bWUoKTtcbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX2dldE5leHQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fY3VycmVudFN0cmVhbSA9IG51bGw7XG5cbiAgaWYgKHRoaXMuX2luc2lkZUxvb3ApIHtcbiAgICB0aGlzLl9wZW5kaW5nTmV4dCA9IHRydWU7XG4gICAgcmV0dXJuOyAvLyBkZWZlciBjYWxsXG4gIH1cblxuICB0aGlzLl9pbnNpZGVMb29wID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBkbyB7XG4gICAgICB0aGlzLl9wZW5kaW5nTmV4dCA9IGZhbHNlO1xuICAgICAgdGhpcy5fcmVhbEdldE5leHQoKTtcbiAgICB9IHdoaWxlICh0aGlzLl9wZW5kaW5nTmV4dCk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5faW5zaWRlTG9vcCA9IGZhbHNlO1xuICB9XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX3JlYWxHZXROZXh0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJlYW0gPSB0aGlzLl9zdHJlYW1zLnNoaWZ0KCk7XG5cblxuICBpZiAodHlwZW9mIHN0cmVhbSA9PSAndW5kZWZpbmVkJykge1xuICAgIHRoaXMuZW5kKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzdHJlYW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLl9waXBlTmV4dChzdHJlYW0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBnZXRTdHJlYW0gPSBzdHJlYW07XG4gIGdldFN0cmVhbShmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgaXNTdHJlYW1MaWtlID0gQ29tYmluZWRTdHJlYW0uaXNTdHJlYW1MaWtlKHN0cmVhbSk7XG4gICAgaWYgKGlzU3RyZWFtTGlrZSkge1xuICAgICAgc3RyZWFtLm9uKCdkYXRhJywgdGhpcy5fY2hlY2tEYXRhU2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuX2hhbmRsZUVycm9ycyhzdHJlYW0pO1xuICAgIH1cblxuICAgIHRoaXMuX3BpcGVOZXh0KHN0cmVhbSk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX3BpcGVOZXh0ID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gIHRoaXMuX2N1cnJlbnRTdHJlYW0gPSBzdHJlYW07XG5cbiAgdmFyIGlzU3RyZWFtTGlrZSA9IENvbWJpbmVkU3RyZWFtLmlzU3RyZWFtTGlrZShzdHJlYW0pO1xuICBpZiAoaXNTdHJlYW1MaWtlKSB7XG4gICAgc3RyZWFtLm9uKCdlbmQnLCB0aGlzLl9nZXROZXh0LmJpbmQodGhpcykpO1xuICAgIHN0cmVhbS5waXBlKHRoaXMsIHtlbmQ6IGZhbHNlfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHZhbHVlID0gc3RyZWFtO1xuICB0aGlzLndyaXRlKHZhbHVlKTtcbiAgdGhpcy5fZ2V0TmV4dCgpO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLl9oYW5kbGVFcnJvcnMgPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG4gICAgc2VsZi5fZW1pdEVycm9yKGVycik7XG4gIH0pO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oZGF0YSkge1xuICB0aGlzLmVtaXQoJ2RhdGEnLCBkYXRhKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAoIXRoaXMucGF1c2VTdHJlYW1zKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYodGhpcy5wYXVzZVN0cmVhbXMgJiYgdGhpcy5fY3VycmVudFN0cmVhbSAmJiB0eXBlb2YodGhpcy5fY3VycmVudFN0cmVhbS5wYXVzZSkgPT0gJ2Z1bmN0aW9uJykgdGhpcy5fY3VycmVudFN0cmVhbS5wYXVzZSgpO1xuICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5fcmVsZWFzZWQpIHtcbiAgICB0aGlzLl9yZWxlYXNlZCA9IHRydWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHRydWU7XG4gICAgdGhpcy5fZ2V0TmV4dCgpO1xuICB9XG5cbiAgaWYodGhpcy5wYXVzZVN0cmVhbXMgJiYgdGhpcy5fY3VycmVudFN0cmVhbSAmJiB0eXBlb2YodGhpcy5fY3VycmVudFN0cmVhbS5yZXN1bWUpID09ICdmdW5jdGlvbicpIHRoaXMuX2N1cnJlbnRTdHJlYW0ucmVzdW1lKCk7XG4gIHRoaXMuZW1pdCgncmVzdW1lJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3Jlc2V0KCk7XG4gIHRoaXMuZW1pdCgnZW5kJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9yZXNldCgpO1xuICB0aGlzLmVtaXQoJ2Nsb3NlJyk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcbiAgdGhpcy5fc3RyZWFtcyA9IFtdO1xuICB0aGlzLl9jdXJyZW50U3RyZWFtID0gbnVsbDtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fY2hlY2tEYXRhU2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl91cGRhdGVEYXRhU2l6ZSgpO1xuICBpZiAodGhpcy5kYXRhU2l6ZSA8PSB0aGlzLm1heERhdGFTaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1lc3NhZ2UgPVxuICAgICdEZWxheWVkU3RyZWFtI21heERhdGFTaXplIG9mICcgKyB0aGlzLm1heERhdGFTaXplICsgJyBieXRlcyBleGNlZWRlZC4nO1xuICB0aGlzLl9lbWl0RXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fdXBkYXRlRGF0YVNpemUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5kYXRhU2l6ZSA9IDA7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLl9zdHJlYW1zLmZvckVhY2goZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgaWYgKCFzdHJlYW0uZGF0YVNpemUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLmRhdGFTaXplICs9IHN0cmVhbS5kYXRhU2l6ZTtcbiAgfSk7XG5cbiAgaWYgKHRoaXMuX2N1cnJlbnRTdHJlYW0gJiYgdGhpcy5fY3VycmVudFN0cmVhbS5kYXRhU2l6ZSkge1xuICAgIHRoaXMuZGF0YVNpemUgKz0gdGhpcy5fY3VycmVudFN0cmVhbS5kYXRhU2l6ZTtcbiAgfVxufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLl9lbWl0RXJyb3IgPSBmdW5jdGlvbihlcnIpIHtcbiAgdGhpcy5fcmVzZXQoKTtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG59O1xuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpLlN0cmVhbTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlbGF5ZWRTdHJlYW07XG5mdW5jdGlvbiBEZWxheWVkU3RyZWFtKCkge1xuICB0aGlzLnNvdXJjZSA9IG51bGw7XG4gIHRoaXMuZGF0YVNpemUgPSAwO1xuICB0aGlzLm1heERhdGFTaXplID0gMTAyNCAqIDEwMjQ7XG4gIHRoaXMucGF1c2VTdHJlYW0gPSB0cnVlO1xuXG4gIHRoaXMuX21heERhdGFTaXplRXhjZWVkZWQgPSBmYWxzZTtcbiAgdGhpcy5fcmVsZWFzZWQgPSBmYWxzZTtcbiAgdGhpcy5fYnVmZmVyZWRFdmVudHMgPSBbXTtcbn1cbnV0aWwuaW5oZXJpdHMoRGVsYXllZFN0cmVhbSwgU3RyZWFtKTtcblxuRGVsYXllZFN0cmVhbS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGRlbGF5ZWRTdHJlYW0gPSBuZXcgdGhpcygpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBvcHRpb24gaW4gb3B0aW9ucykge1xuICAgIGRlbGF5ZWRTdHJlYW1bb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgfVxuXG4gIGRlbGF5ZWRTdHJlYW0uc291cmNlID0gc291cmNlO1xuXG4gIHZhciByZWFsRW1pdCA9IHNvdXJjZS5lbWl0O1xuICBzb3VyY2UuZW1pdCA9IGZ1bmN0aW9uKCkge1xuICAgIGRlbGF5ZWRTdHJlYW0uX2hhbmRsZUVtaXQoYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcmVhbEVtaXQuYXBwbHkoc291cmNlLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHNvdXJjZS5vbignZXJyb3InLCBmdW5jdGlvbigpIHt9KTtcbiAgaWYgKGRlbGF5ZWRTdHJlYW0ucGF1c2VTdHJlYW0pIHtcbiAgICBzb3VyY2UucGF1c2UoKTtcbiAgfVxuXG4gIHJldHVybiBkZWxheWVkU3RyZWFtO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERlbGF5ZWRTdHJlYW0ucHJvdG90eXBlLCAncmVhZGFibGUnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UucmVhZGFibGU7XG4gIH1cbn0pO1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2Uuc2V0RW5jb2RpbmcuYXBwbHkodGhpcy5zb3VyY2UsIGFyZ3VtZW50cyk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLl9yZWxlYXNlZCkge1xuICAgIHRoaXMucmVsZWFzZSgpO1xuICB9XG5cbiAgdGhpcy5zb3VyY2UucmVzdW1lKCk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnNvdXJjZS5wYXVzZSgpO1xufTtcblxuRGVsYXllZFN0cmVhbS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9yZWxlYXNlZCA9IHRydWU7XG5cbiAgdGhpcy5fYnVmZmVyZWRFdmVudHMuZm9yRWFjaChmdW5jdGlvbihhcmdzKSB7XG4gICAgdGhpcy5lbWl0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9LmJpbmQodGhpcykpO1xuICB0aGlzLl9idWZmZXJlZEV2ZW50cyA9IFtdO1xufTtcblxuRGVsYXllZFN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgciA9IFN0cmVhbS5wcm90b3R5cGUucGlwZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB0aGlzLnJlc3VtZSgpO1xuICByZXR1cm4gcjtcbn07XG5cbkRlbGF5ZWRTdHJlYW0ucHJvdG90eXBlLl9oYW5kbGVFbWl0ID0gZnVuY3Rpb24oYXJncykge1xuICBpZiAodGhpcy5fcmVsZWFzZWQpIHtcbiAgICB0aGlzLmVtaXQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFyZ3NbMF0gPT09ICdkYXRhJykge1xuICAgIHRoaXMuZGF0YVNpemUgKz0gYXJnc1sxXS5sZW5ndGg7XG4gICAgdGhpcy5fY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQoKTtcbiAgfVxuXG4gIHRoaXMuX2J1ZmZlcmVkRXZlbnRzLnB1c2goYXJncyk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5fY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX21heERhdGFTaXplRXhjZWVkZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5kYXRhU2l6ZSA8PSB0aGlzLm1heERhdGFTaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5fbWF4RGF0YVNpemVFeGNlZWRlZCA9IHRydWU7XG4gIHZhciBtZXNzYWdlID1cbiAgICAnRGVsYXllZFN0cmVhbSNtYXhEYXRhU2l6ZSBvZiAnICsgdGhpcy5tYXhEYXRhU2l6ZSArICcgYnl0ZXMgZXhjZWVkZWQuJ1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKG1lc3NhZ2UpKTtcbn07XG4iLCIvKiFcbiAqIG1pbWUtdHlwZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkYiA9IHJlcXVpcmUoJ21pbWUtZGInKVxudmFyIGV4dG5hbWUgPSByZXF1aXJlKCdwYXRoJykuZXh0bmFtZVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBFWFRSQUNUX1RZUEVfUkVHRVhQID0gL15cXHMqKFteO1xcc10qKSg/Ojt8XFxzfCQpL1xudmFyIFRFWFRfVFlQRV9SRUdFWFAgPSAvXnRleHRcXC8vaVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydHMuY2hhcnNldCA9IGNoYXJzZXRcbmV4cG9ydHMuY2hhcnNldHMgPSB7IGxvb2t1cDogY2hhcnNldCB9XG5leHBvcnRzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGVcbmV4cG9ydHMuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uXG5leHBvcnRzLmV4dGVuc2lvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5leHBvcnRzLmxvb2t1cCA9IGxvb2t1cFxuZXhwb3J0cy50eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLy8gUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMvdHlwZXMgbWFwc1xucG9wdWxhdGVNYXBzKGV4cG9ydHMuZXh0ZW5zaW9ucywgZXhwb3J0cy50eXBlcylcblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGNoYXJzZXQgKHR5cGUpIHtcbiAgaWYgKCF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVE9ETzogdXNlIG1lZGlhLXR5cGVyXG4gIHZhciBtYXRjaCA9IEVYVFJBQ1RfVFlQRV9SRUdFWFAuZXhlYyh0eXBlKVxuICB2YXIgbWltZSA9IG1hdGNoICYmIGRiW21hdGNoWzFdLnRvTG93ZXJDYXNlKCldXG5cbiAgaWYgKG1pbWUgJiYgbWltZS5jaGFyc2V0KSB7XG4gICAgcmV0dXJuIG1pbWUuY2hhcnNldFxuICB9XG5cbiAgLy8gZGVmYXVsdCB0ZXh0LyogdG8gdXRmLThcbiAgaWYgKG1hdGNoICYmIFRFWFRfVFlQRV9SRUdFWFAudGVzdChtYXRjaFsxXSkpIHtcbiAgICByZXR1cm4gJ1VURi04J1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVsbCBDb250ZW50LVR5cGUgaGVhZGVyIGdpdmVuIGEgTUlNRSB0eXBlIG9yIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50VHlwZSAoc3RyKSB7XG4gIC8vIFRPRE86IHNob3VsZCB0aGlzIGV2ZW4gYmUgaW4gdGhpcyBtb2R1bGU/XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB2YXIgbWltZSA9IHN0ci5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBleHBvcnRzLmxvb2t1cChzdHIpXG4gICAgOiBzdHJcblxuICBpZiAoIW1pbWUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBjb250ZW50LXR5cGUgb3Igb3RoZXIgbW9kdWxlXG4gIGlmIChtaW1lLmluZGV4T2YoJ2NoYXJzZXQnKSA9PT0gLTEpIHtcbiAgICB2YXIgY2hhcnNldCA9IGV4cG9ydHMuY2hhcnNldChtaW1lKVxuICAgIGlmIChjaGFyc2V0KSBtaW1lICs9ICc7IGNoYXJzZXQ9JyArIGNoYXJzZXQudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgcmV0dXJuIG1pbWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgZXh0ZW5zaW9uIGZvciBhIE1JTUUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5zaW9uICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcblxuICAvLyBnZXQgZXh0ZW5zaW9uc1xuICB2YXIgZXh0cyA9IG1hdGNoICYmIGV4cG9ydHMuZXh0ZW5zaW9uc1ttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHRzWzBdXG59XG5cbi8qKlxuICogTG9va3VwIHRoZSBNSU1FIHR5cGUgZm9yIGEgZmlsZSBwYXRoL2V4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gbG9va3VwIChwYXRoKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIGdldCB0aGUgZXh0ZW5zaW9uIChcImV4dFwiIG9yIFwiLmV4dFwiIG9yIGZ1bGwgcGF0aClcbiAgdmFyIGV4dGVuc2lvbiA9IGV4dG5hbWUoJ3guJyArIHBhdGgpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3Vic3RyKDEpXG5cbiAgaWYgKCFleHRlbnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLnR5cGVzW2V4dGVuc2lvbl0gfHwgZmFsc2Vcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXh0ZW5zaW9ucyBhbmQgdHlwZXMgbWFwcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcG9wdWxhdGVNYXBzIChleHRlbnNpb25zLCB0eXBlcykge1xuICAvLyBzb3VyY2UgcHJlZmVyZW5jZSAobGVhc3QgLT4gbW9zdClcbiAgdmFyIHByZWZlcmVuY2UgPSBbJ25naW54JywgJ2FwYWNoZScsIHVuZGVmaW5lZCwgJ2lhbmEnXVxuXG4gIE9iamVjdC5rZXlzKGRiKS5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hNaW1lVHlwZSAodHlwZSkge1xuICAgIHZhciBtaW1lID0gZGJbdHlwZV1cbiAgICB2YXIgZXh0cyA9IG1pbWUuZXh0ZW5zaW9uc1xuXG4gICAgaWYgKCFleHRzIHx8ICFleHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gbWltZSAtPiBleHRlbnNpb25zXG4gICAgZXh0ZW5zaW9uc1t0eXBlXSA9IGV4dHNcblxuICAgIC8vIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0c1tpXVxuXG4gICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSkge1xuICAgICAgICB2YXIgZnJvbSA9IHByZWZlcmVuY2UuaW5kZXhPZihkYlt0eXBlc1tleHRlbnNpb25dXS5zb3VyY2UpXG4gICAgICAgIHZhciB0byA9IHByZWZlcmVuY2UuaW5kZXhPZihtaW1lLnNvdXJjZSlcblxuICAgICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSAhPT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgJiZcbiAgICAgICAgICAoZnJvbSA+IHRvIHx8IChmcm9tID09PSB0byAmJiB0eXBlc1tleHRlbnNpb25dLnN1YnN0cigwLCAxMikgPT09ICdhcHBsaWNhdGlvbi8nKSkpIHtcbiAgICAgICAgICAvLyBza2lwIHRoZSByZW1hcHBpbmdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZXh0ZW5zaW9uIC0+IG1pbWVcbiAgICAgIHR5cGVzW2V4dGVuc2lvbl0gPSB0eXBlXG4gICAgfVxuICB9KVxufVxuIiwiLyohXG4gKiBtaW1lLWRiXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2RiLmpzb24nKVxuIiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICBwYXJhbGxlbCAgICAgIDogcmVxdWlyZSgnLi9wYXJhbGxlbC5qcycpLFxuICBzZXJpYWwgICAgICAgIDogcmVxdWlyZSgnLi9zZXJpYWwuanMnKSxcbiAgc2VyaWFsT3JkZXJlZCA6IHJlcXVpcmUoJy4vc2VyaWFsT3JkZXJlZC5qcycpXG59O1xuIiwidmFyIGl0ZXJhdGUgICAgPSByZXF1aXJlKCcuL2xpYi9pdGVyYXRlLmpzJylcbiAgLCBpbml0U3RhdGUgID0gcmVxdWlyZSgnLi9saWIvc3RhdGUuanMnKVxuICAsIHRlcm1pbmF0b3IgPSByZXF1aXJlKCcuL2xpYi90ZXJtaW5hdG9yLmpzJylcbiAgO1xuXG4vLyBQdWJsaWMgQVBJXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmFsbGVsO1xuXG4vKipcbiAqIFJ1bnMgaXRlcmF0b3Igb3ZlciBwcm92aWRlZCBhcnJheSBlbGVtZW50cyBpbiBwYXJhbGxlbFxuICpcbiAqIEBwYXJhbSAgIHthcnJheXxvYmplY3R9IGxpc3QgLSBhcnJheSBvciBvYmplY3QgKG5hbWVkIGxpc3QpIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIHJ1blxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGludm9rZWQgd2hlbiBhbGwgZWxlbWVudHMgcHJvY2Vzc2VkXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IC0gam9icyB0ZXJtaW5hdG9yXG4gKi9cbmZ1bmN0aW9uIHBhcmFsbGVsKGxpc3QsIGl0ZXJhdG9yLCBjYWxsYmFjaylcbntcbiAgdmFyIHN0YXRlID0gaW5pdFN0YXRlKGxpc3QpO1xuXG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IChzdGF0ZVsna2V5ZWRMaXN0J10gfHwgbGlzdCkubGVuZ3RoKVxuICB7XG4gICAgaXRlcmF0ZShsaXN0LCBpdGVyYXRvciwgc3RhdGUsIGZ1bmN0aW9uKGVycm9yLCByZXN1bHQpXG4gICAge1xuICAgICAgaWYgKGVycm9yKVxuICAgICAge1xuICAgICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBsb29rcyBsaWtlIGl0J3MgdGhlIGxhc3Qgb25lXG4gICAgICBpZiAoT2JqZWN0LmtleXMoc3RhdGUuam9icykubGVuZ3RoID09PSAwKVxuICAgICAge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBzdGF0ZS5yZXN1bHRzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RhdGUuaW5kZXgrKztcbiAgfVxuXG4gIHJldHVybiB0ZXJtaW5hdG9yLmJpbmQoc3RhdGUsIGNhbGxiYWNrKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZGVmZXI7XG5cbi8qKlxuICogUnVucyBwcm92aWRlZCBmdW5jdGlvbiBvbiBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgZXZlbnQgbG9vcFxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gZnVuY3Rpb24gdG8gcnVuXG4gKi9cbmZ1bmN0aW9uIGRlZmVyKGZuKVxue1xuICB2YXIgbmV4dFRpY2sgPSB0eXBlb2Ygc2V0SW1tZWRpYXRlID09ICdmdW5jdGlvbidcbiAgICA/IHNldEltbWVkaWF0ZVxuICAgIDogKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgPT0gJ29iamVjdCcgJiYgdHlwZW9mIHByb2Nlc3MubmV4dFRpY2sgPT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm9jZXNzLm5leHRUaWNrXG4gICAgICA6IG51bGxcbiAgICApO1xuXG4gIGlmIChuZXh0VGljaylcbiAge1xuICAgIG5leHRUaWNrKGZuKTtcbiAgfVxuICBlbHNlXG4gIHtcbiAgICBzZXRUaW1lb3V0KGZuLCAwKTtcbiAgfVxufVxuIiwidmFyIHNlcmlhbE9yZGVyZWQgPSByZXF1aXJlKCcuL3NlcmlhbE9yZGVyZWQuanMnKTtcblxuLy8gUHVibGljIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWw7XG5cbi8qKlxuICogUnVucyBpdGVyYXRvciBvdmVyIHByb3ZpZGVkIGFycmF5IGVsZW1lbnRzIGluIHNlcmllc1xuICpcbiAqIEBwYXJhbSAgIHthcnJheXxvYmplY3R9IGxpc3QgLSBhcnJheSBvciBvYmplY3QgKG5hbWVkIGxpc3QpIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIHJ1blxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGludm9rZWQgd2hlbiBhbGwgZWxlbWVudHMgcHJvY2Vzc2VkXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IC0gam9icyB0ZXJtaW5hdG9yXG4gKi9cbmZ1bmN0aW9uIHNlcmlhbChsaXN0LCBpdGVyYXRvciwgY2FsbGJhY2spXG57XG4gIHJldHVybiBzZXJpYWxPcmRlcmVkKGxpc3QsIGl0ZXJhdG9yLCBudWxsLCBjYWxsYmFjayk7XG59XG4iLCIvLyBwb3B1bGF0ZXMgbWlzc2luZyB2YWx1ZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZHN0LCBzcmMpIHtcblxuICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24ocHJvcClcbiAge1xuICAgIGRzdFtwcm9wXSA9IGRzdFtwcm9wXSB8fCBzcmNbcHJvcF07XG4gIH0pO1xuXG4gIHJldHVybiBkc3Q7XG59O1xuIiwiLy8gVE9ETyhCYWJlbCA4KTogUmVtb3ZlIHRoaXMgZmlsZS5cblxudmFyIHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWVcIikoKTtcbm1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcblxuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9wYWNrYWdlcy9ydW50aW1lL3J1bnRpbWUuanMjTDczNj1cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8qISByZWdlbmVyYXRvci1ydW50aW1lIC0tIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLiAtLSBsaWNlbnNlIChNSVQpOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL0xJQ0VOU0UgKi9cbiAgbW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lID0gZnVuY3Rpb24gX3JlZ2VuZXJhdG9yUnVudGltZSgpIHtcbiAgICByZXR1cm4gZXhwb3J0cztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzO1xuICB2YXIgZXhwb3J0cyA9IHt9LFxuICAgIE9wID0gT2JqZWN0LnByb3RvdHlwZSxcbiAgICBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eSxcbiAgICAkU3ltYm9sID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgPyBTeW1ib2wgOiB7fSxcbiAgICBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCIsXG4gICAgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiLFxuICAgIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgIHdyaXRhYmxlOiAhMFxuICAgIH0pLCBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIGRlZmluZSh7fSwgXCJcIik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yLFxuICAgICAgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpLFxuICAgICAgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yLl9pbnZva2UgPSBmdW5jdGlvbiAoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgICAgdmFyIHN0YXRlID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICAgICAgICBpZiAoXCJleGVjdXRpbmdcIiA9PT0gc3RhdGUpIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICAgIGlmIChcImNvbXBsZXRlZFwiID09PSBzdGF0ZSkge1xuICAgICAgICAgIGlmIChcInRocm93XCIgPT09IG1ldGhvZCkgdGhyb3cgYXJnO1xuICAgICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZCwgY29udGV4dC5hcmcgPSBhcmc7Oykge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcIm5leHRcIiA9PT0gY29udGV4dC5tZXRob2QpIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztlbHNlIGlmIChcInRocm93XCIgPT09IGNvbnRleHQubWV0aG9kKSB7XG4gICAgICAgICAgICBpZiAoXCJzdXNwZW5kZWRTdGFydFwiID09PSBzdGF0ZSkgdGhyb3cgc3RhdGUgPSBcImNvbXBsZXRlZFwiLCBjb250ZXh0LmFyZztcbiAgICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuICAgICAgICAgIH0gZWxzZSBcInJldHVyblwiID09PSBjb250ZXh0Lm1ldGhvZCAmJiBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgICAgc3RhdGUgPSBcImV4ZWN1dGluZ1wiO1xuICAgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoXCJub3JtYWxcIiA9PT0gcmVjb3JkLnR5cGUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9IGNvbnRleHQuZG9uZSA/IFwiY29tcGxldGVkXCIgOiBcInN1c3BlbmRlZFlpZWxkXCIsIHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXCJ0aHJvd1wiID09PSByZWNvcmQudHlwZSAmJiAoc3RhdGUgPSBcImNvbXBsZXRlZFwiLCBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KGlubmVyRm4sIHNlbGYsIGNvbnRleHQpLCBnZW5lcmF0b3I7XG4gIH1cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwibm9ybWFsXCIsXG4gICAgICAgIGFyZzogZm4uY2FsbChvYmosIGFyZylcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInRocm93XCIsXG4gICAgICAgIGFyZzogZXJyXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIGRlZmluZShJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcbiAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiYgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkgJiYgKEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUpO1xuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPSBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAoXCJ0aHJvd1wiICE9PSByZWNvcmQudHlwZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZyxcbiAgICAgICAgICB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlICYmIFwib2JqZWN0XCIgPT0gX3R5cGVvZih2YWx1ZSkgJiYgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSA/IFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KSA6IFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHVud3JhcHBlZCkge1xuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZCwgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgIH1cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuICAgIHRoaXMuX2ludm9rZSA9IGZ1bmN0aW9uIChtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID0gcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAodW5kZWZpbmVkID09PSBtZXRob2QpIHtcbiAgICAgIGlmIChjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgXCJ0aHJvd1wiID09PSBjb250ZXh0Lm1ldGhvZCkge1xuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0gJiYgKGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIiwgY29udGV4dC5hcmcgPSB1bmRlZmluZWQsIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpLCBcInRocm93XCIgPT09IGNvbnRleHQubWV0aG9kKSkgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiLCBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG4gICAgaWYgKFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUpIHJldHVybiBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIiwgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnLCBjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgQ29udGludWVTZW50aW5lbDtcbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG4gICAgcmV0dXJuIGluZm8gPyBpbmZvLmRvbmUgPyAoY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWUsIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2MsIFwicmV0dXJuXCIgIT09IGNvbnRleHQubWV0aG9kICYmIChjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiLCBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZCksIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsLCBDb250aW51ZVNlbnRpbmVsKSA6IGluZm8gOiAoY29udGV4dC5tZXRob2QgPSBcInRocm93XCIsIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpLCBjb250ZXh0LmRlbGVnYXRlID0gbnVsbCwgQ29udGludWVTZW50aW5lbCk7XG4gIH1cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7XG4gICAgICB0cnlMb2M6IGxvY3NbMF1cbiAgICB9O1xuICAgIDEgaW4gbG9jcyAmJiAoZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdKSwgMiBpbiBsb2NzICYmIChlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXSwgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdKSwgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCIsIGRlbGV0ZSByZWNvcmQuYXJnLCBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbe1xuICAgICAgdHJ5TG9jOiBcInJvb3RcIlxuICAgIH1dLCB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyksIHRoaXMucmVzZXQoITApO1xuICB9XG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiBpdGVyYWJsZS5uZXh0KSByZXR1cm4gaXRlcmFibGU7XG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSxcbiAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIGZvciAoOyArK2kgPCBpdGVyYWJsZS5sZW5ndGg7KSB7XG4gICAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHJldHVybiBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV0sIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5leHQudmFsdWUgPSB1bmRlZmluZWQsIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmV4dDogZG9uZVJlc3VsdFxuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRvbmU6ICEwXG4gICAgfTtcbiAgfVxuICByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIGRlZmluZShHcCwgXCJjb25zdHJ1Y3RvclwiLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSksIGRlZmluZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgXCJjb25zdHJ1Y3RvclwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSwgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBnZW5GdW4gJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiAhIWN0b3IgJiYgKGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA9PT0gKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSk7XG4gIH0sIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcbiAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpIDogKGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgZGVmaW5lKGdlbkZ1biwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLCBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCksIGdlbkZ1bjtcbiAgfSwgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hd2FpdDogYXJnXG4gICAgfTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKSwgZGVmaW5lKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlLCBhc3luY0l0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yLCBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24gKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIHZvaWQgMCA9PT0gUHJvbWlzZUltcGwgJiYgKFByb21pc2VJbXBsID0gUHJvbWlzZSk7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcih3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSwgUHJvbWlzZUltcGwpO1xuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikgPyBpdGVyIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICB9KTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKSwgZGVmaW5lKEdwLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JcIiksIGRlZmluZShHcCwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGRlZmluZShHcCwgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pLCBleHBvcnRzLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXMucmV2ZXJzZSgpLCBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgZm9yICg7IGtleXMubGVuZ3RoOykge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHJldHVybiBuZXh0LnZhbHVlID0ga2V5LCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0LmRvbmUgPSAhMCwgbmV4dDtcbiAgICB9O1xuICB9LCBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcywgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG4gICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXYgPSAwLCB0aGlzLm5leHQgPSAwLCB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkLCB0aGlzLmRvbmUgPSAhMSwgdGhpcy5kZWxlZ2F0ZSA9IG51bGwsIHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMuYXJnID0gdW5kZWZpbmVkLCB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KSwgIXNraXBUZW1wUmVzZXQpIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICBcInRcIiA9PT0gbmFtZS5jaGFyQXQoMCkgJiYgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiYgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSAmJiAodGhpc1tuYW1lXSA9IHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5kb25lID0gITA7XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO1xuICAgICAgaWYgKFwidGhyb3dcIiA9PT0gcm9vdFJlY29yZC50eXBlKSB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB0aHJvdyBleGNlcHRpb247XG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiLCByZWNvcmQuYXJnID0gZXhjZXB0aW9uLCBjb250ZXh0Lm5leHQgPSBsb2MsIGNhdWdodCAmJiAoY29udGV4dC5tZXRob2QgPSBcIm5leHRcIiwgY29udGV4dC5hcmcgPSB1bmRlZmluZWQpLCAhIWNhdWdodDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldLFxuICAgICAgICAgIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgIGlmIChcInJvb3RcIiA9PT0gZW50cnkudHJ5TG9jKSByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpLFxuICAgICAgICAgICAgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgITApO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzRmluYWxseSkgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFicnVwdDogZnVuY3Rpb24gYWJydXB0KHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiYgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmluYWxseUVudHJ5ICYmIChcImJyZWFrXCIgPT09IHR5cGUgfHwgXCJjb250aW51ZVwiID09PSB0eXBlKSAmJiBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJiBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MgJiYgKGZpbmFsbHlFbnRyeSA9IG51bGwpO1xuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPSB0eXBlLCByZWNvcmQuYXJnID0gYXJnLCBmaW5hbGx5RW50cnkgPyAodGhpcy5tZXRob2QgPSBcIm5leHRcIiwgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MsIENvbnRpbnVlU2VudGluZWwpIDogdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHJlY29yZC50eXBlKSB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIiA9PT0gcmVjb3JkLnR5cGUgfHwgXCJjb250aW51ZVwiID09PSByZWNvcmQudHlwZSA/IHRoaXMubmV4dCA9IHJlY29yZC5hcmcgOiBcInJldHVyblwiID09PSByZWNvcmQudHlwZSA/ICh0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmcsIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIiwgdGhpcy5uZXh0ID0gXCJlbmRcIikgOiBcIm5vcm1hbFwiID09PSByZWNvcmQudHlwZSAmJiBhZnRlckxvYyAmJiAodGhpcy5uZXh0ID0gYWZ0ZXJMb2MpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG4gICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2goZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSByZXR1cm4gdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyksIHJlc2V0VHJ5RW50cnkoZW50cnkpLCBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuICAgIH0sXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbiBfY2F0Y2godHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKFwidGhyb3dcIiA9PT0gcmVjb3JkLnR5cGUpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIGRlbGVnYXRlWWllbGQoaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfSwgXCJuZXh0XCIgPT09IHRoaXMubWV0aG9kICYmICh0aGlzLmFyZyA9IHVuZGVmaW5lZCksIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9LCBleHBvcnRzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gY29udmVydEZpbGVQYXRoVG9CYXNlRGlyZWN0b3J5UGF0aChzb3VyY2VQYXRoLCBmaWxlUGF0aCkge1xuICAgIGxldCBuZXdTdHJpbmcgPSAoc291cmNlUGF0aC5zdGFydHNXaXRoKCcuLycpID8gc291cmNlUGF0aC5zdWJzdHJpbmcoMikgOiBzb3VyY2VQYXRoKTtcbiAgICAvL21ha2Ugc3VyZSB0aGVyZSBpc24ndCBhIGRhbmdsaW5nIC8gdG8gdGhyb3cgYSBmYWxzZSBwb3NpdGl2ZSBpbnRvIHRoZSBtaXhcbiAgICBjb25zdCBsYXN0SW5kZXhPZkRpcmVjdG9yeSA9IG5ld1N0cmluZy5sYXN0SW5kZXhPZignLycpO1xuICAgIGlmKGxhc3RJbmRleE9mRGlyZWN0b3J5ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZmlsZVBhdGg7XG4gICAgfVxuICAgIGNvbnN0IGxlbmd0aE9mU291cmNlID0gc291cmNlUGF0aC5sZW5ndGg7XG4gICAgLy9vbmx5IHRyaW0gaWYgdGhlIC8gaXMgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmdcbiAgICBpZiAobGFzdEluZGV4T2ZEaXJlY3RvcnkgPT09IChsZW5ndGhPZlNvdXJjZSAtIDEpKSB7XG4gICAgICAgIG5ld1N0cmluZyA9IHNvdXJjZVBhdGguc2xpY2UoMCwtMSk7XG4gICAgfVxuXG4gICAgLy9ub3cgdGhhdCB3ZSdyZSBzdXJlIG9mIG5vIGZhbHNlIHBvc2l0aXZlLCBsZXQncyBjaGVjayBhbmQgc2VlIHdoZXJlIHRoZSBcInJvb3RcIiBkaXJlY3RvcnkgaXNcbiAgICBjb25zdCBuZXdMYXN0SW5kZXggPSBuZXdTdHJpbmcubGFzdEluZGV4T2YoJy8nKTtcbiAgICBpZiAoIG5ld0xhc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIG5ld1N0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXRoR2FyYmFnZSA9IG5ld1N0cmluZy5zdWJzdHJpbmcoMCwgbmV3TGFzdEluZGV4ICsgMSk7XG4gICAgICAgIG5ld1N0cmluZyA9IGZpbGVQYXRoLnNwbGl0KHBhdGhHYXJiYWdlKVsxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3U3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnZlcnRGaWxlUGF0aFRvQmFzZURpcmVjdG9yeVBhdGgiLCJpbXBvcnQgeyBQaW5hdGFDb25maWcgfSBmcm9tICcuLi8uLi8uLic7XG5pbXBvcnQgcGluTGlzdCwgeyBQaW5hdGFQaW4sIFBpbmF0YVBpbkxpc3RGaWx0ZXJPcHRpb25zIH0gZnJvbSAnLi4vcGluTGlzdC9waW5MaXN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RmlsZXNCeUNvdW50KFxuICAgIGNvbmZpZzogUGluYXRhQ29uZmlnLFxuXG4gICAgZmlsdGVyczogUGluYXRhUGluTGlzdEZpbHRlck9wdGlvbnMgPSB7fSxcbiAgICBtYXhDb3VudCA9IC0xXG4pIHtcbiAgICBpZiAobWF4Q291bnQgPT09IDApIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJNYXggY291bnQgY2FuJ3QgYmUgMFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3luY0l0ZXJhYmxlID0ge1xuICAgICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdOiAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICBjb25zdCBwYWdlTGltaXQgPSAxMDtcbiAgICAgICAgICAgIGxldCBwYWdlT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGxldCBjYWNoZTogUGluYXRhUGluW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBrZWVwTG9vcGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5leHQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCB8fCAoaSAlIHBhZ2VMaW1pdCA9PT0gMCAmJiBrZWVwTG9vcGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5MaXN0KGNvbmZpZywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmlsdGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnsgcGFnZU9mZnNldCwgcGFnZUxpbWl0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigocmVzcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSByZXNwLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlT2Zmc2V0ID0gcGFnZU9mZnNldCArIGNhY2hlLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgcmVxdWVzdGVkIGFsbCBwaW5zIHdlIGhhdmUgdG8ga2VlcCBsb29waW5nIGlmIHRoZSBsaW1pdCBwYWdlIHdhcyBub3QgZnVsZmlsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcExvb3BpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXhDb3VudCA9PT0gLTEgPyBjYWNoZS5sZW5ndGggPT09IHBhZ2VMaW1pdCA6IGkgPCBtYXhDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoMCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVUb1JldHVybiA9IGNhY2hlW2kgJSBwYWdlTGltaXRdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb25lID0gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4Q291bnQgPT09IC0xID8gaSA8IHBhZ2VPZmZzZXQgOiBpIDwgbWF4Q291bnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcExvb3BpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVRvUmV0dXJuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJldHVybigpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHJlYWNoZWQgaWYgdGhlIGNvbnN1bWVyIGNhbGxlZCAnYnJlYWsnIG9yICdyZXR1cm4nIGVhcmx5IGluIHRoZSBsb29wLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgdmFsdWU6IGksIGRvbmU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gYXN5bmNJdGVyYWJsZTtcbn1cbiIsImV4cG9ydCAqIGZyb20gJy4uL2RhdGEvcGluTGlzdC9waW5MaXN0JztcbmV4cG9ydCAqIGZyb20gJy4uL2RhdGEvcGluTGlzdC9xdWVyeUJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi90ZXN0QXV0aGVudGljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyUGlubmVkRGF0YVRvdGFsJztcbiIsImV4cG9ydCAqIGZyb20gJy4vcGluSm9icy9waW5Kb2JzJztcbmV4cG9ydCAqIGZyb20gJy4vcGluSm9icy9xdWVyeUJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9oYXNoTWV0YWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9waW5CeUhhc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9waW5GaWxlVG9JUEZTJztcbmV4cG9ydCAqIGZyb20gJy4vcGluRnJvbUZTJztcbmV4cG9ydCAqIGZyb20gJy4vcGluSlNPTlRvSVBGUyc7XG5leHBvcnQgKiBmcm9tICcuL3VucGluJztcbiJdLCJzb3VyY2VSb290IjoiIn0=