@abp/utils
Advanced tools
Comparing version 2.3.0 to 2.3.1
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"ListNode":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":9,"character":21,"context":{"typeName":"T"},"module":"./lib/linked-list"}]}]}},"LinkedList":{"__symbolic":"class","arity":1,"members":{"attach":[{"__symbolic":"method"}],"attachMany":[{"__symbolic":"method"}],"detach":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"addMany":[{"__symbolic":"method"}],"addAfter":[{"__symbolic":"method"}],"addBefore":[{"__symbolic":"method"}],"addByIndex":[{"__symbolic":"method"}],"addHead":[{"__symbolic":"method"}],"addTail":[{"__symbolic":"method"}],"addManyAfter":[{"__symbolic":"method"}],"addManyBefore":[{"__symbolic":"method"}],"addManyByIndex":[{"__symbolic":"method"}],"addManyHead":[{"__symbolic":"method"}],"addManyTail":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}],"dropMany":[{"__symbolic":"method"}],"dropByIndex":[{"__symbolic":"method"}],"dropByValue":[{"__symbolic":"method"}],"dropByValueAll":[{"__symbolic":"method"}],"dropHead":[{"__symbolic":"method"}],"dropTail":[{"__symbolic":"method"}],"dropManyByIndex":[{"__symbolic":"method"}],"dropManyHead":[{"__symbolic":"method"}],"dropManyTail":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"findIndex":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"indexOf":[{"__symbolic":"method"}],"toArray":[{"__symbolic":"method"}],"toNodeArray":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"ListMapperFn":{"__symbolic":"interface"},"ListComparisonFn":{"__symbolic":"interface"},"ListIteratorFn":{"__symbolic":"interface"}},"origins":{"ListNode":"./lib/linked-list","LinkedList":"./lib/linked-list","ListMapperFn":"./lib/linked-list","ListComparisonFn":"./lib/linked-list","ListIteratorFn":"./lib/linked-list"},"importAs":"@abp/utils"} | ||
{"__symbolic":"module","version":4,"metadata":{"ListNode":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":9,"character":21,"context":{"typeName":"T"},"module":"./lib/linked-list"}]}]}},"LinkedList":{"__symbolic":"class","arity":1,"members":{"attach":[{"__symbolic":"method"}],"attachMany":[{"__symbolic":"method"}],"detach":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"addMany":[{"__symbolic":"method"}],"addAfter":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addBefore":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addByIndex":[{"__symbolic":"method"}],"addHead":[{"__symbolic":"method"}],"addTail":[{"__symbolic":"method"}],"addManyAfter":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addManyBefore":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addManyByIndex":[{"__symbolic":"method"}],"addManyHead":[{"__symbolic":"method"}],"addManyTail":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}],"dropMany":[{"__symbolic":"method"}],"dropByIndex":[{"__symbolic":"method"}],"dropByValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"dropByValueAll":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"dropHead":[{"__symbolic":"method"}],"dropTail":[{"__symbolic":"method"}],"dropManyByIndex":[{"__symbolic":"method"}],"dropManyHead":[{"__symbolic":"method"}],"dropManyTail":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"findIndex":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"indexOf":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"toArray":[{"__symbolic":"method"}],"toNodeArray":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"ListMapperFn":{"__symbolic":"interface"},"ListComparisonFn":{"__symbolic":"interface"},"ListIteratorFn":{"__symbolic":"interface"}},"origins":{"ListNode":"./lib/linked-list","LinkedList":"./lib/linked-list","ListMapperFn":"./lib/linked-list","ListComparisonFn":"./lib/linked-list","ListIteratorFn":"./lib/linked-list"},"importAs":"@abp/utils"} |
@@ -297,9 +297,17 @@ (function (global, factory) { | ||
return { | ||
after: function (previousValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addAfter(value, previousValue, compareFn); | ||
after: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params)); | ||
}, | ||
before: function (nextValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addBefore(value, nextValue, compareFn); | ||
before: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params)); | ||
}, | ||
@@ -314,9 +322,17 @@ byIndex: function (position) { return _this.addByIndex(value, position); }, | ||
return { | ||
after: function (previousValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addManyAfter(values, previousValue, compareFn); | ||
after: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params)); | ||
}, | ||
before: function (nextValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addManyBefore(values, nextValue, compareFn); | ||
before: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params)); | ||
}, | ||
@@ -408,9 +424,15 @@ byIndex: function (position) { return _this.addManyByIndex(values, position); }, | ||
byIndex: function (position) { return _this.dropByIndex(position); }, | ||
byValue: function (value, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.dropByValue(value, compareFn); | ||
byValue: function () { | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return _this.dropByValue.apply(_this, params); | ||
}, | ||
byValueAll: function (value, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.dropByValueAll(value, compareFn); | ||
byValueAll: function () { | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return _this.dropByValueAll.apply(_this, params); | ||
}, | ||
@@ -551,2 +573,3 @@ head: function () { return _this.dropHead(); }, | ||
}; | ||
// Cannot use Generator type because of ng-packagr | ||
LinkedList.prototype[Symbol.iterator] = function () { | ||
@@ -553,0 +576,0 @@ var node, position; |
@@ -1,2 +0,2 @@ | ||
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("just-compare")):"function"==typeof define&&define.amd?define("@abp/utils",["exports","just-compare"],r):r(((t=t||self).abp=t.abp||{},t.abp.utils={}),t.compare)}(this,(function(t,r){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;function e(t,r){var e,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(o){return function(u){return function(o){if(e)throw new TypeError("Generator is already executing.");for(;a;)try{if(e=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=r.call(t,a)}catch(t){o=[6,t],n=0}finally{e=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,u])}}}var n=function(t){this.value=t},i=function(){function t(){this.size=0}return Object.defineProperty(t.prototype,"head",{get:function(){return this.first},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tail",{get:function(){return this.last},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this.size},enumerable:!0,configurable:!0}),t.prototype.attach=function(t,r,e){if(!r)return this.addHead(t);if(!e)return this.addTail(t);var i=new n(t);return i.previous=r,r.next=i,i.next=e,e.previous=i,this.size++,i},t.prototype.attachMany=function(r,e,n){if(!r.length)return[];if(!e)return this.addManyHead(r);if(!n)return this.addManyTail(r);var i=new t;return i.addManyTail(r),i.first.previous=e,e.next=i.first,i.last.next=n,n.previous=i.last,this.size+=r.length,i.toNodeArray()},t.prototype.detach=function(t){return t.previous?t.next?(t.previous.next=t.next,t.next.previous=t.previous,this.size--,t):this.dropTail():this.dropHead()},t.prototype.add=function(t){var e=this;return{after:function(n,i){return void 0===i&&(i=r),e.addAfter(t,n,i)},before:function(n,i){return void 0===i&&(i=r),e.addBefore(t,n,i)},byIndex:function(r){return e.addByIndex(t,r)},head:function(){return e.addHead(t)},tail:function(){return e.addTail(t)}}},t.prototype.addMany=function(t){var e=this;return{after:function(n,i){return void 0===i&&(i=r),e.addManyAfter(t,n,i)},before:function(n,i){return void 0===i&&(i=r),e.addManyBefore(t,n,i)},byIndex:function(r){return e.addManyByIndex(t,r)},head:function(){return e.addManyHead(t)},tail:function(){return e.addManyTail(t)}}},t.prototype.addAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attach(t,i,i.next):this.addTail(t)},t.prototype.addBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attach(t,i.previous,i):this.addHead(t)},t.prototype.addByIndex=function(t,r){if(r<0)r+=this.size;else if(r>=this.size)return this.addTail(t);if(r<=0)return this.addHead(t);var e=this.get(r);return this.attach(t,e.previous,e)},t.prototype.addHead=function(t){var r=new n(t);return r.next=this.first,this.first?this.first.previous=r:this.last=r,this.first=r,this.size++,r},t.prototype.addTail=function(t){var r=new n(t);return this.first?(r.previous=this.last,this.last.next=r,this.last=r):(this.first=r,this.last=r),this.size++,r},t.prototype.addManyAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i,i.next):this.addManyTail(t)},t.prototype.addManyBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i.previous,i):this.addManyHead(t)},t.prototype.addManyByIndex=function(t,r){if(r<0&&(r+=this.size),r<=0)return this.addManyHead(t);if(r>=this.size)return this.addManyTail(t);var e=this.get(r);return this.attachMany(t,e.previous,e)},t.prototype.addManyHead=function(t){var r=this;return t.reduceRight((function(t,e){return t.unshift(r.addHead(e)),t}),[])},t.prototype.addManyTail=function(t){var r=this;return t.map((function(t){return r.addTail(t)}))},t.prototype.drop=function(){var t=this;return{byIndex:function(r){return t.dropByIndex(r)},byValue:function(e,n){return void 0===n&&(n=r),t.dropByValue(e,n)},byValueAll:function(e,n){return void 0===n&&(n=r),t.dropByValueAll(e,n)},head:function(){return t.dropHead()},tail:function(){return t.dropTail()}}},t.prototype.dropMany=function(t){var r=this;return{byIndex:function(e){return r.dropManyByIndex(t,e)},head:function(){return r.dropManyHead(t)},tail:function(){return r.dropManyTail(t)}}},t.prototype.dropByIndex=function(t){t<0&&(t+=this.size);var r=this.get(t);return r?this.detach(r):void 0},t.prototype.dropByValue=function(t,e){void 0===e&&(e=r);var n=this.findIndex((function(r){return e(r.value,t)}));return n<0?void 0:this.dropByIndex(n)},t.prototype.dropByValueAll=function(t,e){void 0===e&&(e=r);for(var n=[],i=this.first,o=0;i;o++,i=i.next)e(i.value,t)&&n.push(this.dropByIndex(o-n.length));return n},t.prototype.dropHead=function(){var t=this.first;if(t)return this.first=t.next,this.first?this.first.previous=void 0:this.last=void 0,this.size--,t},t.prototype.dropTail=function(){var t=this.last;if(t)return this.last=t.previous,this.last?this.last.next=void 0:this.first=void 0,this.size--,t},t.prototype.dropManyByIndex=function(t,r){if(t<=0)return[];if(r<0)r=Math.max(r+this.size,0);else if(r>=this.size)return[];t=Math.min(t,this.size-r);for(var e=[];t--;){var n=this.get(r);e.push(this.detach(n))}return e},t.prototype.dropManyHead=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.unshift(this.dropHead());return r},t.prototype.dropManyTail=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.push(this.dropTail());return r},t.prototype.find=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return r},t.prototype.findIndex=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return e;return-1},t.prototype.forEach=function(t){for(var r=this.first,e=0;r;e++,r=r.next)t(r,e,this)},t.prototype.get=function(t){return this.find((function(r,e){return t===e}))},t.prototype.indexOf=function(t,e){return void 0===e&&(e=r),this.findIndex((function(r){return e(r.value,t)}))},t.prototype.toArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r.value})),t},t.prototype.toNodeArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r})),t},t.prototype.toString=function(t){return void 0===t&&(t=JSON.stringify),this.toArray().map((function(r){return t(r)})).join(" <-> ")},t.prototype[Symbol.iterator]=function(){var t;return e(this,(function(r){switch(r.label){case 0:t=this.first,0,r.label=1;case 1:return t?[4,t.value]:[3,4];case 2:r.sent(),r.label=3;case 3:return t=t.next,[3,1];case 4:return[2]}}))},t}();t.LinkedList=i,t.ListNode=n,Object.defineProperty(t,"__esModule",{value:!0})})); | ||
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("just-compare")):"function"==typeof define&&define.amd?define("@abp/utils",["exports","just-compare"],r):r(((t=t||self).abp=t.abp||{},t.abp.utils={}),t.compare)}(this,(function(t,r){"use strict";r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;function e(t,r){var e,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(o){return function(u){return function(o){if(e)throw new TypeError("Generator is already executing.");for(;a;)try{if(e=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=r.call(t,a)}catch(t){o=[6,t],n=0}finally{e=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,u])}}}function n(t,r){var e="function"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var n,i,o=e.call(t),a=[];try{for(;(void 0===r||r-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(e=o.return)&&e.call(o)}finally{if(i)throw i.error}}return a}function i(){for(var t=[],r=0;r<arguments.length;r++)t=t.concat(n(arguments[r]));return t}var o=function(t){this.value=t},a=function(){function t(){this.size=0}return Object.defineProperty(t.prototype,"head",{get:function(){return this.first},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"tail",{get:function(){return this.last},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this.size},enumerable:!0,configurable:!0}),t.prototype.attach=function(t,r,e){if(!r)return this.addHead(t);if(!e)return this.addTail(t);var n=new o(t);return n.previous=r,r.next=n,n.next=e,e.previous=n,this.size++,n},t.prototype.attachMany=function(r,e,n){if(!r.length)return[];if(!e)return this.addManyHead(r);if(!n)return this.addManyTail(r);var i=new t;return i.addManyTail(r),i.first.previous=e,e.next=i.first,i.last.next=n,n.previous=i.last,this.size+=r.length,i.toNodeArray()},t.prototype.detach=function(t){return t.previous?t.next?(t.previous.next=t.next,t.next.previous=t.previous,this.size--,t):this.dropTail():this.dropHead()},t.prototype.add=function(t){var r=this;return{after:function(){for(var e,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return(e=r.addAfter).call.apply(e,i([r,t],n))},before:function(){for(var e,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return(e=r.addBefore).call.apply(e,i([r,t],n))},byIndex:function(e){return r.addByIndex(t,e)},head:function(){return r.addHead(t)},tail:function(){return r.addTail(t)}}},t.prototype.addMany=function(t){var r=this;return{after:function(){for(var e,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return(e=r.addManyAfter).call.apply(e,i([r,t],n))},before:function(){for(var e,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return(e=r.addManyBefore).call.apply(e,i([r,t],n))},byIndex:function(e){return r.addManyByIndex(t,e)},head:function(){return r.addManyHead(t)},tail:function(){return r.addManyTail(t)}}},t.prototype.addAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attach(t,i,i.next):this.addTail(t)},t.prototype.addBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attach(t,i.previous,i):this.addHead(t)},t.prototype.addByIndex=function(t,r){if(r<0)r+=this.size;else if(r>=this.size)return this.addTail(t);if(r<=0)return this.addHead(t);var e=this.get(r);return this.attach(t,e.previous,e)},t.prototype.addHead=function(t){var r=new o(t);return r.next=this.first,this.first?this.first.previous=r:this.last=r,this.first=r,this.size++,r},t.prototype.addTail=function(t){var r=new o(t);return this.first?(r.previous=this.last,this.last.next=r,this.last=r):(this.first=r,this.last=r),this.size++,r},t.prototype.addManyAfter=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i,i.next):this.addManyTail(t)},t.prototype.addManyBefore=function(t,e,n){void 0===n&&(n=r);var i=this.find((function(t){return n(t.value,e)}));return i?this.attachMany(t,i.previous,i):this.addManyHead(t)},t.prototype.addManyByIndex=function(t,r){if(r<0&&(r+=this.size),r<=0)return this.addManyHead(t);if(r>=this.size)return this.addManyTail(t);var e=this.get(r);return this.attachMany(t,e.previous,e)},t.prototype.addManyHead=function(t){var r=this;return t.reduceRight((function(t,e){return t.unshift(r.addHead(e)),t}),[])},t.prototype.addManyTail=function(t){var r=this;return t.map((function(t){return r.addTail(t)}))},t.prototype.drop=function(){var t=this;return{byIndex:function(r){return t.dropByIndex(r)},byValue:function(){for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return t.dropByValue.apply(t,r)},byValueAll:function(){for(var r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return t.dropByValueAll.apply(t,r)},head:function(){return t.dropHead()},tail:function(){return t.dropTail()}}},t.prototype.dropMany=function(t){var r=this;return{byIndex:function(e){return r.dropManyByIndex(t,e)},head:function(){return r.dropManyHead(t)},tail:function(){return r.dropManyTail(t)}}},t.prototype.dropByIndex=function(t){t<0&&(t+=this.size);var r=this.get(t);return r?this.detach(r):void 0},t.prototype.dropByValue=function(t,e){void 0===e&&(e=r);var n=this.findIndex((function(r){return e(r.value,t)}));return n<0?void 0:this.dropByIndex(n)},t.prototype.dropByValueAll=function(t,e){void 0===e&&(e=r);for(var n=[],i=this.first,o=0;i;o++,i=i.next)e(i.value,t)&&n.push(this.dropByIndex(o-n.length));return n},t.prototype.dropHead=function(){var t=this.first;if(t)return this.first=t.next,this.first?this.first.previous=void 0:this.last=void 0,this.size--,t},t.prototype.dropTail=function(){var t=this.last;if(t)return this.last=t.previous,this.last?this.last.next=void 0:this.first=void 0,this.size--,t},t.prototype.dropManyByIndex=function(t,r){if(t<=0)return[];if(r<0)r=Math.max(r+this.size,0);else if(r>=this.size)return[];t=Math.min(t,this.size-r);for(var e=[];t--;){var n=this.get(r);e.push(this.detach(n))}return e},t.prototype.dropManyHead=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.unshift(this.dropHead());return r},t.prototype.dropManyTail=function(t){if(t<=0)return[];t=Math.min(t,this.size);for(var r=[];t--;)r.push(this.dropTail());return r},t.prototype.find=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return r},t.prototype.findIndex=function(t){for(var r=this.first,e=0;r;e++,r=r.next)if(t(r,e,this))return e;return-1},t.prototype.forEach=function(t){for(var r=this.first,e=0;r;e++,r=r.next)t(r,e,this)},t.prototype.get=function(t){return this.find((function(r,e){return t===e}))},t.prototype.indexOf=function(t,e){return void 0===e&&(e=r),this.findIndex((function(r){return e(r.value,t)}))},t.prototype.toArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r.value})),t},t.prototype.toNodeArray=function(){var t=new Array(this.size);return this.forEach((function(r,e){return t[e]=r})),t},t.prototype.toString=function(t){return void 0===t&&(t=JSON.stringify),this.toArray().map((function(r){return t(r)})).join(" <-> ")},t.prototype[Symbol.iterator]=function(){var t;return e(this,(function(r){switch(r.label){case 0:t=this.first,0,r.label=1;case 1:return t?[4,t.value]:[3,4];case 2:r.sent(),r.label=3;case 3:return t=t.next,[3,1];case 4:return[2]}}))},t}();t.LinkedList=a,t.ListNode=o,Object.defineProperty(t,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=abp-utils.umd.min.js.map |
@@ -62,4 +62,4 @@ /* tslint:disable:no-non-null-assertion */ | ||
return { | ||
after: (previousValue, compareFn = compare) => this.addAfter(value, previousValue, compareFn), | ||
before: (nextValue, compareFn = compare) => this.addBefore(value, nextValue, compareFn), | ||
after: (...params) => this.addAfter.call(this, value, ...params), | ||
before: (...params) => this.addBefore.call(this, value, ...params), | ||
byIndex: (position) => this.addByIndex(value, position), | ||
@@ -72,4 +72,4 @@ head: () => this.addHead(value), | ||
return { | ||
after: (previousValue, compareFn = compare) => this.addManyAfter(values, previousValue, compareFn), | ||
before: (nextValue, compareFn = compare) => this.addManyBefore(values, nextValue, compareFn), | ||
after: (...params) => this.addManyAfter.call(this, values, ...params), | ||
before: (...params) => this.addManyBefore.call(this, values, ...params), | ||
byIndex: (position) => this.addManyByIndex(values, position), | ||
@@ -153,4 +153,4 @@ head: () => this.addManyHead(values), | ||
byIndex: (position) => this.dropByIndex(position), | ||
byValue: (value, compareFn = compare) => this.dropByValue(value, compareFn), | ||
byValueAll: (value, compareFn = compare) => this.dropByValueAll(value, compareFn), | ||
byValue: (...params) => this.dropByValue.apply(this, params), | ||
byValueAll: (...params) => this.dropByValueAll.apply(this, params), | ||
head: () => this.dropHead(), | ||
@@ -285,2 +285,3 @@ tail: () => this.dropTail(), | ||
} | ||
// Cannot use Generator type because of ng-packagr | ||
*[Symbol.iterator]() { | ||
@@ -292,2 +293,2 @@ for (let node = this.first, position = 0; node; position++, node = node.next) { | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUUxQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLFFBQVE7SUFLbkIsWUFBWSxLQUFRO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBQXZCO1FBR1UsU0FBSSxHQUFHLENBQUMsQ0FBQztJQWdYbkIsQ0FBQztJQTlXQyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTyxNQUFNLENBQ1osS0FBUSxFQUNSLFlBQXFDLEVBQ3JDLFFBQWlDO1FBRWpDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO1FBQzdCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFVBQVUsQ0FDaEIsTUFBVyxFQUNYLFlBQXFDLEVBQ3JDLFFBQWlDO1FBRWpDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxFQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBTSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDcEMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUMzQixRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxNQUFNLENBQUMsSUFBaUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFRO1FBQ1YsT0FBTztZQUNMLEtBQUssRUFBRSxDQUFDLGFBQWdCLEVBQUUsWUFBaUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQztZQUNoRCxNQUFNLEVBQUUsQ0FBQyxTQUFZLEVBQUUsWUFBaUMsT0FBTyxFQUFFLEVBQUUsQ0FDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztZQUM3QyxPQUFPLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7WUFDL0QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQy9CLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFXO1FBQ2pCLE9BQU87WUFDTCxLQUFLLEVBQUUsQ0FBQyxhQUFnQixFQUFFLFlBQWlDLE9BQU8sRUFBRSxFQUFFLENBQ3BFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUM7WUFDckQsTUFBTSxFQUFFLENBQUMsU0FBWSxFQUFFLFlBQWlDLE9BQU8sRUFBRSxFQUFFLENBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7WUFDbEQsT0FBTyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1lBQ3BFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUSxFQUFFLGFBQWdCLEVBQUUsWUFBaUMsT0FBTztRQUMzRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUV6RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVEsRUFBRSxTQUFZLEVBQUUsWUFBaUMsT0FBTztRQUN4RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVEsRUFBRSxRQUFnQjtRQUNuQyxJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbkMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxRQUFRLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVE7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs7WUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVE7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVksQ0FDVixNQUFXLEVBQ1gsYUFBZ0IsRUFDaEIsWUFBaUMsT0FBTztRQUV4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUV6RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsYUFBYSxDQUNYLE1BQVcsRUFDWCxTQUFZLEVBQ1osWUFBaUMsT0FBTztRQUV4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQVcsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFeEMsSUFBSSxRQUFRLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVc7UUFDckIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxXQUFXLENBQUMsTUFBVztRQUNyQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDekQsT0FBTyxFQUFFLENBQUMsS0FBUSxFQUFFLFlBQWlDLE9BQU8sRUFBRSxFQUFFLENBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUNwQyxVQUFVLEVBQUUsQ0FBQyxLQUFRLEVBQUUsWUFBaUMsT0FBTyxFQUFFLEVBQUUsQ0FDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQ3ZDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLFFBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUNwRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksUUFBUSxHQUFHLENBQUM7WUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUV4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRW5DLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFRLEVBQUUsWUFBaUMsT0FBTztRQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV0RSxPQUFPLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVEsRUFBRSxZQUFpQyxPQUFPO1FBQy9ELE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsS0FBSyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hGLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUM7YUFDNUQ7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV4QixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQzs7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBRTNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFdkIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFMUIsSUFBSSxJQUFJLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7O2dCQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUU1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFWixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTFCLElBQUksUUFBUSxHQUFHLENBQUM7WUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMxRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsT0FBTyxLQUFLLEVBQUUsRUFBRTtZQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQVEsQ0FBRSxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXlCO1FBQ3BDLElBQUksS0FBSyxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsT0FBTyxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUcsQ0FBQyxDQUFDO1FBRWxELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBeUI7UUFDcEMsSUFBSSxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTFCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxPQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUVsQyxPQUFPLEtBQUssRUFBRTtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLENBQUM7UUFFL0MsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxTQUE0QjtRQUMvQixLQUFLLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEYsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxPQUFPLENBQUM7U0FDeEQ7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQTRCO1FBQ3BDLEtBQUssSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN4RixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztnQkFBRSxPQUFPLFFBQVEsQ0FBQztTQUN6RDtRQUVELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFjLFFBQThCO1FBQ2pELEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1RSxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsUUFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxPQUFPLENBQUMsS0FBUSxFQUFFLFlBQWlDLE9BQU87UUFDeEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV0RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsV0FBNEIsSUFBSSxDQUFDLFNBQVM7UUFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hCLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1RSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1ub24tbnVsbC1hc3NlcnRpb24gKi9cblxuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcblxuZXhwb3J0IGNsYXNzIExpc3ROb2RlPFQgPSBhbnk+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IFQ7XG4gIG5leHQ6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xuICBwcmV2aW91czogTGlzdE5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmtlZExpc3Q8VCA9IGFueT4ge1xuICBwcml2YXRlIGZpcnN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzaXplID0gMDtcblxuICBnZXQgaGVhZCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3Q7XG4gIH1cbiAgZ2V0IHRhaWwoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxhc3Q7XG4gIH1cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNpemU7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaChcbiAgICB2YWx1ZTogVCxcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxuICAgIG5leHROb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgKTogTGlzdE5vZGU8VD4ge1xuICAgIGlmICghcHJldmlvdXNOb2RlKSByZXR1cm4gdGhpcy5hZGRIZWFkKHZhbHVlKTtcblxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xuXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XG4gICAgbm9kZS5wcmV2aW91cyA9IHByZXZpb3VzTm9kZTtcbiAgICBwcmV2aW91c05vZGUubmV4dCA9IG5vZGU7XG4gICAgbm9kZS5uZXh0ID0gbmV4dE5vZGU7XG4gICAgbmV4dE5vZGUucHJldmlvdXMgPSBub2RlO1xuXG4gICAgdGhpcy5zaXplKys7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoTWFueShcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxuICAgIG5leHROb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgaWYgKCF2YWx1ZXMubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICBpZiAoIXByZXZpb3VzTm9kZSkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcblxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XG5cbiAgICBjb25zdCBsaXN0ID0gbmV3IExpbmtlZExpc3Q8VD4oKTtcbiAgICBsaXN0LmFkZE1hbnlUYWlsKHZhbHVlcyk7XG4gICAgbGlzdC5maXJzdCEucHJldmlvdXMgPSBwcmV2aW91c05vZGU7XG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBsaXN0LmZpcnN0O1xuICAgIGxpc3QubGFzdCEubmV4dCA9IG5leHROb2RlO1xuICAgIG5leHROb2RlLnByZXZpb3VzID0gbGlzdC5sYXN0O1xuXG4gICAgdGhpcy5zaXplICs9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICByZXR1cm4gbGlzdC50b05vZGVBcnJheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2gobm9kZTogTGlzdE5vZGU8VD4pIHtcbiAgICBpZiAoIW5vZGUucHJldmlvdXMpIHJldHVybiB0aGlzLmRyb3BIZWFkKCk7XG5cbiAgICBpZiAoIW5vZGUubmV4dCkgcmV0dXJuIHRoaXMuZHJvcFRhaWwoKTtcblxuICAgIG5vZGUucHJldmlvdXMubmV4dCA9IG5vZGUubmV4dDtcbiAgICBub2RlLm5leHQucHJldmlvdXMgPSBub2RlLnByZXZpb3VzO1xuXG4gICAgdGhpcy5zaXplLS07XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFkZCh2YWx1ZTogVCkge1xuICAgIHJldHVybiB7XG4gICAgICBhZnRlcjogKHByZXZpb3VzVmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpID0+XG4gICAgICAgIHRoaXMuYWRkQWZ0ZXIodmFsdWUsIHByZXZpb3VzVmFsdWUsIGNvbXBhcmVGbiksXG4gICAgICBiZWZvcmU6IChuZXh0VmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpID0+XG4gICAgICAgIHRoaXMuYWRkQmVmb3JlKHZhbHVlLCBuZXh0VmFsdWUsIGNvbXBhcmVGbiksXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5hZGRCeUluZGV4KHZhbHVlLCBwb3NpdGlvbiksXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmFkZEhlYWQodmFsdWUpLFxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgYWRkTWFueSh2YWx1ZXM6IFRbXSkge1xuICAgIHJldHVybiB7XG4gICAgICBhZnRlcjogKHByZXZpb3VzVmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpID0+XG4gICAgICAgIHRoaXMuYWRkTWFueUFmdGVyKHZhbHVlcywgcHJldmlvdXNWYWx1ZSwgY29tcGFyZUZuKSxcbiAgICAgIGJlZm9yZTogKG5leHRWYWx1ZTogVCwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSkgPT5cbiAgICAgICAgdGhpcy5hZGRNYW55QmVmb3JlKHZhbHVlcywgbmV4dFZhbHVlLCBjb21wYXJlRm4pLFxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuYWRkTWFueUJ5SW5kZXgodmFsdWVzLCBwb3NpdGlvbiksXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyksXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyksXG4gICAgfTtcbiAgfVxuXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4ge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcblxuICAgIHJldHVybiBwcmV2aW91cyA/IHRoaXMuYXR0YWNoKHZhbHVlLCBwcmV2aW91cywgcHJldmlvdXMubmV4dCkgOiB0aGlzLmFkZFRhaWwodmFsdWUpO1xuICB9XG5cbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcblxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRIZWFkKHZhbHVlKTtcbiAgfVxuXG4gIGFkZEJ5SW5kZXgodmFsdWU6IFQsIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xuICAgIGVsc2UgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuYWRkVGFpbCh2YWx1ZSk7XG5cbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkSGVhZCh2YWx1ZSk7XG5cbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcblxuICAgIHJldHVybiB0aGlzLmF0dGFjaCh2YWx1ZSwgbmV4dC5wcmV2aW91cywgbmV4dCk7XG4gIH1cblxuICBhZGRIZWFkKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4ge1xuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xuXG4gICAgbm9kZS5uZXh0ID0gdGhpcy5maXJzdDtcblxuICAgIGlmICh0aGlzLmZpcnN0KSB0aGlzLmZpcnN0LnByZXZpb3VzID0gbm9kZTtcbiAgICBlbHNlIHRoaXMubGFzdCA9IG5vZGU7XG5cbiAgICB0aGlzLmZpcnN0ID0gbm9kZTtcbiAgICB0aGlzLnNpemUrKztcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYWRkVGFpbCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHtcbiAgICBjb25zdCBub2RlID0gbmV3IExpc3ROb2RlKHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmZpcnN0KSB7XG4gICAgICBub2RlLnByZXZpb3VzID0gdGhpcy5sYXN0O1xuICAgICAgdGhpcy5sYXN0IS5uZXh0ID0gbm9kZTtcbiAgICAgIHRoaXMubGFzdCA9IG5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBub2RlO1xuICAgICAgdGhpcy5sYXN0ID0gbm9kZTtcbiAgICB9XG5cbiAgICB0aGlzLnNpemUrKztcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYWRkTWFueUFmdGVyKFxuICAgIHZhbHVlczogVFtdLFxuICAgIHByZXZpb3VzVmFsdWU6IFQsXG4gICAgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSxcbiAgKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgcHJldmlvdXNWYWx1ZSkpO1xuXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgcHJldmlvdXMsIHByZXZpb3VzLm5leHQpIDogdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xuICB9XG5cbiAgYWRkTWFueUJlZm9yZShcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBuZXh0VmFsdWU6IFQsXG4gICAgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSxcbiAgKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcblxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgbmV4dC5wcmV2aW91cywgbmV4dCkgOiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XG4gIH1cblxuICBhZGRNYW55QnlJbmRleCh2YWx1ZXM6IFRbXSwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcblxuICAgIGlmIChwb3NpdGlvbiA8PSAwKSByZXR1cm4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xuXG4gICAgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcblxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmdldChwb3NpdGlvbikhO1xuXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpO1xuICB9XG5cbiAgYWRkTWFueUhlYWQodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICByZXR1cm4gdmFsdWVzLnJlZHVjZVJpZ2h0PExpc3ROb2RlPFQ+W10+KChub2RlcywgdmFsdWUpID0+IHtcbiAgICAgIG5vZGVzLnVuc2hpZnQodGhpcy5hZGRIZWFkKHZhbHVlKSk7XG4gICAgICByZXR1cm4gbm9kZXM7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgYWRkTWFueVRhaWwodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICByZXR1cm4gdmFsdWVzLm1hcCh2YWx1ZSA9PiB0aGlzLmFkZFRhaWwodmFsdWUpKTtcbiAgfVxuXG4gIGRyb3AoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKSxcbiAgICAgIGJ5VmFsdWU6ICh2YWx1ZTogVCwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSkgPT5cbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZSh2YWx1ZSwgY29tcGFyZUZuKSxcbiAgICAgIGJ5VmFsdWVBbGw6ICh2YWx1ZTogVCwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSkgPT5cbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZUFsbCh2YWx1ZSwgY29tcGFyZUZuKSxcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcEhlYWQoKSxcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcFRhaWwoKSxcbiAgICB9O1xuICB9XG5cbiAgZHJvcE1hbnkoY291bnQ6IG51bWJlcikge1xuICAgIHJldHVybiB7XG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5kcm9wTWFueUJ5SW5kZXgoY291bnQsIHBvc2l0aW9uKSxcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcE1hbnlIZWFkKGNvdW50KSxcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcE1hbnlUYWlsKGNvdW50KSxcbiAgICB9O1xuICB9XG5cbiAgZHJvcEJ5SW5kZXgocG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQocG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGN1cnJlbnQgPyB0aGlzLmRldGFjaChjdXJyZW50KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcblxuICAgIHJldHVybiBwb3NpdGlvbiA8IDAgPyB1bmRlZmluZWQgOiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKTtcbiAgfVxuXG4gIGRyb3BCeVZhbHVlQWxsKHZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xuICAgICAgaWYgKGNvbXBhcmVGbihjdXJyZW50LnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcEJ5SW5kZXgocG9zaXRpb24gLSBkcm9wcGVkLmxlbmd0aCkhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZHJvcHBlZDtcbiAgfVxuXG4gIGRyb3BIZWFkKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBoZWFkID0gdGhpcy5maXJzdDtcblxuICAgIGlmIChoZWFkKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gaGVhZC5uZXh0O1xuXG4gICAgICBpZiAodGhpcy5maXJzdCkgdGhpcy5maXJzdC5wcmV2aW91cyA9IHVuZGVmaW5lZDtcbiAgICAgIGVsc2UgdGhpcy5sYXN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnNpemUtLTtcblxuICAgICAgcmV0dXJuIGhlYWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRyb3BUYWlsKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0YWlsID0gdGhpcy5sYXN0O1xuXG4gICAgaWYgKHRhaWwpIHtcbiAgICAgIHRoaXMubGFzdCA9IHRhaWwucHJldmlvdXM7XG5cbiAgICAgIGlmICh0aGlzLmxhc3QpIHRoaXMubGFzdC5uZXh0ID0gdW5kZWZpbmVkO1xuICAgICAgZWxzZSB0aGlzLmZpcnN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnNpemUtLTtcblxuICAgICAgcmV0dXJuIHRhaWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRyb3BNYW55QnlJbmRleChjb3VudDogbnVtYmVyLCBwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcblxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uID0gTWF0aC5tYXgocG9zaXRpb24gKyB0aGlzLnNpemUsIDApO1xuICAgIGVsc2UgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIFtdO1xuXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplIC0gcG9zaXRpb24pO1xuXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xuXG4gICAgd2hpbGUgKGNvdW50LS0pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XG4gICAgICBkcm9wcGVkLnB1c2godGhpcy5kZXRhY2goY3VycmVudCEpISk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRyb3BwZWQ7XG4gIH1cblxuICBkcm9wTWFueUhlYWQoY291bnQ6IEV4Y2x1ZGU8bnVtYmVyLCAwPik6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XG5cbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUpO1xuXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xuXG4gICAgd2hpbGUgKGNvdW50LS0pIGRyb3BwZWQudW5zaGlmdCh0aGlzLmRyb3BIZWFkKCkhKTtcblxuICAgIHJldHVybiBkcm9wcGVkO1xuICB9XG5cbiAgZHJvcE1hbnlUYWlsKGNvdW50OiBFeGNsdWRlPG51bWJlciwgMD4pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xuXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplKTtcblxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnB1c2godGhpcy5kcm9wVGFpbCgpISk7XG5cbiAgICByZXR1cm4gZHJvcHBlZDtcbiAgfVxuXG4gIGZpbmQocHJlZGljYXRlOiBMaXN0SXRlcmF0b3JGbjxUPik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZpbmRJbmRleChwcmVkaWNhdGU6IExpc3RJdGVyYXRvckZuPFQ+KTogbnVtYmVyIHtcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGZvckVhY2g8UiA9IGJvb2xlYW4+KGNhbGxiYWNrOiBMaXN0SXRlcmF0b3JGbjxULCBSPikge1xuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcbiAgICAgIGNhbGxiYWNrKG5vZGUsIHBvc2l0aW9uLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnZXQocG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5maW5kKChfLCBpbmRleCkgPT4gcG9zaXRpb24gPT09IGluZGV4KTtcbiAgfVxuXG4gIGluZGV4T2YodmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpbmRJbmRleChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCB2YWx1ZSkpO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XG5cbiAgICB0aGlzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiAoYXJyYXlbaW5kZXghXSA9IG5vZGUudmFsdWUpKTtcblxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvTm9kZUFycmF5KCk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XG5cbiAgICB0aGlzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiAoYXJyYXlbaW5kZXghXSA9IG5vZGUpKTtcblxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvU3RyaW5nKG1hcHBlckZuOiBMaXN0TWFwcGVyRm48VD4gPSBKU09OLnN0cmluZ2lmeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheSgpXG4gICAgICAubWFwKHZhbHVlID0+IG1hcHBlckZuKHZhbHVlKSlcbiAgICAgIC5qb2luKCcgPC0+ICcpO1xuICB9XG5cbiAgKltTeW1ib2wuaXRlcmF0b3JdKCk6IGFueSB7XG4gICAgZm9yIChsZXQgbm9kZSA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgbm9kZTsgcG9zaXRpb24rKywgbm9kZSA9IG5vZGUubmV4dCkge1xuICAgICAgeWllbGQgbm9kZS52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTGlzdE1hcHBlckZuPFQgPSBhbnk+ID0gKHZhbHVlOiBUKSA9PiBhbnk7XG5cbmV4cG9ydCB0eXBlIExpc3RDb21wYXJpc29uRm48VCA9IGFueT4gPSAodmFsdWUxOiBULCB2YWx1ZTI6IFQpID0+IGJvb2xlYW47XG5cbmV4cG9ydCB0eXBlIExpc3RJdGVyYXRvckZuPFQgPSBhbnksIFIgPSBib29sZWFuPiA9IChcbiAgbm9kZTogTGlzdE5vZGU8VD4sXG4gIGluZGV4PzogbnVtYmVyLFxuICBsaXN0PzogTGlua2VkTGlzdCxcbikgPT4gUjtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUUxQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLFFBQVE7SUFLbkIsWUFBWSxLQUFRO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBQXZCO1FBR1UsU0FBSSxHQUFHLENBQUMsQ0FBQztJQStYbkIsQ0FBQztJQTdYQyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTyxNQUFNLENBQ1osS0FBUSxFQUNSLFlBQXFDLEVBQ3JDLFFBQWlDO1FBRWpDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO1FBQzdCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8s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QUFFLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDNUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5cbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XG5cbmV4cG9ydCBjbGFzcyBMaXN0Tm9kZTxUID0gYW55PiB7XG4gIHJlYWRvbmx5IHZhbHVlOiBUO1xuICBuZXh0OiBMaXN0Tm9kZSB8IHVuZGVmaW5lZDtcbiAgcHJldmlvdXM6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQgPSBhbnk+IHtcbiAgcHJpdmF0ZSBmaXJzdDogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdDogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc2l6ZSA9IDA7XG5cbiAgZ2V0IGhlYWQoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZpcnN0O1xuICB9XG4gIGdldCB0YWlsKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0O1xuICB9XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2goXG4gICAgdmFsdWU6IFQsXG4gICAgcHJldmlvdXNOb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXG4gICk6IExpc3ROb2RlPFQ+IHtcbiAgICBpZiAoIXByZXZpb3VzTm9kZSkgcmV0dXJuIHRoaXMuYWRkSGVhZCh2YWx1ZSk7XG5cbiAgICBpZiAoIW5leHROb2RlKSByZXR1cm4gdGhpcy5hZGRUYWlsKHZhbHVlKTtcblxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xuICAgIG5vZGUucHJldmlvdXMgPSBwcmV2aW91c05vZGU7XG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBub2RlO1xuICAgIG5vZGUubmV4dCA9IG5leHROb2RlO1xuICAgIG5leHROb2RlLnByZXZpb3VzID0gbm9kZTtcblxuICAgIHRoaXMuc2l6ZSsrO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1hbnkoXG4gICAgdmFsdWVzOiBUW10sXG4gICAgcHJldmlvdXNOb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXG4gICk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmICghdmFsdWVzLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgaWYgKCFwcmV2aW91c05vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XG5cbiAgICBpZiAoIW5leHROb2RlKSByZXR1cm4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xuXG4gICAgY29uc3QgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PFQ+KCk7XG4gICAgbGlzdC5hZGRNYW55VGFpbCh2YWx1ZXMpO1xuICAgIGxpc3QuZmlyc3QhLnByZXZpb3VzID0gcHJldmlvdXNOb2RlO1xuICAgIHByZXZpb3VzTm9kZS5uZXh0ID0gbGlzdC5maXJzdDtcbiAgICBsaXN0Lmxhc3QhLm5leHQgPSBuZXh0Tm9kZTtcbiAgICBuZXh0Tm9kZS5wcmV2aW91cyA9IGxpc3QubGFzdDtcblxuICAgIHRoaXMuc2l6ZSArPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGxpc3QudG9Ob2RlQXJyYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoKG5vZGU6IExpc3ROb2RlPFQ+KSB7XG4gICAgaWYgKCFub2RlLnByZXZpb3VzKSByZXR1cm4gdGhpcy5kcm9wSGVhZCgpO1xuXG4gICAgaWYgKCFub2RlLm5leHQpIHJldHVybiB0aGlzLmRyb3BUYWlsKCk7XG5cbiAgICBub2RlLnByZXZpb3VzLm5leHQgPSBub2RlLm5leHQ7XG4gICAgbm9kZS5uZXh0LnByZXZpb3VzID0gbm9kZS5wcmV2aW91cztcblxuICAgIHRoaXMuc2l6ZS0tO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhZGQodmFsdWU6IFQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWZ0ZXI6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxuICAgICAgICB0aGlzLmFkZEFmdGVyLmNhbGwodGhpcywgdmFsdWUsIC4uLnBhcmFtcyksXG4gICAgICBiZWZvcmU6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxuICAgICAgICB0aGlzLmFkZEJlZm9yZS5jYWxsKHRoaXMsIHZhbHVlLCAuLi5wYXJhbXMpLFxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuYWRkQnlJbmRleCh2YWx1ZSwgcG9zaXRpb24pLFxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRIZWFkKHZhbHVlKSxcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuYWRkVGFpbCh2YWx1ZSksXG4gICAgfTtcbiAgfVxuXG4gIGFkZE1hbnkodmFsdWVzOiBUW10pIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWZ0ZXI6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxuICAgICAgICB0aGlzLmFkZE1hbnlBZnRlci5jYWxsKHRoaXMsIHZhbHVlcywgLi4ucGFyYW1zKSxcbiAgICAgIGJlZm9yZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XG4gICAgICAgIHRoaXMuYWRkTWFueUJlZm9yZS5jYWxsKHRoaXMsIHZhbHVlcywgLi4ucGFyYW1zKSxcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmFkZE1hbnlCeUluZGV4KHZhbHVlcywgcG9zaXRpb24pLFxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpLFxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBhZGRBZnRlcih2YWx1ZTogVCwgbmV4dFZhbHVlOiBUKTogTGlzdE5vZGU8VD47XG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+O1xuICBhZGRBZnRlcih2YWx1ZTogVCwgcHJldmlvdXNWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4ge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcblxuICAgIHJldHVybiBwcmV2aW91cyA/IHRoaXMuYXR0YWNoKHZhbHVlLCBwcmV2aW91cywgcHJldmlvdXMubmV4dCkgOiB0aGlzLmFkZFRhaWwodmFsdWUpO1xuICB9XG5cbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IFQpOiBMaXN0Tm9kZTxUPjtcbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD47XG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcblxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRIZWFkKHZhbHVlKTtcbiAgfVxuXG4gIGFkZEJ5SW5kZXgodmFsdWU6IFQsIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xuICAgIGVsc2UgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuYWRkVGFpbCh2YWx1ZSk7XG5cbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkSGVhZCh2YWx1ZSk7XG5cbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcblxuICAgIHJldHVybiB0aGlzLmF0dGFjaCh2YWx1ZSwgbmV4dC5wcmV2aW91cywgbmV4dCk7XG4gIH1cblxuICBhZGRIZWFkKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4ge1xuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xuXG4gICAgbm9kZS5uZXh0ID0gdGhpcy5maXJzdDtcblxuICAgIGlmICh0aGlzLmZpcnN0KSB0aGlzLmZpcnN0LnByZXZpb3VzID0gbm9kZTtcbiAgICBlbHNlIHRoaXMubGFzdCA9IG5vZGU7XG5cbiAgICB0aGlzLmZpcnN0ID0gbm9kZTtcbiAgICB0aGlzLnNpemUrKztcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYWRkVGFpbCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHtcbiAgICBjb25zdCBub2RlID0gbmV3IExpc3ROb2RlKHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmZpcnN0KSB7XG4gICAgICBub2RlLnByZXZpb3VzID0gdGhpcy5sYXN0O1xuICAgICAgdGhpcy5sYXN0IS5uZXh0ID0gbm9kZTtcbiAgICAgIHRoaXMubGFzdCA9IG5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlyc3QgPSBub2RlO1xuICAgICAgdGhpcy5sYXN0ID0gbm9kZTtcbiAgICB9XG5cbiAgICB0aGlzLnNpemUrKztcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYWRkTWFueUFmdGVyKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcbiAgYWRkTWFueUFmdGVyKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+W107XG4gIGFkZE1hbnlBZnRlcihcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBwcmV2aW91c1ZhbHVlOiBhbnksXG4gICAgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSxcbiAgKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgcHJldmlvdXNWYWx1ZSkpO1xuXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgcHJldmlvdXMsIHByZXZpb3VzLm5leHQpIDogdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xuICB9XG5cbiAgYWRkTWFueUJlZm9yZSh2YWx1ZXM6IFRbXSwgcHJldmlvdXNWYWx1ZTogVCk6IExpc3ROb2RlPFQ+W107XG4gIGFkZE1hbnlCZWZvcmUodmFsdWVzOiBUW10sIG5leHRWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPltdO1xuICBhZGRNYW55QmVmb3JlKFxuICAgIHZhbHVlczogVFtdLFxuICAgIG5leHRWYWx1ZTogYW55LFxuICAgIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUsXG4gICk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgbmV4dFZhbHVlKSk7XG5cbiAgICByZXR1cm4gbmV4dCA/IHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xuICB9XG5cbiAgYWRkTWFueUJ5SW5kZXgodmFsdWVzOiBUW10sIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XG5cbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcblxuICAgIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XG5cbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcblxuICAgIHJldHVybiB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBuZXh0LnByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGFkZE1hbnlIZWFkKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2VSaWdodDxMaXN0Tm9kZTxUPltdPigobm9kZXMsIHZhbHVlKSA9PiB7XG4gICAgICBub2Rlcy51bnNoaWZ0KHRoaXMuYWRkSGVhZCh2YWx1ZSkpO1xuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIGFkZE1hbnlUYWlsKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodmFsdWUgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSk7XG4gIH1cblxuICBkcm9wKCkge1xuICAgIHJldHVybiB7XG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbiksXG4gICAgICBieVZhbHVlOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZS5hcHBseSh0aGlzLCBwYXJhbXMpLFxuICAgICAgYnlWYWx1ZUFsbDogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XG4gICAgICAgIHRoaXMuZHJvcEJ5VmFsdWVBbGwuYXBwbHkodGhpcywgcGFyYW1zKSxcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcEhlYWQoKSxcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcFRhaWwoKSxcbiAgICB9O1xuICB9XG5cbiAgZHJvcE1hbnkoY291bnQ6IG51bWJlcikge1xuICAgIHJldHVybiB7XG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5kcm9wTWFueUJ5SW5kZXgoY291bnQsIHBvc2l0aW9uKSxcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcE1hbnlIZWFkKGNvdW50KSxcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcE1hbnlUYWlsKGNvdW50KSxcbiAgICB9O1xuICB9XG5cbiAgZHJvcEJ5SW5kZXgocG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQocG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIGN1cnJlbnQgPyB0aGlzLmRldGFjaChjdXJyZW50KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkO1xuICBkcm9wQnlWYWx1ZSh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcblxuICAgIHJldHVybiBwb3NpdGlvbiA8IDAgPyB1bmRlZmluZWQgOiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKTtcbiAgfVxuXG4gIGRyb3BCeVZhbHVlQWxsKHZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIGZvciAobGV0IGN1cnJlbnQgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IGN1cnJlbnQ7IHBvc2l0aW9uKyssIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQpIHtcbiAgICAgIGlmIChjb21wYXJlRm4oY3VycmVudC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgIGRyb3BwZWQucHVzaCh0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uIC0gZHJvcHBlZC5sZW5ndGgpISk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRyb3BwZWQ7XG4gIH1cblxuICBkcm9wSGVhZCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaGVhZCA9IHRoaXMuZmlyc3Q7XG5cbiAgICBpZiAoaGVhZCkge1xuICAgICAgdGhpcy5maXJzdCA9IGhlYWQubmV4dDtcblxuICAgICAgaWYgKHRoaXMuZmlyc3QpIHRoaXMuZmlyc3QucHJldmlvdXMgPSB1bmRlZmluZWQ7XG4gICAgICBlbHNlIHRoaXMubGFzdCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaXplLS07XG5cbiAgICAgIHJldHVybiBoZWFkO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkcm9wVGFpbCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGFpbCA9IHRoaXMubGFzdDtcblxuICAgIGlmICh0YWlsKSB7XG4gICAgICB0aGlzLmxhc3QgPSB0YWlsLnByZXZpb3VzO1xuXG4gICAgICBpZiAodGhpcy5sYXN0KSB0aGlzLmxhc3QubmV4dCA9IHVuZGVmaW5lZDtcbiAgICAgIGVsc2UgdGhpcy5maXJzdCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaXplLS07XG5cbiAgICAgIHJldHVybiB0YWlsO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkcm9wTWFueUJ5SW5kZXgoY291bnQ6IG51bWJlciwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XG5cbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiA9IE1hdGgubWF4KHBvc2l0aW9uICsgdGhpcy5zaXplLCAwKTtcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiBbXTtcblxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSAtIHBvc2l0aW9uKTtcblxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChjb3VudC0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQocG9zaXRpb24pO1xuICAgICAgZHJvcHBlZC5wdXNoKHRoaXMuZGV0YWNoKGN1cnJlbnQhKSEpO1xuICAgIH1cblxuICAgIHJldHVybiBkcm9wcGVkO1xuICB9XG5cbiAgZHJvcE1hbnlIZWFkKGNvdW50OiBFeGNsdWRlPG51bWJlciwgMD4pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xuXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplKTtcblxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnVuc2hpZnQodGhpcy5kcm9wSGVhZCgpISk7XG5cbiAgICByZXR1cm4gZHJvcHBlZDtcbiAgfVxuXG4gIGRyb3BNYW55VGFpbChjb3VudDogRXhjbHVkZTxudW1iZXIsIDA+KTogTGlzdE5vZGU8VD5bXSB7XG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcblxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSk7XG5cbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XG5cbiAgICB3aGlsZSAoY291bnQtLSkgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcFRhaWwoKSEpO1xuXG4gICAgcmV0dXJuIGRyb3BwZWQ7XG4gIH1cblxuICBmaW5kKHByZWRpY2F0ZTogTGlzdEl0ZXJhdG9yRm48VD4pOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBjdXJyZW50O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBmaW5kSW5kZXgocHJlZGljYXRlOiBMaXN0SXRlcmF0b3JGbjxUPik6IG51bWJlciB7XG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBwb3NpdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBmb3JFYWNoPFIgPSBib29sZWFuPihjYWxsYmFjazogTGlzdEl0ZXJhdG9yRm48VCwgUj4pIHtcbiAgICBmb3IgKGxldCBub2RlID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBub2RlOyBwb3NpdGlvbisrLCBub2RlID0gbm9kZS5uZXh0KSB7XG4gICAgICBjYWxsYmFjayhub2RlLCBwb3NpdGlvbiwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0KHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmluZCgoXywgaW5kZXgpID0+IHBvc2l0aW9uID09PSBpbmRleCk7XG4gIH1cblxuICBpbmRleE9mKHZhbHVlOiBUKTogbnVtYmVyO1xuICBpbmRleE9mKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IG51bWJlcjtcbiAgaW5kZXhPZih2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcbiAgfVxuXG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh0aGlzLnNpemUpO1xuXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlLnZhbHVlKSk7XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB0b05vZGVBcnJheSgpOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh0aGlzLnNpemUpO1xuXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlKSk7XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB0b1N0cmluZyhtYXBwZXJGbjogTGlzdE1hcHBlckZuPFQ+ID0gSlNPTi5zdHJpbmdpZnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKVxuICAgICAgLm1hcCh2YWx1ZSA9PiBtYXBwZXJGbih2YWx1ZSkpXG4gICAgICAuam9pbignIDwtPiAnKTtcbiAgfVxuXG4gIC8vIENhbm5vdCB1c2UgR2VuZXJhdG9yIHR5cGUgYmVjYXVzZSBvZiBuZy1wYWNrYWdyXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBhbnkge1xuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcbiAgICAgIHlpZWxkIG5vZGUudmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIExpc3RNYXBwZXJGbjxUID0gYW55PiA9ICh2YWx1ZTogVCkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBMaXN0Q29tcGFyaXNvbkZuPFQgPSBhbnk+ID0gKHZhbHVlMTogVCwgdmFsdWUyOiBhbnkpID0+IGJvb2xlYW47XG5cbmV4cG9ydCB0eXBlIExpc3RJdGVyYXRvckZuPFQgPSBhbnksIFIgPSBib29sZWFuPiA9IChcbiAgbm9kZTogTGlzdE5vZGU8VD4sXG4gIGluZGV4PzogbnVtYmVyLFxuICBsaXN0PzogTGlua2VkTGlzdCxcbikgPT4gUjtcbiJdfQ== |
/* tslint:disable:no-non-null-assertion */ | ||
import { __generator } from "tslib"; | ||
import { __generator, __read, __spread } from "tslib"; | ||
import compare from 'just-compare'; | ||
@@ -78,9 +78,17 @@ var ListNode = /** @class */ (function () { | ||
return { | ||
after: function (previousValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addAfter(value, previousValue, compareFn); | ||
after: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params)); | ||
}, | ||
before: function (nextValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addBefore(value, nextValue, compareFn); | ||
before: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params)); | ||
}, | ||
@@ -95,9 +103,17 @@ byIndex: function (position) { return _this.addByIndex(value, position); }, | ||
return { | ||
after: function (previousValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addManyAfter(values, previousValue, compareFn); | ||
after: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params)); | ||
}, | ||
before: function (nextValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addManyBefore(values, nextValue, compareFn); | ||
before: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params)); | ||
}, | ||
@@ -189,9 +205,15 @@ byIndex: function (position) { return _this.addManyByIndex(values, position); }, | ||
byIndex: function (position) { return _this.dropByIndex(position); }, | ||
byValue: function (value, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.dropByValue(value, compareFn); | ||
byValue: function () { | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return _this.dropByValue.apply(_this, params); | ||
}, | ||
byValueAll: function (value, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.dropByValueAll(value, compareFn); | ||
byValueAll: function () { | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return _this.dropByValueAll.apply(_this, params); | ||
}, | ||
@@ -332,2 +354,3 @@ head: function () { return _this.dropHead(); }, | ||
}; | ||
// Cannot use Generator type because of ng-packagr | ||
LinkedList.prototype[Symbol.iterator] = function () { | ||
@@ -356,2 +379,2 @@ var node, position; | ||
export { LinkedList }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQzs7QUFFMUMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DO0lBS0Usa0JBQVksS0FBUTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ0gsZUFBQztBQUFELENBQUMsQUFSRCxJQVFDOztBQUVEO0lBQUE7UUFHVSxTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBZ1huQixDQUFDO0lBOVdDLHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSw0QkFBSTthQUFSO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7OztPQUFBO0lBQ0Qsc0JBQUksOEJBQU07YUFBVjtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDOzs7T0FBQTtJQUVPLDJCQUFNLEdBQWQsVUFDRSxLQUFRLEVBQ1IsWUFBcUMsRUFDckMsUUFBaUM7UUFFakMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsSUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDN0IsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sK0JBQVUsR0FBbEIsVUFDRSxNQUFXLEVBQ1gsWUFBcUMsRUFDckMsUUFBaUM7UUFFakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsSUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFNLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztRQUNwQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQzNCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLDJCQUFNLEdBQWQsVUFBZSxJQUFpQjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFbkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQUcsR0FBSCxVQUFJLEtBQVE7UUFBWixpQkFVQztRQVRDLE9BQU87WUFDTCxLQUFLLEVBQUUsVUFBQyxhQUFnQixFQUFFLFNBQXdDO2dCQUF4QywwQkFBQSxFQUFBLG1CQUF3QztnQkFDaEUsT0FBQSxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDO1lBQTlDLENBQThDO1lBQ2hELE1BQU0sRUFBRSxVQUFDLFNBQVksRUFBRSxTQUF3QztnQkFBeEMsMEJBQUEsRUFBQSxtQkFBd0M7Z0JBQzdELE9BQUEsS0FBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztZQUEzQyxDQUEyQztZQUM3QyxPQUFPLEVBQUUsVUFBQyxRQUFnQixJQUFLLE9BQUEsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQWhDLENBQWdDO1lBQy9ELElBQUksRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBbkIsQ0FBbUI7WUFDL0IsSUFBSSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFuQixDQUFtQjtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELDRCQUFPLEdBQVAsVUFBUSxNQUFXO1FBQW5CLGlCQVVDO1FBVEMsT0FBTztZQUNMLEtBQUssRUFBRSxVQUFDLGFBQWdCLEVBQUUsU0FBd0M7Z0JBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO2dCQUNoRSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUM7WUFBbkQsQ0FBbUQ7WUFDckQsTUFBTSxFQUFFLFVBQUMsU0FBWSxFQUFFLFNBQXdDO2dCQUF4QywwQkFBQSxFQUFBLG1CQUF3QztnQkFDN0QsT0FBQSxLQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1lBQWhELENBQWdEO1lBQ2xELE9BQU8sRUFBRSxVQUFDLFFBQWdCLElBQUssT0FBQSxLQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBckMsQ0FBcUM7WUFDcEUsSUFBSSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUF4QixDQUF3QjtZQUNwQyxJQUFJLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQXhCLENBQXdCO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQVEsR0FBUixVQUFTLEtBQVEsRUFBRSxhQUFnQixFQUFFLFNBQXdDO1FBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO1FBQzNFLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBcEMsQ0FBb0MsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCw4QkFBUyxHQUFULFVBQVUsS0FBUSxFQUFFLFNBQVksRUFBRSxTQUF3QztRQUF4QywwQkFBQSxFQUFBLG1CQUF3QztRQUN4RSxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQWhDLENBQWdDLENBQUMsQ0FBQztRQUVqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsK0JBQVUsR0FBVixVQUFXLEtBQVEsRUFBRSxRQUFnQjtRQUNuQyxJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbkMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxRQUFRLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsNEJBQU8sR0FBUCxVQUFRLEtBQVE7UUFDZCxJQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs7WUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsNEJBQU8sR0FBUCxVQUFRLEtBQVE7UUFDZCxJQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlDQUFZLEdBQVosVUFDRSxNQUFXLEVBQ1gsYUFBZ0IsRUFDaEIsU0FBd0M7UUFBeEMsMEJBQUEsRUFBQSxtQkFBd0M7UUFFeEMsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFwQyxDQUFvQyxDQUFDLENBQUM7UUFFekUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGtDQUFhLEdBQWIsVUFDRSxNQUFXLEVBQ1gsU0FBWSxFQUNaLFNBQXdDO1FBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO1FBRXhDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBaEMsQ0FBZ0MsQ0FBQyxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxtQ0FBYyxHQUFkLFVBQWUsTUFBVyxFQUFFLFFBQWdCO1FBQzFDLElBQUksUUFBUSxHQUFHLENBQUM7WUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUV4QyxJQUFJLFFBQVEsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNELElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7UUFFakMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxnQ0FBVyxHQUFYLFVBQVksTUFBVztRQUF2QixpQkFLQztRQUpDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBZ0IsVUFBQyxLQUFLLEVBQUUsS0FBSztZQUNwRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxnQ0FBVyxHQUFYLFVBQVksTUFBVztRQUF2QixpQkFFQztRQURDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQW5CLENBQW1CLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQseUJBQUksR0FBSjtRQUFBLGlCQVVDO1FBVEMsT0FBTztZQUNMLE9BQU8sRUFBRSxVQUFDLFFBQWdCLElBQUssT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUExQixDQUEwQjtZQUN6RCxPQUFPLEVBQUUsVUFBQyxLQUFRLEVBQUUsU0FBd0M7Z0JBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO2dCQUMxRCxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUFsQyxDQUFrQztZQUNwQyxVQUFVLEVBQUUsVUFBQyxLQUFRLEVBQUUsU0FBd0M7Z0JBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO2dCQUM3RCxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUFyQyxDQUFxQztZQUN2QyxJQUFJLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxRQUFRLEVBQUUsRUFBZixDQUFlO1lBQzNCLElBQUksRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFFBQVEsRUFBRSxFQUFmLENBQWU7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCw2QkFBUSxHQUFSLFVBQVMsS0FBYTtRQUF0QixpQkFNQztRQUxDLE9BQU87WUFDTCxPQUFPLEVBQUUsVUFBQyxRQUFnQixJQUFLLE9BQUEsS0FBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQXJDLENBQXFDO1lBQ3BFLElBQUksRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBeEIsQ0FBd0I7WUFDcEMsSUFBSSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUF4QixDQUF3QjtTQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVELGdDQUFXLEdBQVgsVUFBWSxRQUFnQjtRQUMxQixJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFeEMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BELENBQUM7SUFFRCxnQ0FBVyxHQUFYLFVBQVksS0FBUSxFQUFFLFNBQXdDO1FBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO1FBQzVELElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBNUIsQ0FBNEIsQ0FBQyxDQUFDO1FBRXRFLE9BQU8sUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxtQ0FBYyxHQUFkLFVBQWUsS0FBUSxFQUFFLFNBQXdDO1FBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO1FBQy9ELElBQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsS0FBSyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hGLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUM7YUFDNUQ7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCw2QkFBUSxHQUFSO1FBQ0UsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV4QixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQzs7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBRTNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsNkJBQVEsR0FBUjtRQUNFLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFdkIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFMUIsSUFBSSxJQUFJLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7O2dCQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUU1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFWixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELG9DQUFlLEdBQWYsVUFBZ0IsS0FBYSxFQUFFLFFBQWdCO1FBQzdDLElBQUksS0FBSyxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDMUQsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQztRQUU5QyxJQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1FBRWxDLE9BQU8sS0FBSyxFQUFFLEVBQUU7WUFDZCxJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFRLENBQUUsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGlDQUFZLEdBQVosVUFBYSxLQUF5QjtRQUNwQyxJQUFJLEtBQUssSUFBSSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFMUIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1FBRWxDLE9BQU8sS0FBSyxFQUFFO1lBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFHLENBQUMsQ0FBQztRQUVsRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsaUNBQVksR0FBWixVQUFhLEtBQXlCO1FBQ3BDLElBQUksS0FBSyxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsT0FBTyxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUcsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx5QkFBSSxHQUFKLFVBQUssU0FBNEI7UUFDL0IsS0FBSyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hGLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO2dCQUFFLE9BQU8sT0FBTyxDQUFDO1NBQ3hEO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELDhCQUFTLEdBQVQsVUFBVSxTQUE0QjtRQUNwQyxLQUFLLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEYsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxRQUFRLENBQUM7U0FDekQ7UUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELDRCQUFPLEdBQVAsVUFBcUIsUUFBOEI7UUFDakQsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzVFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELHdCQUFHLEdBQUgsVUFBSSxRQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQyxDQUFDLEVBQUUsS0FBSyxJQUFLLE9BQUEsUUFBUSxLQUFLLEtBQUssRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCw0QkFBTyxHQUFQLFVBQVEsS0FBUSxFQUFFLFNBQXdDO1FBQXhDLDBCQUFBLEVBQUEsbUJBQXdDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUE1QixDQUE0QixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELDRCQUFPLEdBQVA7UUFDRSxJQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFDLElBQUksRUFBRSxLQUFLLElBQUssT0FBQSxDQUFDLEtBQUssQ0FBQyxLQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQTVCLENBQTRCLENBQUMsQ0FBQztRQUU1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQ0FBVyxHQUFYO1FBQ0UsSUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSyxJQUFLLE9BQUEsQ0FBQyxLQUFLLENBQUMsS0FBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQXRCLENBQXNCLENBQUMsQ0FBQztRQUV0RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCw2QkFBUSxHQUFSLFVBQVMsUUFBMEM7UUFBMUMseUJBQUEsRUFBQSxXQUE0QixJQUFJLENBQUMsU0FBUztRQUNqRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDbEIsR0FBRyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFmLENBQWUsQ0FBQzthQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVBLHFCQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBbEI7Ozs7O29CQUNXLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxDQUFDOzs7eUJBQUUsSUFBSTtvQkFDNUMscUJBQU0sSUFBSSxDQUFDLEtBQUssRUFBQTs7b0JBQWhCLFNBQWdCLENBQUM7OztvQkFENkIsUUFBUSxFQUFFLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7Ozs7O0tBRzdFO0lBQ0gsaUJBQUM7QUFBRCxDQUFDLEFBblhELElBbVhDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG5cbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XG5cbmV4cG9ydCBjbGFzcyBMaXN0Tm9kZTxUID0gYW55PiB7XG4gIHJlYWRvbmx5IHZhbHVlOiBUO1xuICBuZXh0OiBMaXN0Tm9kZSB8IHVuZGVmaW5lZDtcbiAgcHJldmlvdXM6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQgPSBhbnk+IHtcbiAgcHJpdmF0ZSBmaXJzdDogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbGFzdDogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc2l6ZSA9IDA7XG5cbiAgZ2V0IGhlYWQoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZpcnN0O1xuICB9XG4gIGdldCB0YWlsKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0O1xuICB9XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2goXG4gICAgdmFsdWU6IFQsXG4gICAgcHJldmlvdXNOb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXG4gICk6IExpc3ROb2RlPFQ+IHtcbiAgICBpZiAoIXByZXZpb3VzTm9kZSkgcmV0dXJuIHRoaXMuYWRkSGVhZCh2YWx1ZSk7XG5cbiAgICBpZiAoIW5leHROb2RlKSByZXR1cm4gdGhpcy5hZGRUYWlsKHZhbHVlKTtcblxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xuICAgIG5vZGUucHJldmlvdXMgPSBwcmV2aW91c05vZGU7XG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBub2RlO1xuICAgIG5vZGUubmV4dCA9IG5leHROb2RlO1xuICAgIG5leHROb2RlLnByZXZpb3VzID0gbm9kZTtcblxuICAgIHRoaXMuc2l6ZSsrO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1hbnkoXG4gICAgdmFsdWVzOiBUW10sXG4gICAgcHJldmlvdXNOb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXG4gICk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmICghdmFsdWVzLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgaWYgKCFwcmV2aW91c05vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XG5cbiAgICBpZiAoIW5leHROb2RlKSByZXR1cm4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xuXG4gICAgY29uc3QgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PFQ+KCk7XG4gICAgbGlzdC5hZGRNYW55VGFpbCh2YWx1ZXMpO1xuICAgIGxpc3QuZmlyc3QhLnByZXZpb3VzID0gcHJldmlvdXNOb2RlO1xuICAgIHByZXZpb3VzTm9kZS5uZXh0ID0gbGlzdC5maXJzdDtcbiAgICBsaXN0Lmxhc3QhLm5leHQgPSBuZXh0Tm9kZTtcbiAgICBuZXh0Tm9kZS5wcmV2aW91cyA9IGxpc3QubGFzdDtcblxuICAgIHRoaXMuc2l6ZSArPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGxpc3QudG9Ob2RlQXJyYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoKG5vZGU6IExpc3ROb2RlPFQ+KSB7XG4gICAgaWYgKCFub2RlLnByZXZpb3VzKSByZXR1cm4gdGhpcy5kcm9wSGVhZCgpO1xuXG4gICAgaWYgKCFub2RlLm5leHQpIHJldHVybiB0aGlzLmRyb3BUYWlsKCk7XG5cbiAgICBub2RlLnByZXZpb3VzLm5leHQgPSBub2RlLm5leHQ7XG4gICAgbm9kZS5uZXh0LnByZXZpb3VzID0gbm9kZS5wcmV2aW91cztcblxuICAgIHRoaXMuc2l6ZS0tO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhZGQodmFsdWU6IFQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWZ0ZXI6IChwcmV2aW91c1ZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKSA9PlxuICAgICAgICB0aGlzLmFkZEFmdGVyKHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBjb21wYXJlRm4pLFxuICAgICAgYmVmb3JlOiAobmV4dFZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKSA9PlxuICAgICAgICB0aGlzLmFkZEJlZm9yZSh2YWx1ZSwgbmV4dFZhbHVlLCBjb21wYXJlRm4pLFxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuYWRkQnlJbmRleCh2YWx1ZSwgcG9zaXRpb24pLFxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRIZWFkKHZhbHVlKSxcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuYWRkVGFpbCh2YWx1ZSksXG4gICAgfTtcbiAgfVxuXG4gIGFkZE1hbnkodmFsdWVzOiBUW10pIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWZ0ZXI6IChwcmV2aW91c1ZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKSA9PlxuICAgICAgICB0aGlzLmFkZE1hbnlBZnRlcih2YWx1ZXMsIHByZXZpb3VzVmFsdWUsIGNvbXBhcmVGbiksXG4gICAgICBiZWZvcmU6IChuZXh0VmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpID0+XG4gICAgICAgIHRoaXMuYWRkTWFueUJlZm9yZSh2YWx1ZXMsIG5leHRWYWx1ZSwgY29tcGFyZUZuKSxcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmFkZE1hbnlCeUluZGV4KHZhbHVlcywgcG9zaXRpb24pLFxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpLFxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBhZGRBZnRlcih2YWx1ZTogVCwgcHJldmlvdXNWYWx1ZTogVCwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XG5cbiAgICByZXR1cm4gcHJldmlvdXMgPyB0aGlzLmF0dGFjaCh2YWx1ZSwgcHJldmlvdXMsIHByZXZpb3VzLm5leHQpIDogdGhpcy5hZGRUYWlsKHZhbHVlKTtcbiAgfVxuXG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4ge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgbmV4dFZhbHVlKSk7XG5cbiAgICByZXR1cm4gbmV4dCA/IHRoaXMuYXR0YWNoKHZhbHVlLCBuZXh0LnByZXZpb3VzLCBuZXh0KSA6IHRoaXMuYWRkSGVhZCh2YWx1ZSk7XG4gIH1cblxuICBhZGRCeUluZGV4KHZhbHVlOiBULCBwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4ge1xuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xuXG4gICAgaWYgKHBvc2l0aW9uIDw9IDApIHJldHVybiB0aGlzLmFkZEhlYWQodmFsdWUpO1xuXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZ2V0KHBvc2l0aW9uKSE7XG5cbiAgICByZXR1cm4gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpO1xuICB9XG5cbiAgYWRkSGVhZCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHtcbiAgICBjb25zdCBub2RlID0gbmV3IExpc3ROb2RlKHZhbHVlKTtcblxuICAgIG5vZGUubmV4dCA9IHRoaXMuZmlyc3Q7XG5cbiAgICBpZiAodGhpcy5maXJzdCkgdGhpcy5maXJzdC5wcmV2aW91cyA9IG5vZGU7XG4gICAgZWxzZSB0aGlzLmxhc3QgPSBub2RlO1xuXG4gICAgdGhpcy5maXJzdCA9IG5vZGU7XG4gICAgdGhpcy5zaXplKys7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFkZFRhaWwodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPiB7XG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5maXJzdCkge1xuICAgICAgbm9kZS5wcmV2aW91cyA9IHRoaXMubGFzdDtcbiAgICAgIHRoaXMubGFzdCEubmV4dCA9IG5vZGU7XG4gICAgICB0aGlzLmxhc3QgPSBub2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpcnN0ID0gbm9kZTtcbiAgICAgIHRoaXMubGFzdCA9IG5vZGU7XG4gICAgfVxuXG4gICAgdGhpcy5zaXplKys7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFkZE1hbnlBZnRlcihcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBwcmV2aW91c1ZhbHVlOiBULFxuICAgIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUsXG4gICk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcblxuICAgIHJldHVybiBwcmV2aW91cyA/IHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIHByZXZpb3VzLCBwcmV2aW91cy5uZXh0KSA6IHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcbiAgfVxuXG4gIGFkZE1hbnlCZWZvcmUoXG4gICAgdmFsdWVzOiBUW10sXG4gICAgbmV4dFZhbHVlOiBULFxuICAgIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUsXG4gICk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgbmV4dFZhbHVlKSk7XG5cbiAgICByZXR1cm4gbmV4dCA/IHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xuICB9XG5cbiAgYWRkTWFueUJ5SW5kZXgodmFsdWVzOiBUW10sIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XG5cbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcblxuICAgIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XG5cbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcblxuICAgIHJldHVybiB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBuZXh0LnByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGFkZE1hbnlIZWFkKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2VSaWdodDxMaXN0Tm9kZTxUPltdPigobm9kZXMsIHZhbHVlKSA9PiB7XG4gICAgICBub2Rlcy51bnNoaWZ0KHRoaXMuYWRkSGVhZCh2YWx1ZSkpO1xuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIGFkZE1hbnlUYWlsKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodmFsdWUgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSk7XG4gIH1cblxuICBkcm9wKCkge1xuICAgIHJldHVybiB7XG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbiksXG4gICAgICBieVZhbHVlOiAodmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpID0+XG4gICAgICAgIHRoaXMuZHJvcEJ5VmFsdWUodmFsdWUsIGNvbXBhcmVGbiksXG4gICAgICBieVZhbHVlQWxsOiAodmFsdWU6IFQsIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpID0+XG4gICAgICAgIHRoaXMuZHJvcEJ5VmFsdWVBbGwodmFsdWUsIGNvbXBhcmVGbiksXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmRyb3BIZWFkKCksXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmRyb3BUYWlsKCksXG4gICAgfTtcbiAgfVxuXG4gIGRyb3BNYW55KGNvdW50OiBudW1iZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuZHJvcE1hbnlCeUluZGV4KGNvdW50LCBwb3NpdGlvbiksXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmRyb3BNYW55SGVhZChjb3VudCksXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmRyb3BNYW55VGFpbChjb3VudCksXG4gICAgfTtcbiAgfVxuXG4gIGRyb3BCeUluZGV4KHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xuXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0KHBvc2l0aW9uKTtcblxuICAgIHJldHVybiBjdXJyZW50ID8gdGhpcy5kZXRhY2goY3VycmVudCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBkcm9wQnlWYWx1ZSh2YWx1ZTogVCwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZmluZEluZGV4KG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHZhbHVlKSk7XG5cbiAgICByZXR1cm4gcG9zaXRpb24gPCAwID8gdW5kZWZpbmVkIDogdGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbik7XG4gIH1cblxuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogVCwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIGZvciAobGV0IGN1cnJlbnQgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IGN1cnJlbnQ7IHBvc2l0aW9uKyssIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQpIHtcbiAgICAgIGlmIChjb21wYXJlRm4oY3VycmVudC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgIGRyb3BwZWQucHVzaCh0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uIC0gZHJvcHBlZC5sZW5ndGgpISk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRyb3BwZWQ7XG4gIH1cblxuICBkcm9wSGVhZCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaGVhZCA9IHRoaXMuZmlyc3Q7XG5cbiAgICBpZiAoaGVhZCkge1xuICAgICAgdGhpcy5maXJzdCA9IGhlYWQubmV4dDtcblxuICAgICAgaWYgKHRoaXMuZmlyc3QpIHRoaXMuZmlyc3QucHJldmlvdXMgPSB1bmRlZmluZWQ7XG4gICAgICBlbHNlIHRoaXMubGFzdCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaXplLS07XG5cbiAgICAgIHJldHVybiBoZWFkO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkcm9wVGFpbCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGFpbCA9IHRoaXMubGFzdDtcblxuICAgIGlmICh0YWlsKSB7XG4gICAgICB0aGlzLmxhc3QgPSB0YWlsLnByZXZpb3VzO1xuXG4gICAgICBpZiAodGhpcy5sYXN0KSB0aGlzLmxhc3QubmV4dCA9IHVuZGVmaW5lZDtcbiAgICAgIGVsc2UgdGhpcy5maXJzdCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5zaXplLS07XG5cbiAgICAgIHJldHVybiB0YWlsO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkcm9wTWFueUJ5SW5kZXgoY291bnQ6IG51bWJlciwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XG5cbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiA9IE1hdGgubWF4KHBvc2l0aW9uICsgdGhpcy5zaXplLCAwKTtcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiBbXTtcblxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSAtIHBvc2l0aW9uKTtcblxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChjb3VudC0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQocG9zaXRpb24pO1xuICAgICAgZHJvcHBlZC5wdXNoKHRoaXMuZGV0YWNoKGN1cnJlbnQhKSEpO1xuICAgIH1cblxuICAgIHJldHVybiBkcm9wcGVkO1xuICB9XG5cbiAgZHJvcE1hbnlIZWFkKGNvdW50OiBFeGNsdWRlPG51bWJlciwgMD4pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xuXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplKTtcblxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnVuc2hpZnQodGhpcy5kcm9wSGVhZCgpISk7XG5cbiAgICByZXR1cm4gZHJvcHBlZDtcbiAgfVxuXG4gIGRyb3BNYW55VGFpbChjb3VudDogRXhjbHVkZTxudW1iZXIsIDA+KTogTGlzdE5vZGU8VD5bXSB7XG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcblxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSk7XG5cbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XG5cbiAgICB3aGlsZSAoY291bnQtLSkgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcFRhaWwoKSEpO1xuXG4gICAgcmV0dXJuIGRyb3BwZWQ7XG4gIH1cblxuICBmaW5kKHByZWRpY2F0ZTogTGlzdEl0ZXJhdG9yRm48VD4pOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBjdXJyZW50O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBmaW5kSW5kZXgocHJlZGljYXRlOiBMaXN0SXRlcmF0b3JGbjxUPik6IG51bWJlciB7XG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBwb3NpdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBmb3JFYWNoPFIgPSBib29sZWFuPihjYWxsYmFjazogTGlzdEl0ZXJhdG9yRm48VCwgUj4pIHtcbiAgICBmb3IgKGxldCBub2RlID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBub2RlOyBwb3NpdGlvbisrLCBub2RlID0gbm9kZS5uZXh0KSB7XG4gICAgICBjYWxsYmFjayhub2RlLCBwb3NpdGlvbiwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0KHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmluZCgoXywgaW5kZXgpID0+IHBvc2l0aW9uID09PSBpbmRleCk7XG4gIH1cblxuICBpbmRleE9mKHZhbHVlOiBULCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcbiAgfVxuXG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh0aGlzLnNpemUpO1xuXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlLnZhbHVlKSk7XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB0b05vZGVBcnJheSgpOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh0aGlzLnNpemUpO1xuXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlKSk7XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB0b1N0cmluZyhtYXBwZXJGbjogTGlzdE1hcHBlckZuPFQ+ID0gSlNPTi5zdHJpbmdpZnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKVxuICAgICAgLm1hcCh2YWx1ZSA9PiBtYXBwZXJGbih2YWx1ZSkpXG4gICAgICAuam9pbignIDwtPiAnKTtcbiAgfVxuXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBhbnkge1xuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcbiAgICAgIHlpZWxkIG5vZGUudmFsdWU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIExpc3RNYXBwZXJGbjxUID0gYW55PiA9ICh2YWx1ZTogVCkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBMaXN0Q29tcGFyaXNvbkZuPFQgPSBhbnk+ID0gKHZhbHVlMTogVCwgdmFsdWUyOiBUKSA9PiBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBMaXN0SXRlcmF0b3JGbjxUID0gYW55LCBSID0gYm9vbGVhbj4gPSAoXG4gIG5vZGU6IExpc3ROb2RlPFQ+LFxuICBpbmRleD86IG51bWJlcixcbiAgbGlzdD86IExpbmtlZExpc3QsXG4pID0+IFI7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQzs7QUFFMUMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DO0lBS0Usa0JBQVksS0FBUTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ0gsZUFBQztBQUFELENBQUMsQUFSRCxJQVFDOztBQUVEO0lBQUE7UUFHVSxTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBK1huQixDQUFDO0lBN1hDLHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSw0QkFBSTthQUFSO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7OztPQUFBO0lBQ0Qsc0JBQUksOEJBQU07YUFBVjtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDOzs7T0FBQTtJQUVPLDJCQUFNLEdBQWQsVUFDRSxLQUFRLEVBQ1IsWUFBcUMsRUFDckMsUUFBaUM7UUFFakMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsSUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDN0IsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENB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a0Q7SUFDakQscUJBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFsQjs7Ozs7b0JBQ1csSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUM7Ozt5QkFBRSxJQUFJO29CQUM1QyxxQkFBTSxJQUFJLENBQUMsS0FBSyxFQUFBOztvQkFBaEIsU0FBZ0IsQ0FBQzs7O29CQUQ2QixRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTs7Ozs7S0FHN0U7SUFDSCxpQkFBQztBQUFELENBQUMsQUFsWUQsSUFrWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1ub24tbnVsbC1hc3NlcnRpb24gKi9cblxuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcblxuZXhwb3J0IGNsYXNzIExpc3ROb2RlPFQgPSBhbnk+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IFQ7XG4gIG5leHQ6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xuICBwcmV2aW91czogTGlzdE5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmtlZExpc3Q8VCA9IGFueT4ge1xuICBwcml2YXRlIGZpcnN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzaXplID0gMDtcblxuICBnZXQgaGVhZCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3Q7XG4gIH1cbiAgZ2V0IHRhaWwoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxhc3Q7XG4gIH1cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNpemU7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaChcbiAgICB2YWx1ZTogVCxcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxuICAgIG5leHROb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgKTogTGlzdE5vZGU8VD4ge1xuICAgIGlmICghcHJldmlvdXNOb2RlKSByZXR1cm4gdGhpcy5hZGRIZWFkKHZhbHVlKTtcblxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xuXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XG4gICAgbm9kZS5wcmV2aW91cyA9IHByZXZpb3VzTm9kZTtcbiAgICBwcmV2aW91c05vZGUubmV4dCA9IG5vZGU7XG4gICAgbm9kZS5uZXh0ID0gbmV4dE5vZGU7XG4gICAgbmV4dE5vZGUucHJldmlvdXMgPSBub2RlO1xuXG4gICAgdGhpcy5zaXplKys7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoTWFueShcbiAgICB2YWx1ZXM6IFRbXSxcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxuICAgIG5leHROb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcbiAgKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgaWYgKCF2YWx1ZXMubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICBpZiAoIXByZXZpb3VzTm9kZSkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcblxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XG5cbiAgICBjb25zdCBsaXN0ID0gbmV3IExpbmtlZExpc3Q8VD4oKTtcbiAgICBsaXN0LmFkZE1hbnlUYWlsKHZhbHVlcyk7XG4gICAgbGlzdC5maXJzdCEucHJldmlvdXMgPSBwcmV2aW91c05vZGU7XG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBsaXN0LmZpcnN0O1xuICAgIGxpc3QubGFzdCEubmV4dCA9IG5leHROb2RlO1xuICAgIG5leHROb2RlLnByZXZpb3VzID0gbGlzdC5sYXN0O1xuXG4gICAgdGhpcy5zaXplICs9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICByZXR1cm4gbGlzdC50b05vZGVBcnJheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2gobm9kZTogTGlzdE5vZGU8VD4pIHtcbiAgICBpZiAoIW5vZGUucHJldmlvdXMpIHJldHVybiB0aGlzLmRyb3BIZWFkKCk7XG5cbiAgICBpZiAoIW5vZGUubmV4dCkgcmV0dXJuIHRoaXMuZHJvcFRhaWwoKTtcblxuICAgIG5vZGUucHJldmlvdXMubmV4dCA9IG5vZGUubmV4dDtcbiAgICBub2RlLm5leHQucHJldmlvdXMgPSBub2RlLnByZXZpb3VzO1xuXG4gICAgdGhpcy5zaXplLS07XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGFkZCh2YWx1ZTogVCkge1xuICAgIHJldHVybiB7XG4gICAgICBhZnRlcjogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XG4gICAgICAgIHRoaXMuYWRkQWZ0ZXIuY2FsbCh0aGlzLCB2YWx1ZSwgLi4ucGFyYW1zKSxcbiAgICAgIGJlZm9yZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XG4gICAgICAgIHRoaXMuYWRkQmVmb3JlLmNhbGwodGhpcywgdmFsdWUsIC4uLnBhcmFtcyksXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5hZGRCeUluZGV4KHZhbHVlLCBwb3NpdGlvbiksXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmFkZEhlYWQodmFsdWUpLFxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgYWRkTWFueSh2YWx1ZXM6IFRbXSkge1xuICAgIHJldHVybiB7XG4gICAgICBhZnRlcjogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XG4gICAgICAgIHRoaXMuYWRkTWFueUFmdGVyLmNhbGwodGhpcywgdmFsdWVzLCAuLi5wYXJhbXMpLFxuICAgICAgYmVmb3JlOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cbiAgICAgICAgdGhpcy5hZGRNYW55QmVmb3JlLmNhbGwodGhpcywgdmFsdWVzLCAuLi5wYXJhbXMpLFxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuYWRkTWFueUJ5SW5kZXgodmFsdWVzLCBwb3NpdGlvbiksXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyksXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyksXG4gICAgfTtcbiAgfVxuXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBuZXh0VmFsdWU6IFQpOiBMaXN0Tm9kZTxUPjtcbiAgYWRkQWZ0ZXIodmFsdWU6IFQsIHByZXZpb3VzVmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD47XG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgcHJldmlvdXNWYWx1ZSkpO1xuXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2godmFsdWUsIHByZXZpb3VzLCBwcmV2aW91cy5uZXh0KSA6IHRoaXMuYWRkVGFpbCh2YWx1ZSk7XG4gIH1cblxuICBhZGRCZWZvcmUodmFsdWU6IFQsIG5leHRWYWx1ZTogVCk6IExpc3ROb2RlPFQ+O1xuICBhZGRCZWZvcmUodmFsdWU6IFQsIG5leHRWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPjtcbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIG5leHRWYWx1ZSkpO1xuXG4gICAgcmV0dXJuIG5leHQgPyB0aGlzLmF0dGFjaCh2YWx1ZSwgbmV4dC5wcmV2aW91cywgbmV4dCkgOiB0aGlzLmFkZEhlYWQodmFsdWUpO1xuICB9XG5cbiAgYWRkQnlJbmRleCh2YWx1ZTogVCwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHtcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XG4gICAgZWxzZSBpZiAocG9zaXRpb24gPj0gdGhpcy5zaXplKSByZXR1cm4gdGhpcy5hZGRUYWlsKHZhbHVlKTtcblxuICAgIGlmIChwb3NpdGlvbiA8PSAwKSByZXR1cm4gdGhpcy5hZGRIZWFkKHZhbHVlKTtcblxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmdldChwb3NpdGlvbikhO1xuXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoKHZhbHVlLCBuZXh0LnByZXZpb3VzLCBuZXh0KTtcbiAgfVxuXG4gIGFkZEhlYWQodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPiB7XG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XG5cbiAgICBub2RlLm5leHQgPSB0aGlzLmZpcnN0O1xuXG4gICAgaWYgKHRoaXMuZmlyc3QpIHRoaXMuZmlyc3QucHJldmlvdXMgPSBub2RlO1xuICAgIGVsc2UgdGhpcy5sYXN0ID0gbm9kZTtcblxuICAgIHRoaXMuZmlyc3QgPSBub2RlO1xuICAgIHRoaXMuc2l6ZSsrO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhZGRUYWlsKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4ge1xuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuZmlyc3QpIHtcbiAgICAgIG5vZGUucHJldmlvdXMgPSB0aGlzLmxhc3Q7XG4gICAgICB0aGlzLmxhc3QhLm5leHQgPSBub2RlO1xuICAgICAgdGhpcy5sYXN0ID0gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maXJzdCA9IG5vZGU7XG4gICAgICB0aGlzLmxhc3QgPSBub2RlO1xuICAgIH1cblxuICAgIHRoaXMuc2l6ZSsrO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBhZGRNYW55QWZ0ZXIodmFsdWVzOiBUW10sIHByZXZpb3VzVmFsdWU6IFQpOiBMaXN0Tm9kZTxUPltdO1xuICBhZGRNYW55QWZ0ZXIodmFsdWVzOiBUW10sIHByZXZpb3VzVmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcbiAgYWRkTWFueUFmdGVyKFxuICAgIHZhbHVlczogVFtdLFxuICAgIHByZXZpb3VzVmFsdWU6IGFueSxcbiAgICBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlLFxuICApOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XG5cbiAgICByZXR1cm4gcHJldmlvdXMgPyB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBwcmV2aW91cywgcHJldmlvdXMubmV4dCkgOiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XG4gIH1cblxuICBhZGRNYW55QmVmb3JlKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcbiAgYWRkTWFueUJlZm9yZSh2YWx1ZXM6IFRbXSwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+W107XG4gIGFkZE1hbnlCZWZvcmUoXG4gICAgdmFsdWVzOiBUW10sXG4gICAgbmV4dFZhbHVlOiBhbnksXG4gICAgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSxcbiAgKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcblxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgbmV4dC5wcmV2aW91cywgbmV4dCkgOiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XG4gIH1cblxuICBhZGRNYW55QnlJbmRleCh2YWx1ZXM6IFRbXSwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcblxuICAgIGlmIChwb3NpdGlvbiA8PSAwKSByZXR1cm4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xuXG4gICAgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcblxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmdldChwb3NpdGlvbikhO1xuXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpO1xuICB9XG5cbiAgYWRkTWFueUhlYWQodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICByZXR1cm4gdmFsdWVzLnJlZHVjZVJpZ2h0PExpc3ROb2RlPFQ+W10+KChub2RlcywgdmFsdWUpID0+IHtcbiAgICAgIG5vZGVzLnVuc2hpZnQodGhpcy5hZGRIZWFkKHZhbHVlKSk7XG4gICAgICByZXR1cm4gbm9kZXM7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgYWRkTWFueVRhaWwodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICByZXR1cm4gdmFsdWVzLm1hcCh2YWx1ZSA9PiB0aGlzLmFkZFRhaWwodmFsdWUpKTtcbiAgfVxuXG4gIGRyb3AoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKSxcbiAgICAgIGJ5VmFsdWU6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxuICAgICAgICB0aGlzLmRyb3BCeVZhbHVlLmFwcGx5KHRoaXMsIHBhcmFtcyksXG4gICAgICBieVZhbHVlQWxsOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZUFsbC5hcHBseSh0aGlzLCBwYXJhbXMpLFxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5kcm9wSGVhZCgpLFxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5kcm9wVGFpbCgpLFxuICAgIH07XG4gIH1cblxuICBkcm9wTWFueShjb3VudDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BNYW55QnlJbmRleChjb3VudCwgcG9zaXRpb24pLFxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5kcm9wTWFueUhlYWQoY291bnQpLFxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5kcm9wTWFueVRhaWwoY291bnQpLFxuICAgIH07XG4gIH1cblxuICBkcm9wQnlJbmRleChwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcblxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XG5cbiAgICByZXR1cm4gY3VycmVudCA/IHRoaXMuZGV0YWNoKGN1cnJlbnQpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZHJvcEJ5VmFsdWUodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcbiAgZHJvcEJ5VmFsdWUodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmZpbmRJbmRleChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCB2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIHBvc2l0aW9uIDwgMCA/IHVuZGVmaW5lZCA6IHRoaXMuZHJvcEJ5SW5kZXgocG9zaXRpb24pO1xuICB9XG5cbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPltdO1xuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPltdO1xuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xuICAgICAgaWYgKGNvbXBhcmVGbihjdXJyZW50LnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcEJ5SW5kZXgocG9zaXRpb24gLSBkcm9wcGVkLmxlbmd0aCkhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZHJvcHBlZDtcbiAgfVxuXG4gIGRyb3BIZWFkKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBoZWFkID0gdGhpcy5maXJzdDtcblxuICAgIGlmIChoZWFkKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gaGVhZC5uZXh0O1xuXG4gICAgICBpZiAodGhpcy5maXJzdCkgdGhpcy5maXJzdC5wcmV2aW91cyA9IHVuZGVmaW5lZDtcbiAgICAgIGVsc2UgdGhpcy5sYXN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnNpemUtLTtcblxuICAgICAgcmV0dXJuIGhlYWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRyb3BUYWlsKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0YWlsID0gdGhpcy5sYXN0O1xuXG4gICAgaWYgKHRhaWwpIHtcbiAgICAgIHRoaXMubGFzdCA9IHRhaWwucHJldmlvdXM7XG5cbiAgICAgIGlmICh0aGlzLmxhc3QpIHRoaXMubGFzdC5uZXh0ID0gdW5kZWZpbmVkO1xuICAgICAgZWxzZSB0aGlzLmZpcnN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnNpemUtLTtcblxuICAgICAgcmV0dXJuIHRhaWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRyb3BNYW55QnlJbmRleChjb3VudDogbnVtYmVyLCBwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD5bXSB7XG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcblxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uID0gTWF0aC5tYXgocG9zaXRpb24gKyB0aGlzLnNpemUsIDApO1xuICAgIGVsc2UgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIFtdO1xuXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplIC0gcG9zaXRpb24pO1xuXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xuXG4gICAgd2hpbGUgKGNvdW50LS0pIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XG4gICAgICBkcm9wcGVkLnB1c2godGhpcy5kZXRhY2goY3VycmVudCEpISk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRyb3BwZWQ7XG4gIH1cblxuICBkcm9wTWFueUhlYWQoY291bnQ6IEV4Y2x1ZGU8bnVtYmVyLCAwPik6IExpc3ROb2RlPFQ+W10ge1xuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XG5cbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUpO1xuXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xuXG4gICAgd2hpbGUgKGNvdW50LS0pIGRyb3BwZWQudW5zaGlmdCh0aGlzLmRyb3BIZWFkKCkhKTtcblxuICAgIHJldHVybiBkcm9wcGVkO1xuICB9XG5cbiAgZHJvcE1hbnlUYWlsKGNvdW50OiBFeGNsdWRlPG51bWJlciwgMD4pOiBMaXN0Tm9kZTxUPltdIHtcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xuXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplKTtcblxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnB1c2godGhpcy5kcm9wVGFpbCgpISk7XG5cbiAgICByZXR1cm4gZHJvcHBlZDtcbiAgfVxuXG4gIGZpbmQocHJlZGljYXRlOiBMaXN0SXRlcmF0b3JGbjxUPik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZpbmRJbmRleChwcmVkaWNhdGU6IExpc3RJdGVyYXRvckZuPFQ+KTogbnVtYmVyIHtcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGZvckVhY2g8UiA9IGJvb2xlYW4+KGNhbGxiYWNrOiBMaXN0SXRlcmF0b3JGbjxULCBSPikge1xuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcbiAgICAgIGNhbGxiYWNrKG5vZGUsIHBvc2l0aW9uLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnZXQocG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5maW5kKChfLCBpbmRleCkgPT4gcG9zaXRpb24gPT09IGluZGV4KTtcbiAgfVxuXG4gIGluZGV4T2YodmFsdWU6IFQpOiBudW1iZXI7XG4gIGluZGV4T2YodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogbnVtYmVyO1xuICBpbmRleE9mKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpbmRJbmRleChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCB2YWx1ZSkpO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XG5cbiAgICB0aGlzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiAoYXJyYXlbaW5kZXghXSA9IG5vZGUudmFsdWUpKTtcblxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvTm9kZUFycmF5KCk6IExpc3ROb2RlPFQ+W10ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XG5cbiAgICB0aGlzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiAoYXJyYXlbaW5kZXghXSA9IG5vZGUpKTtcblxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvU3RyaW5nKG1hcHBlckZuOiBMaXN0TWFwcGVyRm48VD4gPSBKU09OLnN0cmluZ2lmeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheSgpXG4gICAgICAubWFwKHZhbHVlID0+IG1hcHBlckZuKHZhbHVlKSlcbiAgICAgIC5qb2luKCcgPC0+ICcpO1xuICB9XG5cbiAgLy8gQ2Fubm90IHVzZSBHZW5lcmF0b3IgdHlwZSBiZWNhdXNlIG9mIG5nLXBhY2thZ3JcbiAgKltTeW1ib2wuaXRlcmF0b3JdKCk6IGFueSB7XG4gICAgZm9yIChsZXQgbm9kZSA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgbm9kZTsgcG9zaXRpb24rKywgbm9kZSA9IG5vZGUubmV4dCkge1xuICAgICAgeWllbGQgbm9kZS52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTGlzdE1hcHBlckZuPFQgPSBhbnk+ID0gKHZhbHVlOiBUKSA9PiBhbnk7XG5cbmV4cG9ydCB0eXBlIExpc3RDb21wYXJpc29uRm48VCA9IGFueT4gPSAodmFsdWUxOiBULCB2YWx1ZTI6IGFueSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgTGlzdEl0ZXJhdG9yRm48VCA9IGFueSwgUiA9IGJvb2xlYW4+ID0gKFxuICBub2RlOiBMaXN0Tm9kZTxUPixcbiAgaW5kZXg/OiBudW1iZXIsXG4gIGxpc3Q/OiBMaW5rZWRMaXN0LFxuKSA9PiBSO1xuIl19 |
@@ -63,4 +63,4 @@ import compare from 'just-compare'; | ||
return { | ||
after: (previousValue, compareFn = compare) => this.addAfter(value, previousValue, compareFn), | ||
before: (nextValue, compareFn = compare) => this.addBefore(value, nextValue, compareFn), | ||
after: (...params) => this.addAfter.call(this, value, ...params), | ||
before: (...params) => this.addBefore.call(this, value, ...params), | ||
byIndex: (position) => this.addByIndex(value, position), | ||
@@ -73,4 +73,4 @@ head: () => this.addHead(value), | ||
return { | ||
after: (previousValue, compareFn = compare) => this.addManyAfter(values, previousValue, compareFn), | ||
before: (nextValue, compareFn = compare) => this.addManyBefore(values, nextValue, compareFn), | ||
after: (...params) => this.addManyAfter.call(this, values, ...params), | ||
before: (...params) => this.addManyBefore.call(this, values, ...params), | ||
byIndex: (position) => this.addManyByIndex(values, position), | ||
@@ -154,4 +154,4 @@ head: () => this.addManyHead(values), | ||
byIndex: (position) => this.dropByIndex(position), | ||
byValue: (value, compareFn = compare) => this.dropByValue(value, compareFn), | ||
byValueAll: (value, compareFn = compare) => this.dropByValueAll(value, compareFn), | ||
byValue: (...params) => this.dropByValue.apply(this, params), | ||
byValueAll: (...params) => this.dropByValueAll.apply(this, params), | ||
head: () => this.dropHead(), | ||
@@ -286,2 +286,3 @@ tail: () => this.dropTail(), | ||
} | ||
// Cannot use Generator type because of ng-packagr | ||
*[Symbol.iterator]() { | ||
@@ -288,0 +289,0 @@ for (let node = this.first, position = 0; node; position++, node = node.next) { |
@@ -1,2 +0,2 @@ | ||
import { __generator } from 'tslib'; | ||
import { __spread, __generator } from 'tslib'; | ||
import compare from 'just-compare'; | ||
@@ -78,9 +78,17 @@ | ||
return { | ||
after: function (previousValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addAfter(value, previousValue, compareFn); | ||
after: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addAfter).call.apply(_a, __spread([_this, value], params)); | ||
}, | ||
before: function (nextValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addBefore(value, nextValue, compareFn); | ||
before: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addBefore).call.apply(_a, __spread([_this, value], params)); | ||
}, | ||
@@ -95,9 +103,17 @@ byIndex: function (position) { return _this.addByIndex(value, position); }, | ||
return { | ||
after: function (previousValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addManyAfter(values, previousValue, compareFn); | ||
after: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addManyAfter).call.apply(_a, __spread([_this, values], params)); | ||
}, | ||
before: function (nextValue, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.addManyBefore(values, nextValue, compareFn); | ||
before: function () { | ||
var _a; | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return (_a = _this.addManyBefore).call.apply(_a, __spread([_this, values], params)); | ||
}, | ||
@@ -189,9 +205,15 @@ byIndex: function (position) { return _this.addManyByIndex(values, position); }, | ||
byIndex: function (position) { return _this.dropByIndex(position); }, | ||
byValue: function (value, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.dropByValue(value, compareFn); | ||
byValue: function () { | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return _this.dropByValue.apply(_this, params); | ||
}, | ||
byValueAll: function (value, compareFn) { | ||
if (compareFn === void 0) { compareFn = compare; } | ||
return _this.dropByValueAll(value, compareFn); | ||
byValueAll: function () { | ||
var params = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
params[_i] = arguments[_i]; | ||
} | ||
return _this.dropByValueAll.apply(_this, params); | ||
}, | ||
@@ -332,2 +354,3 @@ head: function () { return _this.dropHead(); }, | ||
}; | ||
// Cannot use Generator type because of ng-packagr | ||
LinkedList.prototype[Symbol.iterator] = function () { | ||
@@ -334,0 +357,0 @@ var node, position; |
@@ -18,4 +18,4 @@ export declare class ListNode<T = any> { | ||
add(value: T): { | ||
after: (previousValue: T, compareFn?: ListComparisonFn<T>) => ListNode<T>; | ||
before: (nextValue: T, compareFn?: ListComparisonFn<T>) => ListNode<T>; | ||
after: (...params: [T] | [any, ListComparisonFn<T>]) => ListNode<T>; | ||
before: (...params: [T] | [any, ListComparisonFn<T>]) => ListNode<T>; | ||
byIndex: (position: number) => ListNode<T>; | ||
@@ -26,4 +26,4 @@ head: () => ListNode<T>; | ||
addMany(values: T[]): { | ||
after: (previousValue: T, compareFn?: ListComparisonFn<T>) => ListNode<T>[]; | ||
before: (nextValue: T, compareFn?: ListComparisonFn<T>) => ListNode<T>[]; | ||
after: (...params: [T] | [any, ListComparisonFn<T>]) => ListNode<T>[]; | ||
before: (...params: [T] | [any, ListComparisonFn<T>]) => ListNode<T>[]; | ||
byIndex: (position: number) => ListNode<T>[]; | ||
@@ -33,9 +33,13 @@ head: () => ListNode<T>[]; | ||
}; | ||
addAfter(value: T, previousValue: T, compareFn?: ListComparisonFn<T>): ListNode<T>; | ||
addBefore(value: T, nextValue: T, compareFn?: ListComparisonFn<T>): ListNode<T>; | ||
addAfter(value: T, nextValue: T): ListNode<T>; | ||
addAfter(value: T, previousValue: any, compareFn: ListComparisonFn<T>): ListNode<T>; | ||
addBefore(value: T, nextValue: T): ListNode<T>; | ||
addBefore(value: T, nextValue: any, compareFn: ListComparisonFn<T>): ListNode<T>; | ||
addByIndex(value: T, position: number): ListNode<T>; | ||
addHead(value: T): ListNode<T>; | ||
addTail(value: T): ListNode<T>; | ||
addManyAfter(values: T[], previousValue: T, compareFn?: ListComparisonFn<T>): ListNode<T>[]; | ||
addManyBefore(values: T[], nextValue: T, compareFn?: ListComparisonFn<T>): ListNode<T>[]; | ||
addManyAfter(values: T[], previousValue: T): ListNode<T>[]; | ||
addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn<T>): ListNode<T>[]; | ||
addManyBefore(values: T[], previousValue: T): ListNode<T>[]; | ||
addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn<T>): ListNode<T>[]; | ||
addManyByIndex(values: T[], position: number): ListNode<T>[]; | ||
@@ -46,4 +50,4 @@ addManyHead(values: T[]): ListNode<T>[]; | ||
byIndex: (position: number) => ListNode<T>; | ||
byValue: (value: T, compareFn?: ListComparisonFn<T>) => ListNode<T>; | ||
byValueAll: (value: T, compareFn?: ListComparisonFn<T>) => ListNode<T>[]; | ||
byValue: (...params: [T] | [any, ListComparisonFn<T>]) => ListNode<T>; | ||
byValueAll: (...params: [T] | [any, ListComparisonFn<T>]) => ListNode<T>[]; | ||
head: () => ListNode<T>; | ||
@@ -58,4 +62,6 @@ tail: () => ListNode<T>; | ||
dropByIndex(position: number): ListNode<T> | undefined; | ||
dropByValue(value: T, compareFn?: ListComparisonFn<T>): ListNode<T> | undefined; | ||
dropByValueAll(value: T, compareFn?: ListComparisonFn<T>): ListNode<T>[]; | ||
dropByValue(value: T): ListNode<T> | undefined; | ||
dropByValue(value: any, compareFn: ListComparisonFn<T>): ListNode<T> | undefined; | ||
dropByValueAll(value: T): ListNode<T>[]; | ||
dropByValueAll(value: any, compareFn: ListComparisonFn<T>): ListNode<T>[]; | ||
dropHead(): ListNode<T> | undefined; | ||
@@ -70,3 +76,4 @@ dropTail(): ListNode<T> | undefined; | ||
get(position: number): ListNode<T> | undefined; | ||
indexOf(value: T, compareFn?: ListComparisonFn<T>): number; | ||
indexOf(value: T): number; | ||
indexOf(value: any, compareFn: ListComparisonFn<T>): number; | ||
toArray(): T[]; | ||
@@ -78,3 +85,3 @@ toNodeArray(): ListNode<T>[]; | ||
export declare type ListMapperFn<T = any> = (value: T) => any; | ||
export declare type ListComparisonFn<T = any> = (value1: T, value2: T) => boolean; | ||
export declare type ListComparisonFn<T = any> = (value1: T, value2: any) => boolean; | ||
export declare type ListIteratorFn<T = any, R = boolean> = (node: ListNode<T>, index?: number, list?: LinkedList) => R; |
{ | ||
"name": "@abp/utils", | ||
"version": "2.3.0", | ||
"version": "2.3.1", | ||
"publishConfig": { | ||
@@ -5,0 +5,0 @@ "access": "public" |
{ | ||
"name": "@abp/utils", | ||
"version": "2.3.0", | ||
"version": "2.3.1", | ||
"scripts": { | ||
@@ -5,0 +5,0 @@ "prepublish": "yarn install --ignore-scripts && node prepublish.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
279962
2045