Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ng-starrating

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ng-starrating - npm Package Compare versions

Comparing version 1.0.13 to 1.0.14

51

bundles/ng-starrating.umd.js

@@ -233,3 +233,4 @@ (function (global, factory) {

_this.applyColorStyleAllStars(false);
_this.addRemoveEvents();
_this.addEvents();
//this.addRemoveEvents();
});

@@ -265,3 +266,4 @@ }

this.onReadOnlyChange.subscribe(function () {
_this.addRemoveEvents();
_this.readonly ? _this.makeReadOnly() : _this.makeEditable();
//this.addRemoveEvents();
});

@@ -339,12 +341,20 @@ }

});
// private makeEditable() {
// if (!this.mainElement) return;
// this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
// this.mainElement.nativeElement.style.cursor = "pointer";
// this.mainElement.nativeElement.title = this.value;
// this.stars.forEach((star: any) => {
// star.addEventListener('click', this.onRate.bind(this));
// star.addEventListener('mouseenter', this.onStar.bind(this));
// star.style.cursor = "pointer";
// star.title = star.dataset.index;
// });
// }
StarRatingComponent.prototype.makeEditable = function () {
var _this = this;
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach(function (star) {
star.addEventListener('click', _this.onRate.bind(_this));
star.addEventListener('mouseenter', _this.onStar.bind(_this));
star.style.cursor = "pointer";

@@ -364,10 +374,23 @@ star.title = star.dataset.index;

};
StarRatingComponent.prototype.addRemoveEvents = function () {
if (this.readonly) {
this.makeReadOnly();
}
else {
this.makeEditable();
this.onValueChange.next(this.value);
}
// private addRemoveEvents() {
// if (this.readonly) {
// this.makeReadOnly();
// } else {
// this.makeEditable();
// this.onValueChange.next(this.value);
// }
// }
StarRatingComponent.prototype.addEvents = function () {
var _this = this;
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach(function (star) {
star.addEventListener('click', _this.onRate.bind(_this));
star.addEventListener('mouseenter', _this.onStar.bind(_this));
star.style.cursor = "pointer";
star.title = star.dataset.index;
});
};

@@ -374,0 +397,0 @@ StarRatingComponent.prototype.ngAfterViewInit = function () {

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common"),require("rxjs")):"function"==typeof define&&define.amd?define("ng-starrating",["exports","@angular/core","@angular/forms","@angular/common","rxjs"],t):t((e=e||self)["ng-starrating"]={},e.ng.core,e.ng.forms,e.ng.common,e.rxjs)}(this,(function(e,t,n,r,o){"use strict";
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common"),require("rxjs")):"function"==typeof define&&define.amd?define("ng-starrating",["exports","@angular/core","@angular/forms","@angular/common","rxjs"],t):t((e=e||self)["ng-starrating"]={},e.ng.core,e.ng.forms,e.ng.common,e.rxjs)}(this,(function(e,t,n,r,a){"use strict";
/*! *****************************************************************************

@@ -15,3 +15,3 @@ Copyright (c) Microsoft Corporation. All rights reserved.

and limitations under the License.
***************************************************************************** */function a(e,t,n,r){var o,a=arguments.length,i=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,n,i):o(t,n))||i);return a>3&&i&&Object.defineProperty(t,n,i),i}function i(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}var l=function(){function e(){}return e.prototype.ngOnInit=function(){},e=a([t.Component({selector:"lib-rating",template:"\n <p>\n rating works!\n </p>\n "}),i("design:paramtypes",[])],e)}(),c=function(){function e(){var e=this;this.stars=[],this._readOnly=!1,this._totalStars=5,this.rate=new t.EventEmitter,this.onStarsCountChange||(this.onStarsCountChange=new o.Subject,this.onStarsCountChange.subscribe((function(){e.setStars(),e.generateRating(!0),e.applySizeAllStars(),e.applyColorStyleAllStars(!1),e.addRemoveEvents()}))),this.onValueChange||(this.onValueChange=new o.Subject,this.onValueChange.subscribe((function(){e.generateRating(),e.applySizeAllStars()}))),this.onCheckedColorChange||(this.onCheckedColorChange=new o.Subject,this.onCheckedColorChange.subscribe((function(){e.applyColorStyleAllStars(!0)}))),this.onUnCheckedColorChange||(this.onUnCheckedColorChange=new o.Subject,this.onUnCheckedColorChange.subscribe((function(){e.applyColorStyleAllStars(!1)}))),this.onSizeChange||(this.onSizeChange=new o.Subject,this.onSizeChange.subscribe((function(){e.applySizeAllStars()}))),this.onReadOnlyChange||(this.onReadOnlyChange=new o.Subject,this.onReadOnlyChange.subscribe((function(){e.addRemoveEvents()})))}var n;return n=e,Object.defineProperty(e.prototype,"checkedcolor",{get:function(){return this._checkedColor},set:function(e){this._checkedColor=e,this._checkedColor&&this.onCheckedColorChange.next(this._checkedColor)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"uncheckedcolor",{get:function(){return this._unCheckedColor},set:function(e){this._unCheckedColor=e,this._unCheckedColor&&this.onUnCheckedColorChange.next(this._unCheckedColor)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){e=e&&null!=e?e:0,this._value=e,this._value>=0&&this.onValueChange.next(this._value)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this._size.concat(this._size.includes("px")?"":"px")},set:function(e){e=e&&null!=e&&"0px"!=e?e:"24px",this._size=e,this.onSizeChange.next(this._size)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readonly",{get:function(){return"true"===String(this._readOnly)},set:function(e){this._readOnly=e,this.onReadOnlyChange.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"totalstars",{get:function(){return this._totalStars},set:function(e){this._totalStars=e<=0?5:e,this.onStarsCountChange.next(Number(e))},enumerable:!0,configurable:!0}),e.prototype.makeEditable=function(){var e=this;this.mainElement&&(this.mainElement.nativeElement.addEventListener("mouseleave",this.offStar.bind(this)),this.mainElement.nativeElement.style.cursor="pointer",this.mainElement.nativeElement.title=this.value,this.stars.forEach((function(t){t.addEventListener("click",e.onRate.bind(e)),t.addEventListener("mouseenter",e.onStar.bind(e)),t.style.cursor="pointer",t.title=t.dataset.index})))},e.prototype.makeReadOnly=function(){this.mainElement&&(this.mainElement.nativeElement.style.cursor="default",this.mainElement.nativeElement.title=this.value,this.stars.forEach((function(e){e.style.cursor="default",e.title=""})))},e.prototype.addRemoveEvents=function(){this.readonly?this.makeReadOnly():(this.makeEditable(),this.onValueChange.next(this.value))},e.prototype.ngAfterViewInit=function(){},e.prototype.onRate=function(e){if(!this.readonly){var t=e.srcElement,n=this.value;this.value=parseInt(t.dataset.index),0==this.value&&(this.value=1);var r={oldValue:n,newValue:this.value,starRating:this};this.rate.emit(r)}},e.prototype.onStar=function(e){if(!this.readonly){for(var t=e.srcElement,n=parseInt(t.dataset.index),r=0;r<n;r++)this.stars[r].className="",this.addDefaultClass(this.stars[r]),this.addCheckedStarClass(this.stars[r]);for(r=n;r<this.stars.length;r++)this.stars[r].className="",this.addDefaultClass(this.stars[r])}},e.prototype.offStar=function(e){this.generateRating()},e.prototype.addDefaultClass=function(e){e.classList.add(n.CLS_DEFAULT_STAR)},e.prototype.addCheckedStarClass=function(e){e.classList.add(n.CLS_CHECKED_STAR)},e.prototype.addHalfStarClass=function(e){e.classList.add(n.CLS_HALF_STAR)},e.prototype.setStars=function(){var e=this;if(this.mainElement){var t=this.mainElement.nativeElement,n=function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}(Array(Number(this.totalstars)).keys());this.stars.length=0,t.innerHTML="",n.forEach((function(n){var r=document.createElement("span");r.dataset.index=(n+1).toString(),r.title=r.dataset.index,t.appendChild(r),e.stars.push(r)}))}},e.prototype.applySizeAllStars=function(){var e=this;this._size&&(0==this.stars.length&&this.setStars(),this.stars.forEach((function(t){var r=e.size.match(/\d+/)[0],o=10*parseInt(r)/24,a=0-20*parseInt(r)/24;t.style.setProperty(n.VAR_SIZE,e.size),t.classList.contains(n.CLS_HALF_STAR)&&(t.style.setProperty(n.VAR_HALF_WIDTH,o+"px"),t.style.setProperty(n.VAR_HALF_MARGIN,a+"px"))})))},e.prototype.applyColorStyleAllStars=function(e){var t=this;0==this.stars.length&&this.setStars(),this.stars.forEach((function(n){e?t.applyCheckedColorStyle(n):t.applyUnCheckedColorStyle(n)}))},e.prototype.applyColorStyle=function(e){this.applyCheckedColorStyle(e),this.applyUnCheckedColorStyle(e)},e.prototype.applyCheckedColorStyle=function(e){e.style.setProperty(n.VAR_CHECKED_COLOR,this.checkedcolor)},e.prototype.applyUnCheckedColorStyle=function(e){e.style.setProperty(n.VAR_UNCHECKED_COLOR,this.uncheckedcolor)},e.prototype.generateRating=function(e){var t=this;if(void 0===e&&(e=!1),(!this.readonly||e)&&this.mainElement&&(0==this.stars.length&&this.setStars(),this.value>=0)){this.mainElement.nativeElement.title=this.value;var n=!!(Number.parseFloat(this.value.toString())%1).toString().substring(3,2),r=1;this.stars.forEach((function(e){e.className="",t.applyColorStyle(e),t.addDefaultClass(e),t.value>=r?t.addCheckedStarClass(e):n&&(t.addHalfStarClass(e),n=!1),r++}))}},e.VAR_CHECKED_COLOR="--checkedColor",e.VAR_UNCHECKED_COLOR="--unCheckedColor",e.VAR_SIZE="--size",e.VAR_HALF_WIDTH="--halfWidth",e.VAR_HALF_MARGIN="--halfMargin",e.CLS_CHECKED_STAR="on",e.CLS_DEFAULT_STAR="star",e.CLS_HALF_STAR="half",e.INP_CHECKED_COLOR="checkedcolor",e.INP_UNCHECKED_COLOR="uncheckedcolor",e.INP_VALUE="value",e.INP_SIZE="size",e.INP_READONLY="readonly",e.INP_TOTALSTARS="totalstars",a([t.ViewChild("starMain",{static:!0}),i("design:type",t.ElementRef)],e.prototype,"mainElement",void 0),a([t.Output(),i("design:type",t.EventEmitter)],e.prototype,"rate",void 0),a([t.Input(n.INP_CHECKED_COLOR),i("design:type",String),i("design:paramtypes",[String])],e.prototype,"checkedcolor",null),a([t.Input(n.INP_UNCHECKED_COLOR),i("design:type",String),i("design:paramtypes",[String])],e.prototype,"uncheckedcolor",null),a([t.Input(n.INP_VALUE),i("design:type",Number),i("design:paramtypes",[Number])],e.prototype,"value",null),a([t.Input(n.INP_SIZE),i("design:type",String),i("design:paramtypes",[String])],e.prototype,"size",null),a([t.Input(n.INP_READONLY),i("design:type",Boolean),i("design:paramtypes",[Boolean])],e.prototype,"readonly",null),a([t.Input(n.INP_TOTALSTARS),i("design:type",Number),i("design:paramtypes",[Number])],e.prototype,"totalstars",null),e=n=a([t.Component({selector:"star-rating",template:'<div #starMain>\r\n</div>\r\n\r\n\x3c!-- <ng-container *ngFor="let star of stars; let i = index;">\r\n <span \r\n (click)="!isReadOnly && onRate(i)" \r\n (mouseleave)="!isReadOnly && generateRating()"\r\n (mouseenter)="!isReadOnly && onStar(i)" \r\n [ngStyle]="{\r\n \'font-size\': getSize(),\r\n \'width\': getSize(),\r\n pointer: isReadOnly ? \'default\' : \'pointer\'\r\n }" \r\n [ngClass]="{\r\n on: star.checked,\r\n half: star.isHalf,\r\n readOnly: isReadOnly,\r\n editable: !isReadOnly\r\n }"></span>\r\n</ng-container> --\x3e',encapsulation:t.ViewEncapsulation.ShadowDom,styles:[":root{--checkedColor:gold;--unCheckedColor:gray;--size:24px;--halfWidth:10px;--halfMargin:-20px}.star{cursor:pointer;color:var(--unCheckedColor);font-size:var(--size);width:var(--size);display:inline-block}.star:last-child{margin-right:0}.star:before{content:'\\2605'}.star.on{color:var(--checkedColor)}.star.half:after{content:'\\2605';color:var(--checkedColor);position:absolute;margin-left:var(--halfMargin);width:var(--halfWidth);overflow:hidden}"]}),i("design:paramtypes",[])],e)}(),h=function(){function e(){}return e.prototype.ngDoBootstrap=function(){},e=a([t.NgModule({imports:[n.FormsModule,r.CommonModule],declarations:[l,c],exports:[c],entryComponents:[c]})],e)}();e.RatingModule=h,e.StarRatingComponent=c,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})}));
***************************************************************************** */function o(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function i(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}var l=function(){function e(){}return e.prototype.ngOnInit=function(){},e=o([t.Component({selector:"lib-rating",template:"\n <p>\n rating works!\n </p>\n "}),i("design:paramtypes",[])],e)}(),c=function(){function e(){var e=this;this.stars=[],this._readOnly=!1,this._totalStars=5,this.rate=new t.EventEmitter,this.onStarsCountChange||(this.onStarsCountChange=new a.Subject,this.onStarsCountChange.subscribe((function(){e.setStars(),e.generateRating(!0),e.applySizeAllStars(),e.applyColorStyleAllStars(!1),e.addEvents()}))),this.onValueChange||(this.onValueChange=new a.Subject,this.onValueChange.subscribe((function(){e.generateRating(),e.applySizeAllStars()}))),this.onCheckedColorChange||(this.onCheckedColorChange=new a.Subject,this.onCheckedColorChange.subscribe((function(){e.applyColorStyleAllStars(!0)}))),this.onUnCheckedColorChange||(this.onUnCheckedColorChange=new a.Subject,this.onUnCheckedColorChange.subscribe((function(){e.applyColorStyleAllStars(!1)}))),this.onSizeChange||(this.onSizeChange=new a.Subject,this.onSizeChange.subscribe((function(){e.applySizeAllStars()}))),this.onReadOnlyChange||(this.onReadOnlyChange=new a.Subject,this.onReadOnlyChange.subscribe((function(){e.readonly?e.makeReadOnly():e.makeEditable()})))}var n;return n=e,Object.defineProperty(e.prototype,"checkedcolor",{get:function(){return this._checkedColor},set:function(e){this._checkedColor=e,this._checkedColor&&this.onCheckedColorChange.next(this._checkedColor)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"uncheckedcolor",{get:function(){return this._unCheckedColor},set:function(e){this._unCheckedColor=e,this._unCheckedColor&&this.onUnCheckedColorChange.next(this._unCheckedColor)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){e=e&&null!=e?e:0,this._value=e,this._value>=0&&this.onValueChange.next(this._value)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this._size.concat(this._size.includes("px")?"":"px")},set:function(e){e=e&&null!=e&&"0px"!=e?e:"24px",this._size=e,this.onSizeChange.next(this._size)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readonly",{get:function(){return"true"===String(this._readOnly)},set:function(e){this._readOnly=e,this.onReadOnlyChange.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"totalstars",{get:function(){return this._totalStars},set:function(e){this._totalStars=e<=0?5:e,this.onStarsCountChange.next(Number(e))},enumerable:!0,configurable:!0}),e.prototype.makeEditable=function(){this.mainElement&&(this.mainElement.nativeElement.style.cursor="pointer",this.mainElement.nativeElement.title=this.value,this.stars.forEach((function(e){e.style.cursor="pointer",e.title=e.dataset.index})))},e.prototype.makeReadOnly=function(){this.mainElement&&(this.mainElement.nativeElement.style.cursor="default",this.mainElement.nativeElement.title=this.value,this.stars.forEach((function(e){e.style.cursor="default",e.title=""})))},e.prototype.addEvents=function(){var e=this;this.mainElement&&(this.mainElement.nativeElement.addEventListener("mouseleave",this.offStar.bind(this)),this.mainElement.nativeElement.style.cursor="pointer",this.mainElement.nativeElement.title=this.value,this.stars.forEach((function(t){t.addEventListener("click",e.onRate.bind(e)),t.addEventListener("mouseenter",e.onStar.bind(e)),t.style.cursor="pointer",t.title=t.dataset.index})))},e.prototype.ngAfterViewInit=function(){},e.prototype.onRate=function(e){if(!this.readonly){var t=e.srcElement,n=this.value;this.value=parseInt(t.dataset.index),0==this.value&&(this.value=1);var r={oldValue:n,newValue:this.value,starRating:this};this.rate.emit(r)}},e.prototype.onStar=function(e){if(!this.readonly){for(var t=e.srcElement,n=parseInt(t.dataset.index),r=0;r<n;r++)this.stars[r].className="",this.addDefaultClass(this.stars[r]),this.addCheckedStarClass(this.stars[r]);for(r=n;r<this.stars.length;r++)this.stars[r].className="",this.addDefaultClass(this.stars[r])}},e.prototype.offStar=function(e){this.generateRating()},e.prototype.addDefaultClass=function(e){e.classList.add(n.CLS_DEFAULT_STAR)},e.prototype.addCheckedStarClass=function(e){e.classList.add(n.CLS_CHECKED_STAR)},e.prototype.addHalfStarClass=function(e){e.classList.add(n.CLS_HALF_STAR)},e.prototype.setStars=function(){var e=this;if(this.mainElement){var t=this.mainElement.nativeElement,n=function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}(Array(Number(this.totalstars)).keys());this.stars.length=0,t.innerHTML="",n.forEach((function(n){var r=document.createElement("span");r.dataset.index=(n+1).toString(),r.title=r.dataset.index,t.appendChild(r),e.stars.push(r)}))}},e.prototype.applySizeAllStars=function(){var e=this;this._size&&(0==this.stars.length&&this.setStars(),this.stars.forEach((function(t){var r=e.size.match(/\d+/)[0],a=10*parseInt(r)/24,o=0-20*parseInt(r)/24;t.style.setProperty(n.VAR_SIZE,e.size),t.classList.contains(n.CLS_HALF_STAR)&&(t.style.setProperty(n.VAR_HALF_WIDTH,a+"px"),t.style.setProperty(n.VAR_HALF_MARGIN,o+"px"))})))},e.prototype.applyColorStyleAllStars=function(e){var t=this;0==this.stars.length&&this.setStars(),this.stars.forEach((function(n){e?t.applyCheckedColorStyle(n):t.applyUnCheckedColorStyle(n)}))},e.prototype.applyColorStyle=function(e){this.applyCheckedColorStyle(e),this.applyUnCheckedColorStyle(e)},e.prototype.applyCheckedColorStyle=function(e){e.style.setProperty(n.VAR_CHECKED_COLOR,this.checkedcolor)},e.prototype.applyUnCheckedColorStyle=function(e){e.style.setProperty(n.VAR_UNCHECKED_COLOR,this.uncheckedcolor)},e.prototype.generateRating=function(e){var t=this;if(void 0===e&&(e=!1),(!this.readonly||e)&&this.mainElement&&(0==this.stars.length&&this.setStars(),this.value>=0)){this.mainElement.nativeElement.title=this.value;var n=!!(Number.parseFloat(this.value.toString())%1).toString().substring(3,2),r=1;this.stars.forEach((function(e){e.className="",t.applyColorStyle(e),t.addDefaultClass(e),t.value>=r?t.addCheckedStarClass(e):n&&(t.addHalfStarClass(e),n=!1),r++}))}},e.VAR_CHECKED_COLOR="--checkedColor",e.VAR_UNCHECKED_COLOR="--unCheckedColor",e.VAR_SIZE="--size",e.VAR_HALF_WIDTH="--halfWidth",e.VAR_HALF_MARGIN="--halfMargin",e.CLS_CHECKED_STAR="on",e.CLS_DEFAULT_STAR="star",e.CLS_HALF_STAR="half",e.INP_CHECKED_COLOR="checkedcolor",e.INP_UNCHECKED_COLOR="uncheckedcolor",e.INP_VALUE="value",e.INP_SIZE="size",e.INP_READONLY="readonly",e.INP_TOTALSTARS="totalstars",o([t.ViewChild("starMain",{static:!0}),i("design:type",t.ElementRef)],e.prototype,"mainElement",void 0),o([t.Output(),i("design:type",t.EventEmitter)],e.prototype,"rate",void 0),o([t.Input(n.INP_CHECKED_COLOR),i("design:type",String),i("design:paramtypes",[String])],e.prototype,"checkedcolor",null),o([t.Input(n.INP_UNCHECKED_COLOR),i("design:type",String),i("design:paramtypes",[String])],e.prototype,"uncheckedcolor",null),o([t.Input(n.INP_VALUE),i("design:type",Number),i("design:paramtypes",[Number])],e.prototype,"value",null),o([t.Input(n.INP_SIZE),i("design:type",String),i("design:paramtypes",[String])],e.prototype,"size",null),o([t.Input(n.INP_READONLY),i("design:type",Boolean),i("design:paramtypes",[Boolean])],e.prototype,"readonly",null),o([t.Input(n.INP_TOTALSTARS),i("design:type",Number),i("design:paramtypes",[Number])],e.prototype,"totalstars",null),e=n=o([t.Component({selector:"star-rating",template:'<div #starMain>\r\n</div>\r\n\r\n\x3c!-- <ng-container *ngFor="let star of stars; let i = index;">\r\n <span \r\n (click)="!isReadOnly && onRate(i)" \r\n (mouseleave)="!isReadOnly && generateRating()"\r\n (mouseenter)="!isReadOnly && onStar(i)" \r\n [ngStyle]="{\r\n \'font-size\': getSize(),\r\n \'width\': getSize(),\r\n pointer: isReadOnly ? \'default\' : \'pointer\'\r\n }" \r\n [ngClass]="{\r\n on: star.checked,\r\n half: star.isHalf,\r\n readOnly: isReadOnly,\r\n editable: !isReadOnly\r\n }"></span>\r\n</ng-container> --\x3e',encapsulation:t.ViewEncapsulation.ShadowDom,styles:[":root{--checkedColor:gold;--unCheckedColor:gray;--size:24px;--halfWidth:10px;--halfMargin:-20px}.star{cursor:pointer;color:var(--unCheckedColor);font-size:var(--size);width:var(--size);display:inline-block}.star:last-child{margin-right:0}.star:before{content:'\\2605'}.star.on{color:var(--checkedColor)}.star.half:after{content:'\\2605';color:var(--checkedColor);position:absolute;margin-left:var(--halfMargin);width:var(--halfWidth);overflow:hidden}"]}),i("design:paramtypes",[])],e)}(),h=function(){function e(){}return e.prototype.ngDoBootstrap=function(){},e=o([t.NgModule({imports:[n.FormsModule,r.CommonModule],declarations:[l,c],exports:[c],entryComponents:[c]})],e)}();e.RatingModule=h,e.StarRatingComponent=c,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ng-starrating.umd.min.js.map

@@ -51,3 +51,3 @@ import { EventEmitter } from '@angular/core';

private makeReadOnly;
private addRemoveEvents;
private addEvents;
private ngAfterViewInit;

@@ -54,0 +54,0 @@ private onRate;

@@ -18,3 +18,4 @@ var StarRatingComponent_1;

this.applyColorStyleAllStars(false);
this.addRemoveEvents();
this.addEvents();
//this.addRemoveEvents();
});

@@ -50,3 +51,4 @@ }

this.onReadOnlyChange.subscribe(() => {
this.addRemoveEvents();
this.readonly ? this.makeReadOnly() : this.makeEditable();
//this.addRemoveEvents();
});

@@ -99,11 +101,20 @@ }

}
// private makeEditable() {
// if (!this.mainElement) return;
// this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
// this.mainElement.nativeElement.style.cursor = "pointer";
// this.mainElement.nativeElement.title = this.value;
// this.stars.forEach((star: any) => {
// star.addEventListener('click', this.onRate.bind(this));
// star.addEventListener('mouseenter', this.onStar.bind(this));
// star.style.cursor = "pointer";
// star.title = star.dataset.index;
// });
// }
makeEditable() {
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach((star) => {
star.addEventListener('click', this.onRate.bind(this));
star.addEventListener('mouseenter', this.onStar.bind(this));
star.style.cursor = "pointer";

@@ -123,10 +134,22 @@ star.title = star.dataset.index;

}
addRemoveEvents() {
if (this.readonly) {
this.makeReadOnly();
}
else {
this.makeEditable();
this.onValueChange.next(this.value);
}
// private addRemoveEvents() {
// if (this.readonly) {
// this.makeReadOnly();
// } else {
// this.makeEditable();
// this.onValueChange.next(this.value);
// }
// }
addEvents() {
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach((star) => {
star.addEventListener('click', this.onRate.bind(this));
star.addEventListener('mouseenter', this.onStar.bind(this));
star.style.cursor = "pointer";
star.title = star.dataset.index;
});
}

@@ -322,2 +345,2 @@ ngAfterViewInit() {

export { StarRatingComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1yYXRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctc3RhcnJhdGluZy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3Rhci1yYXRpbmcvc3Rhci1yYXRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQ3RELFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CLElBQWEsbUJBQW1CLDJCQUFoQyxNQUFhLG1CQUFtQjtJQWtDOUI7UUFqQ1EsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFNM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQWtHdEIsU0FBSSxHQUEwRixJQUFJLFlBQVksRUFBRSxDQUFDO1FBeEV6SCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFD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Qzs7O3lEQUc5QztBQUVxQztJQUFyQyxLQUFLLENBQUMscUJBQW1CLENBQUMsU0FBUyxDQUFDOzs7Z0RBSXBDO0FBRW9DO0lBQXBDLEtBQUssQ0FBQyxxQkFBbUIsQ0FBQyxRQUFRLENBQUM7OzsrQ0FJbkM7QUFFd0M7SUFBeEMsS0FBSyxDQUFDLHFCQUFtQixDQUFDLFlBQVksQ0FBQzs7O21EQUd2QztBQUUwQztJQUExQyxLQUFLLENBQUMscUJBQW1CLENBQUMsY0FBYyxDQUFDOzs7cURBR3pDO0FBM0lVLG1CQUFtQjtJQVAvQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsYUFBYTtRQUN2QixncUJBQTJDO1FBRTNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTOztLQUMzQyxDQUFDOztHQUVXLG1CQUFtQixDQXVUL0I7U0F2VFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFxyXG4gIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdGFyLXJhdGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItcmF0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdGFyLXJhdGluZy5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU3RhclJhdGluZ0NvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBzdGFyczogQXJyYXk8RWxlbWVudD4gPSBbXTtcclxuICBcclxuICBwcml2YXRlIF9jaGVja2VkQ29sb3I6IHN0cmluZztcclxuICBwcml2YXRlIF91bkNoZWNrZWRDb2xvcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsU3RhcnM6IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBvblN0YXJzQ291bnRDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblVuQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPjtcclxuICBwcml2YXRlIG9uUmVhZE9ubHlDaGFuZ2U6IFN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9DSEVDS0VEX0NPTE9SOiBzdHJpbmcgPSAnLS1jaGVja2VkQ29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICctLXVuQ2hlY2tlZENvbG9yJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBWQVJfU0laRTogc3RyaW5nID0gJy0tc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfV0lEVEg6IHN0cmluZyA9ICctLWhhbGZXaWR0aCc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfTUFSR0lOOiBzdHJpbmcgPSAnLS1oYWxmTWFyZ2luJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfQ0hFQ0tFRF9TVEFSOiBzdHJpbmcgPSAnb24nO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENMU19ERUZBVUxUX1NUQVI6IHN0cmluZyA9ICdzdGFyJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfSEFMRl9TVEFSOiBzdHJpbmcgPSAnaGFsZic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX0NIRUNLRURfQ09MT1I6IHN0cmluZyA9ICdjaGVja2VkY29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICd1bmNoZWNrZWRjb2xvcic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1ZBTFVFOiBzdHJpbmcgPSAndmFsdWUnO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9TSVpFOiBzdHJpbmcgPSAnc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1JFQURPTkxZOiBzdHJpbmcgPSAncmVhZG9ubHknO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9UT1RBTFNUQVJTOiBzdHJpbmcgPSAndG90YWxzdGFycyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3N0YXJNYWluJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBtYWluRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAoIXRoaXMub25TdGFyc0NvdW50Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25TdGFyc0NvdW50Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblN0YXJzQ291bnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJhdGluZyh0cnVlKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5hZGRSZW1vdmVFdmVudHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uVmFsdWVDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJhdGluZygpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlTaXplQWxsU3RhcnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uQ2hlY2tlZENvbG9yQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25DaGVja2VkQ29sb3JDaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLm9uQ2hlY2tlZENvbG9yQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyh0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uVW5DaGVja2VkQ29sb3JDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblVuQ2hlY2tlZENvbG9yQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblVuQ2hlY2tlZENvbG9yQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyhmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblNpemVDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblNpemVDaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLm9uU2l6ZUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlTaXplQWxsU3RhcnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uUmVhZE9ubHlDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblJlYWRPbmx5Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblJlYWRPbmx5Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRSZW1vdmVFdmVudHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2hlY2tlZGNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tlZENvbG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVuY2hlY2tlZGNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdW5DaGVja2VkQ29sb3I7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBzaXplKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2l6ZS5jb25jYXQoKCF0aGlzLl9zaXplLmluY2x1ZGVzKFwicHhcIikgPyBcInB4XCIgOiBcIlwiKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuX3JlYWRPbmx5KSA9PT0gXCJ0cnVlXCI7XHJcbiAgfVxyXG5cclxuICBnZXQgdG90YWxzdGFycygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsU3RhcnM7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcmF0ZTogRXZlbnRFbWl0dGVyPHsgb2xkVmFsdWU6IG51bWJlciwgbmV3VmFsdWU6IG51bWJlciwgc3RhclJhdGluZzogU3RhclJhdGluZ0NvbXBvbmVudCB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX0NIRUNLRURfQ09MT1IpIHNldCBjaGVja2VkY29sb3IodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY2hlY2tlZENvbG9yID0gdmFsdWU7XHJcbiAgICB0aGlzLl9jaGVja2VkQ29sb3IgJiYgdGhpcy5vbkNoZWNrZWRDb2xvckNoYW5nZS5uZXh0KHRoaXMuX2NoZWNrZWRDb2xvcik7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfVU5DSEVDS0VEX0NPTE9SKSBzZXQgdW5jaGVja2VkY29sb3IodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdW5DaGVja2VkQ29sb3IgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3VuQ2hlY2tlZENvbG9yICYmIHRoaXMub25VbkNoZWNrZWRDb2xvckNoYW5nZS5uZXh0KHRoaXMuX3VuQ2hlY2tlZENvbG9yKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9WQUxVRSkgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHZhbHVlID0gKCF2YWx1ZSB8fCB2YWx1ZSA9PSBudWxsKSA/IDAgOiB2YWx1ZTtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLl92YWx1ZSA+PSAwICYmIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMuX3ZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9TSVpFKSBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB2YWx1ZSA9ICghdmFsdWUgfHwgdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSBcIjBweFwiKSA/IFwiMjRweFwiIDogdmFsdWU7XHJcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uU2l6ZUNoYW5nZS5uZXh0KHRoaXMuX3NpemUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX1JFQURPTkxZKSBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlYWRPbmx5ID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uUmVhZE9ubHlDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfVE9UQUxTVEFSUykgc2V0IHRvdGFsc3RhcnModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdG90YWxTdGFycyA9IHZhbHVlIDw9IDAgPyA1IDogdmFsdWU7XHJcbiAgICB0aGlzLm9uU3RhcnNDb3VudENoYW5nZS5uZXh0KE51bWJlcih2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYWtlRWRpdGFibGUoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFpbkVsZW1lbnQpIHJldHVybjtcclxuICAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5vZmZTdGFyLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIHN0YXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uUmF0ZS5iaW5kKHRoaXMpKTtcclxuICAgICAgc3Rhci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5vblN0YXIuYmluZCh0aGlzKSk7XHJcbiAgICAgIHN0YXIuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHN0YXIudGl0bGUgPSBzdGFyLmRhdGFzZXQuaW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZVJlYWRPbmx5KCkge1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGl0bGUgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy5zdGFycy5mb3JFYWNoKChzdGFyOiBhbnkpID0+IHtcclxuICAgICAgc3Rhci5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICAgICAgc3Rhci50aXRsZSA9IFwiXCI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUmVtb3ZlRXZlbnRzKCkge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgdGhpcy5tYWtlUmVhZE9ubHkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWFrZUVkaXRhYmxlKCk7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmF0ZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHJldHVybjtcclxuICAgIGxldCBzdGFyOiBIVE1MRWxlbWVudCA9IDxIVE1MRWxlbWVudD5ldmVudC5zcmNFbGVtZW50O1xyXG4gICAgbGV0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMudmFsdWUgPSBwYXJzZUludChzdGFyLmRhdGFzZXQuaW5kZXgpO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPT0gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gMTtcclxuICAgIH1cclxuICAgIGxldCByYXRlVmFsdWVzID0geyBvbGRWYWx1ZTogb2xkVmFsdWUsIG5ld1ZhbHVlOiB0aGlzLnZhbHVlLCBzdGFyUmF0aW5nOiB0aGlzIH07XHJcbiAgICB0aGlzLnJhdGUuZW1pdChyYXRlVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25TdGFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgbGV0IHN0YXI6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnNyY0VsZW1lbnQ7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gcGFyc2VJbnQoc3Rhci5kYXRhc2V0LmluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY3VycmVudEluZGV4OyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuc3RhcnNbaW5kZXhdLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuYWRkRGVmYXVsdENsYXNzKHRoaXMuc3RhcnNbaW5kZXhdKTtcclxuICAgICAgdGhpcy5hZGRDaGVja2VkU3RhckNsYXNzKHRoaXMuc3RhcnNbaW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRJbmRleDsgaW5kZXggPCB0aGlzLnN0YXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0aGlzLnN0YXJzW2luZGV4XS5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgICB0aGlzLmFkZERlZmF1bHRDbGFzcyh0aGlzLnN0YXJzW2luZGV4XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9mZlN0YXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVSYXRpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRGVmYXVsdENsYXNzKHN0YXI6IGFueSkge1xyXG4gICAgc3Rhci5jbGFzc0xpc3QuYWRkKFN0YXJSYXRpbmdDb21wb25lbnQuQ0xTX0RFRkFVTFRfU1RBUik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENoZWNrZWRTdGFyQ2xhc3Moc3RhcjogYW55KSB7XHJcbiAgICBzdGFyLmNsYXNzTGlzdC5hZGQoU3RhclJhdGluZ0NvbXBvbmVudC5DTFNfQ0hFQ0tFRF9TVEFSKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkSGFsZlN0YXJDbGFzcyhzdGFyOiBhbnkpIHtcclxuICAgIHN0YXIuY2xhc3NMaXN0LmFkZChTdGFyUmF0aW5nQ29tcG9uZW50LkNMU19IQUxGX1NUQVIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTdGFycygpIHtcclxuICAgIGlmICghdGhpcy5tYWluRWxlbWVudCkgcmV0dXJuO1xyXG4gICAgbGV0IHN0YXJDb250YWluZXI6IEhUTUxEaXZFbGVtZW50ID0gdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IG1heFN0YXJzID0gWy4uLkFycmF5KE51bWJlcih0aGlzLnRvdGFsc3RhcnMpKS5rZXlzKCldO1xyXG4gICAgdGhpcy5zdGFycy5sZW5ndGggPSAwO1xyXG4gICAgc3RhckNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgbWF4U3RhcnMuZm9yRWFjaChzdGFyTnVtYmVyID0+IHtcclxuICAgICAgbGV0IHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcclxuICAgICAgc3RhckVsZW1lbnQuZGF0YXNldC5pbmRleCA9IChzdGFyTnVtYmVyICsgMSkudG9TdHJpbmcoKTtcclxuICAgICAgc3RhckVsZW1lbnQudGl0bGUgPSBzdGFyRWxlbWVudC5kYXRhc2V0LmluZGV4O1xyXG4gICAgICBzdGFyQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0YXJFbGVtZW50KTtcclxuICAgICAgdGhpcy5zdGFycy5wdXNoKHN0YXJFbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVNpemVBbGxTdGFycygpIHtcclxuICAgIGlmICh0aGlzLl9zaXplKSB7XHJcbiAgICAgIHRoaXMuc3RhcnMubGVuZ3RoID09IDAgJiYgdGhpcy5zZXRTdGFycygpO1xyXG4gICAgICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIGNvbnN0IG5ld1NpemUgPSB0aGlzLl9zaXplLm1hdGNoKC9cXGQrLylbMF07XHJcbiAgICAgICAgLy8gbGV0IGhhbGZTaXplID0gcGFyc2VJbnQobmV3U2l6ZSwgMTApIC8gMjtcclxuICAgICAgICAvLyBsZXQgaGFsZk1hcmdpbiA9IDAgLSBwYXJzZUludChuZXdTaXplLCAxMCk7ICAgICAgICBcclxuICAgICAgICBsZXQgbmV3U2l6ZSA9IHRoaXMuc2l6ZS5tYXRjaCgvXFxkKy8pWzBdO1xyXG4gICAgICAgIGxldCBoYWxmU2l6ZSA9IChwYXJzZUludChuZXdTaXplKSAqIDEwKSAvIDI0O1xyXG4gICAgICAgIGxldCBoYWxmTWFyZ2luID0gMCAtICgocGFyc2VJbnQobmV3U2l6ZSkgKiAyMCkgLyAyNCk7XHJcbiAgICAgICAgc3Rhci5zdHlsZS5zZXRQcm9wZXJ0eShTdGFyUmF0aW5nQ29tcG9uZW50LlZBUl9TSVpFLCB0aGlzLnNpemUpO1xyXG4gICAgICAgIGlmIChzdGFyLmNsYXNzTGlzdC5jb250YWlucyhTdGFyUmF0aW5nQ29tcG9uZW50LkNMU19IQUxGX1NUQVIpKSB7XHJcbiAgICAgICAgICBzdGFyLnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX0hBTEZfV0lEVEgsIGAke2hhbGZTaXplfXB4YCk7XHJcbiAgICAgICAgICBzdGFyLnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX0hBTEZfTUFSR0lOLCBgJHtoYWxmTWFyZ2lufXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb2xvclN0eWxlQWxsU3RhcnMoc2V0Q2hlY2tlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdGFycy5sZW5ndGggPT0gMCAmJiB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoc2V0Q2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDaGVja2VkQ29sb3JTdHlsZShzdGFyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFwcGx5VW5DaGVja2VkQ29sb3JTdHlsZShzdGFyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q29sb3JTdHlsZShzdGFyRWxlbWVudDogSFRNTFNwYW5FbGVtZW50KSB7XHJcbiAgICB0aGlzLmFwcGx5Q2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQpO1xyXG4gICAgdGhpcy5hcHBseVVuQ2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNoZWNrZWRDb2xvclN0eWxlKHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpIHtcclxuICAgIHN0YXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX0NIRUNLRURfQ09MT1IsIHRoaXMuY2hlY2tlZGNvbG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlVbkNoZWNrZWRDb2xvclN0eWxlKHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpIHtcclxuICAgIHN0YXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX1VOQ0hFQ0tFRF9DT0xPUiwgdGhpcy51bmNoZWNrZWRjb2xvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlUmF0aW5nKGZvcmNlR2VuZXJhdGU6Ym9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSAmJiAhZm9yY2VHZW5lcmF0ZSkgcmV0dXJuO1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICB0aGlzLnN0YXJzLmxlbmd0aCA9PSAwICYmIHRoaXMuc2V0U3RhcnMoKTtcclxuICAgIGlmICh0aGlzLnZhbHVlID49IDApIHtcclxuICAgICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICAgIGxldCBoYXNEZWNpbWFsczogYm9vbGVhbiA9XHJcbiAgICAgICAgKChOdW1iZXIucGFyc2VGbG9hdCh0aGlzLnZhbHVlLnRvU3RyaW5nKCkpICUgMSlcclxuICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAuc3Vic3RyaW5nKDMsIDIpKSA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICAgIGxldCBpID0gMTtcclxuICAgICAgdGhpcy5zdGFycy5mb3JFYWNoKChzdGFyOiBhbnkpID0+IHtcclxuICAgICAgICBzdGFyLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGUoc3Rhcik7XHJcbiAgICAgICAgdGhpcy5hZGREZWZhdWx0Q2xhc3Moc3Rhcik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlID49IGkpIHtcclxuICAgICAgICAgIC8vIHN0YXIgb25cclxuICAgICAgICAgIHRoaXMuYWRkQ2hlY2tlZFN0YXJDbGFzcyhzdGFyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gaGFsZiBzdGFyXHJcbiAgICAgICAgICBpZiAoaGFzRGVjaW1hbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIYWxmU3RhckNsYXNzKHN0YXIpO1xyXG4gICAgICAgICAgICBoYXNEZWNpbWFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpKys7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1yYXRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctc3RhcnJhdGluZy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3Rhci1yYXRpbmcvc3Rhci1yYXRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQ3RELFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CLElBQWEsbUJBQW1CLDJCQUFoQyxNQUFhLG1CQUFtQjtJQWtDOUI7UUFqQ1EsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFNM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQW9HdEIsU0FBSSxHQUEwRixJQUFJLFlBQVksRUFBRSxDQUFDO1FBMUV6SCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIseUJBQXlCO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUks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OlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFxyXG4gIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdGFyLXJhdGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItcmF0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdGFyLXJhdGluZy5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU3RhclJhdGluZ0NvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBzdGFyczogQXJyYXk8RWxlbWVudD4gPSBbXTtcclxuICBcclxuICBwcml2YXRlIF9jaGVja2VkQ29sb3I6IHN0cmluZztcclxuICBwcml2YXRlIF91bkNoZWNrZWRDb2xvcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsU3RhcnM6IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBvblN0YXJzQ291bnRDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblVuQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPjtcclxuICBwcml2YXRlIG9uUmVhZE9ubHlDaGFuZ2U6IFN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9DSEVDS0VEX0NPTE9SOiBzdHJpbmcgPSAnLS1jaGVja2VkQ29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICctLXVuQ2hlY2tlZENvbG9yJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBWQVJfU0laRTogc3RyaW5nID0gJy0tc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfV0lEVEg6IHN0cmluZyA9ICctLWhhbGZXaWR0aCc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfTUFSR0lOOiBzdHJpbmcgPSAnLS1oYWxmTWFyZ2luJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfQ0hFQ0tFRF9TVEFSOiBzdHJpbmcgPSAnb24nO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENMU19ERUZBVUxUX1NUQVI6IHN0cmluZyA9ICdzdGFyJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfSEFMRl9TVEFSOiBzdHJpbmcgPSAnaGFsZic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX0NIRUNLRURfQ09MT1I6IHN0cmluZyA9ICdjaGVja2VkY29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICd1bmNoZWNrZWRjb2xvcic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1ZBTFVFOiBzdHJpbmcgPSAndmFsdWUnO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9TSVpFOiBzdHJpbmcgPSAnc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1JFQURPTkxZOiBzdHJpbmcgPSAncmVhZG9ubHknO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9UT1RBTFNUQVJTOiBzdHJpbmcgPSAndG90YWxzdGFycyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3N0YXJNYWluJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBtYWluRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAoIXRoaXMub25TdGFyc0NvdW50Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25TdGFyc0NvdW50Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblN0YXJzQ291bnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJhdGluZyh0cnVlKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudHMoKTtcclxuICAgICAgICAvL3RoaXMuYWRkUmVtb3ZlRXZlbnRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblZhbHVlQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVSYXRpbmcoKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vbkNoZWNrZWRDb2xvckNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uQ2hlY2tlZENvbG9yQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vbkNoZWNrZWRDb2xvckNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb2xvclN0eWxlQWxsU3RhcnModHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblVuQ2hlY2tlZENvbG9yQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25VbkNoZWNrZWRDb2xvckNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMub25VbkNoZWNrZWRDb2xvckNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb2xvclN0eWxlQWxsU3RhcnMoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMub25TaXplQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25TaXplQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblNpemVDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblJlYWRPbmx5Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25SZWFkT25seUNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMub25SZWFkT25seUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPyB0aGlzLm1ha2VSZWFkT25seSgpIDogdGhpcy5tYWtlRWRpdGFibGUoKTtcclxuICAgICAgICAvL3RoaXMuYWRkUmVtb3ZlRXZlbnRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNoZWNrZWRjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrZWRDb2xvcjtcclxuICB9XHJcblxyXG4gIGdldCB1bmNoZWNrZWRjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VuQ2hlY2tlZENvbG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgc2l6ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NpemUuY29uY2F0KCghdGhpcy5fc2l6ZS5pbmNsdWRlcyhcInB4XCIpID8gXCJweFwiIDogXCJcIikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLl9yZWFkT25seSkgPT09IFwidHJ1ZVwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsc3RhcnMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90b3RhbFN0YXJzO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHJhdGU6IEV2ZW50RW1pdHRlcjx7IG9sZFZhbHVlOiBudW1iZXIsIG5ld1ZhbHVlOiBudW1iZXIsIHN0YXJSYXRpbmc6IFN0YXJSYXRpbmdDb21wb25lbnQgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9DSEVDS0VEX0NPTE9SKSBzZXQgY2hlY2tlZGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2NoZWNrZWRDb2xvciA9IHZhbHVlO1xyXG4gICAgdGhpcy5fY2hlY2tlZENvbG9yICYmIHRoaXMub25DaGVja2VkQ29sb3JDaGFuZ2UubmV4dCh0aGlzLl9jaGVja2VkQ29sb3IpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX1VOQ0hFQ0tFRF9DT0xPUikgc2V0IHVuY2hlY2tlZGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3VuQ2hlY2tlZENvbG9yID0gdmFsdWU7XHJcbiAgICB0aGlzLl91bkNoZWNrZWRDb2xvciAmJiB0aGlzLm9uVW5DaGVja2VkQ29sb3JDaGFuZ2UubmV4dCh0aGlzLl91bkNoZWNrZWRDb2xvcik7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfVkFMVUUpIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB2YWx1ZSA9ICghdmFsdWUgfHwgdmFsdWUgPT0gbnVsbCkgPyAwIDogdmFsdWU7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdmFsdWUgPj0gMCAmJiB0aGlzLm9uVmFsdWVDaGFuZ2UubmV4dCh0aGlzLl92YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfU0laRSkgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdmFsdWUgPSAoIXZhbHVlIHx8IHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gXCIwcHhcIikgPyBcIjI0cHhcIiA6IHZhbHVlO1xyXG4gICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vblNpemVDaGFuZ2UubmV4dCh0aGlzLl9zaXplKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9SRUFET05MWSkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZWFkT25seSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vblJlYWRPbmx5Q2hhbmdlLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX1RPVEFMU1RBUlMpIHNldCB0b3RhbHN0YXJzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3RvdGFsU3RhcnMgPSB2YWx1ZSA8PSAwID8gNSA6IHZhbHVlO1xyXG4gICAgdGhpcy5vblN0YXJzQ291bnRDaGFuZ2UubmV4dChOdW1iZXIodmFsdWUpKTtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgbWFrZUVkaXRhYmxlKCkge1xyXG4gIC8vICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgLy8gICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMub2ZmU3Rhci5iaW5kKHRoaXMpKTtcclxuICAvLyAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSBcInBvaW50ZXJcIjtcclxuICAvLyAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC50aXRsZSA9IHRoaXMudmFsdWU7XHJcbiAgLy8gICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gIC8vICAgICBzdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vblJhdGUuYmluZCh0aGlzKSk7XHJcbiAgLy8gICAgIHN0YXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMub25TdGFyLmJpbmQodGhpcykpO1xyXG4gIC8vICAgICBzdGFyLnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gIC8vICAgICBzdGFyLnRpdGxlID0gc3Rhci5kYXRhc2V0LmluZGV4O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIG1ha2VFZGl0YWJsZSgpIHtcclxuICAgIGlmICghdGhpcy5tYWluRWxlbWVudCkgcmV0dXJuO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIHN0YXIuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHN0YXIudGl0bGUgPSBzdGFyLmRhdGFzZXQuaW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZVJlYWRPbmx5KCkge1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGl0bGUgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy5zdGFycy5mb3JFYWNoKChzdGFyOiBhbnkpID0+IHtcclxuICAgICAgc3Rhci5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICAgICAgc3Rhci50aXRsZSA9IFwiXCI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgYWRkUmVtb3ZlRXZlbnRzKCkge1xyXG4gIC8vICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAvLyAgICAgdGhpcy5tYWtlUmVhZE9ubHkoKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMubWFrZUVkaXRhYmxlKCk7XHJcbiAgLy8gICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMudmFsdWUpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRFdmVudHMoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFpbkVsZW1lbnQpIHJldHVybjtcclxuICAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5vZmZTdGFyLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIHN0YXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uUmF0ZS5iaW5kKHRoaXMpKTtcclxuICAgICAgc3Rhci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5vblN0YXIuYmluZCh0aGlzKSk7XHJcbiAgICAgIHN0YXIuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHN0YXIudGl0bGUgPSBzdGFyLmRhdGFzZXQuaW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgbGV0IHN0YXI6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnNyY0VsZW1lbnQ7XHJcbiAgICBsZXQgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy52YWx1ZSA9IHBhcnNlSW50KHN0YXIuZGF0YXNldC5pbmRleCk7XHJcbiAgICBpZiAodGhpcy52YWx1ZSA9PSAwKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSAxO1xyXG4gICAgfVxyXG4gICAgbGV0IHJhdGVWYWx1ZXMgPSB7IG9sZFZhbHVlOiBvbGRWYWx1ZSwgbmV3VmFsdWU6IHRoaXMudmFsdWUsIHN0YXJSYXRpbmc6IHRoaXMgfTtcclxuICAgIHRoaXMucmF0ZS5lbWl0KHJhdGVWYWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblN0YXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSByZXR1cm47XHJcbiAgICBsZXQgc3RhcjogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+ZXZlbnQuc3JjRWxlbWVudDtcclxuICAgIGxldCBjdXJyZW50SW5kZXggPSBwYXJzZUludChzdGFyLmRhdGFzZXQuaW5kZXgpO1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjdXJyZW50SW5kZXg7IGluZGV4KyspIHtcclxuICAgICAgdGhpcy5zdGFyc1tpbmRleF0uY2xhc3NOYW1lID0gXCJcIjtcclxuICAgICAgdGhpcy5hZGREZWZhdWx0Q2xhc3ModGhpcy5zdGFyc1tpbmRleF0pO1xyXG4gICAgICB0aGlzLmFkZENoZWNrZWRTdGFyQ2xhc3ModGhpcy5zdGFyc1tpbmRleF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gY3VycmVudEluZGV4OyBpbmRleCA8IHRoaXMuc3RhcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuc3RhcnNbaW5kZXhdLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuYWRkRGVmYXVsdENsYXNzKHRoaXMuc3RhcnNbaW5kZXhdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb2ZmU3RhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5nZW5lcmF0ZVJhdGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGREZWZhdWx0Q2xhc3Moc3RhcjogYW55KSB7XHJcbiAgICBzdGFyLmNsYXNzTGlzdC5hZGQoU3RhclJhdGluZ0NvbXBvbmVudC5DTFNfREVGQVVMVF9TVEFSKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ2hlY2tlZFN0YXJDbGFzcyhzdGFyOiBhbnkpIHtcclxuICAgIHN0YXIuY2xhc3NMaXN0LmFkZChTdGFyUmF0aW5nQ29tcG9uZW50LkNMU19DSEVDS0VEX1NUQVIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRIYWxmU3RhckNsYXNzKHN0YXI6IGFueSkge1xyXG4gICAgc3Rhci5jbGFzc0xpc3QuYWRkKFN0YXJSYXRpbmdDb21wb25lbnQuQ0xTX0hBTEZfU1RBUik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXJzKCkge1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICBsZXQgc3RhckNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgPSB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBsZXQgbWF4U3RhcnMgPSBbLi4uQXJyYXkoTnVtYmVyKHRoaXMudG90YWxzdGFycykpLmtleXMoKV07XHJcbiAgICB0aGlzLnN0YXJzLmxlbmd0aCA9IDA7XHJcbiAgICBzdGFyQ29udGFpbmVyLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICBtYXhTdGFycy5mb3JFYWNoKHN0YXJOdW1iZXIgPT4ge1xyXG4gICAgICBsZXQgc3RhckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xyXG4gICAgICBzdGFyRWxlbWVudC5kYXRhc2V0LmluZGV4ID0gKHN0YXJOdW1iZXIgKyAxKS50b1N0cmluZygpO1xyXG4gICAgICBzdGFyRWxlbWVudC50aXRsZSA9IHN0YXJFbGVtZW50LmRhdGFzZXQuaW5kZXg7XHJcbiAgICAgIHN0YXJDb250YWluZXIuYXBwZW5kQ2hpbGQoc3RhckVsZW1lbnQpO1xyXG4gICAgICB0aGlzLnN0YXJzLnB1c2goc3RhckVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5U2l6ZUFsbFN0YXJzKCkge1xyXG4gICAgaWYgKHRoaXMuX3NpemUpIHtcclxuICAgICAgdGhpcy5zdGFycy5sZW5ndGggPT0gMCAmJiB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gY29uc3QgbmV3U2l6ZSA9IHRoaXMuX3NpemUubWF0Y2goL1xcZCsvKVswXTtcclxuICAgICAgICAvLyBsZXQgaGFsZlNpemUgPSBwYXJzZUludChuZXdTaXplLCAxMCkgLyAyO1xyXG4gICAgICAgIC8vIGxldCBoYWxmTWFyZ2luID0gMCAtIHBhcnNlSW50KG5ld1NpemUsIDEwKTsgICAgICAgIFxyXG4gICAgICAgIGxldCBuZXdTaXplID0gdGhpcy5zaXplLm1hdGNoKC9cXGQrLylbMF07XHJcbiAgICAgICAgbGV0IGhhbGZTaXplID0gKHBhcnNlSW50KG5ld1NpemUpICogMTApIC8gMjQ7XHJcbiAgICAgICAgbGV0IGhhbGZNYXJnaW4gPSAwIC0gKChwYXJzZUludChuZXdTaXplKSAqIDIwKSAvIDI0KTtcclxuICAgICAgICBzdGFyLnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX1NJWkUsIHRoaXMuc2l6ZSk7XHJcbiAgICAgICAgaWYgKHN0YXIuY2xhc3NMaXN0LmNvbnRhaW5zKFN0YXJSYXRpbmdDb21wb25lbnQuQ0xTX0hBTEZfU1RBUikpIHtcclxuICAgICAgICAgIHN0YXIuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfSEFMRl9XSURUSCwgYCR7aGFsZlNpemV9cHhgKTtcclxuICAgICAgICAgIHN0YXIuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfSEFMRl9NQVJHSU4sIGAke2hhbGZNYXJnaW59cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbG9yU3R5bGVBbGxTdGFycyhzZXRDaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0YXJzLmxlbmd0aCA9PSAwICYmIHRoaXMuc2V0U3RhcnMoKTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChzZXRDaGVja2VkKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNoZWNrZWRDb2xvclN0eWxlKHN0YXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXBwbHlVbkNoZWNrZWRDb2xvclN0eWxlKHN0YXIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb2xvclN0eWxlKHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpIHtcclxuICAgIHRoaXMuYXBwbHlDaGVja2VkQ29sb3JTdHlsZShzdGFyRWxlbWVudCk7XHJcbiAgICB0aGlzLmFwcGx5VW5DaGVja2VkQ29sb3JTdHlsZShzdGFyRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCkge1xyXG4gICAgc3RhckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfQ0hFQ0tFRF9DT0xPUiwgdGhpcy5jaGVja2VkY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVVuQ2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCkge1xyXG4gICAgc3RhckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfVU5DSEVDS0VEX0NPTE9SLCB0aGlzLnVuY2hlY2tlZGNvbG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVSYXRpbmcoZm9yY2VHZW5lcmF0ZTpib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5ICYmICFmb3JjZUdlbmVyYXRlKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMubWFpbkVsZW1lbnQpIHJldHVybjtcclxuICAgIHRoaXMuc3RhcnMubGVuZ3RoID09IDAgJiYgdGhpcy5zZXRTdGFycygpO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPj0gMCkge1xyXG4gICAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGl0bGUgPSB0aGlzLnZhbHVlO1xyXG5cclxuICAgICAgbGV0IGhhc0RlY2ltYWxzOiBib29sZWFuID1cclxuICAgICAgICAoKE51bWJlci5wYXJzZUZsb2F0KHRoaXMudmFsdWUudG9TdHJpbmcoKSkgJSAxKVxyXG4gICAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAgIC5zdWJzdHJpbmcoMywgMikpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IGkgPSAxO1xyXG4gICAgICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXIuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgICAgICB0aGlzLmFwcGx5Q29sb3JTdHlsZShzdGFyKTtcclxuICAgICAgICB0aGlzLmFkZERlZmF1bHRDbGFzcyhzdGFyKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPj0gaSkge1xyXG4gICAgICAgICAgLy8gc3RhciBvblxyXG4gICAgICAgICAgdGhpcy5hZGRDaGVja2VkU3RhckNsYXNzKHN0YXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBoYWxmIHN0YXJcclxuICAgICAgICAgIGlmIChoYXNEZWNpbWFscykge1xyXG4gICAgICAgICAgICB0aGlzLmFkZEhhbGZTdGFyQ2xhc3Moc3Rhcik7XHJcbiAgICAgICAgICAgIGhhc0RlY2ltYWxzID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkrKztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -18,3 +18,4 @@ import { __decorate, __metadata, __read, __spread } from "tslib";

_this.applyColorStyleAllStars(false);
_this.addRemoveEvents();
_this.addEvents();
//this.addRemoveEvents();
});

@@ -50,3 +51,4 @@ }

this.onReadOnlyChange.subscribe(function () {
_this.addRemoveEvents();
_this.readonly ? _this.makeReadOnly() : _this.makeEditable();
//this.addRemoveEvents();
});

@@ -124,12 +126,20 @@ }

});
// private makeEditable() {
// if (!this.mainElement) return;
// this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
// this.mainElement.nativeElement.style.cursor = "pointer";
// this.mainElement.nativeElement.title = this.value;
// this.stars.forEach((star: any) => {
// star.addEventListener('click', this.onRate.bind(this));
// star.addEventListener('mouseenter', this.onStar.bind(this));
// star.style.cursor = "pointer";
// star.title = star.dataset.index;
// });
// }
StarRatingComponent.prototype.makeEditable = function () {
var _this = this;
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach(function (star) {
star.addEventListener('click', _this.onRate.bind(_this));
star.addEventListener('mouseenter', _this.onStar.bind(_this));
star.style.cursor = "pointer";

@@ -149,10 +159,23 @@ star.title = star.dataset.index;

};
StarRatingComponent.prototype.addRemoveEvents = function () {
if (this.readonly) {
this.makeReadOnly();
}
else {
this.makeEditable();
this.onValueChange.next(this.value);
}
// private addRemoveEvents() {
// if (this.readonly) {
// this.makeReadOnly();
// } else {
// this.makeEditable();
// this.onValueChange.next(this.value);
// }
// }
StarRatingComponent.prototype.addEvents = function () {
var _this = this;
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach(function (star) {
star.addEventListener('click', _this.onRate.bind(_this));
star.addEventListener('mouseenter', _this.onStar.bind(_this));
star.style.cursor = "pointer";
star.title = star.dataset.index;
});
};

@@ -355,2 +378,2 @@ StarRatingComponent.prototype.ngAfterViewInit = function () {

export { StarRatingComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1yYXRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctc3RhcnJhdGluZy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3Rhci1yYXRpbmcvc3Rhci1yYXRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFDdEQsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTL0I7SUFrQ0U7UUFBQSxpQkErQ0M7UUFoRk8sVUFBSyxHQUFtQixFQUFFLENBQUM7UUFNM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQWtHdEIsU0FBSSxHQUEwRixJQUFJLFlBQVksRUFBRSxDQUFDO1FBeEV6SCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLEtBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsS0FBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsS0FBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsS0FBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFT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LENBQUMscUJBQW1CLENBQUMsaUJBQWlCLENBQUM7OzsyREFHNUM7SUFFK0M7UUFBL0MsS0FBSyxDQUFDLHFCQUFtQixDQUFDLG1CQUFtQixDQUFDOzs7NkRBRzlDO0lBRXFDO1FBQXJDLEtBQUssQ0FBQyxxQkFBbUIsQ0FBQyxTQUFTLENBQUM7OztvREFJcEM7SUFFb0M7UUFBcEMsS0FBSyxDQUFDLHFCQUFtQixDQUFDLFFBQVEsQ0FBQzs7O21EQUluQztJQUV3QztRQUF4QyxLQUFLLENBQUMscUJBQW1CLENBQUMsWUFBWSxDQUFDOzs7dURBR3ZDO0lBRTBDO1FBQTFDLEtBQUssQ0FBQyxxQkFBbUIsQ0FBQyxjQUFjLENBQUM7Ozt5REFHekM7SUEzSVUsbUJBQW1CO1FBUC9CLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLGdxQkFBMkM7WUFFM0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLFNBQVM7O1NBQzNDLENBQUM7O09BRVcsbUJBQW1CLENBdVQvQjtJQUFELDBCQUFDO0NBQUEsQUF2VEQsSUF1VEM7U0F2VFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFxyXG4gIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdGFyLXJhdGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItcmF0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdGFyLXJhdGluZy5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU3RhclJhdGluZ0NvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBzdGFyczogQXJyYXk8RWxlbWVudD4gPSBbXTtcclxuICBcclxuICBwcml2YXRlIF9jaGVja2VkQ29sb3I6IHN0cmluZztcclxuICBwcml2YXRlIF91bkNoZWNrZWRDb2xvcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsU3RhcnM6IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBvblN0YXJzQ291bnRDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblVuQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPjtcclxuICBwcml2YXRlIG9uUmVhZE9ubHlDaGFuZ2U6IFN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9DSEVDS0VEX0NPTE9SOiBzdHJpbmcgPSAnLS1jaGVja2VkQ29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICctLXVuQ2hlY2tlZENvbG9yJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBWQVJfU0laRTogc3RyaW5nID0gJy0tc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfV0lEVEg6IHN0cmluZyA9ICctLWhhbGZXaWR0aCc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfTUFSR0lOOiBzdHJpbmcgPSAnLS1oYWxmTWFyZ2luJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfQ0hFQ0tFRF9TVEFSOiBzdHJpbmcgPSAnb24nO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENMU19ERUZBVUxUX1NUQVI6IHN0cmluZyA9ICdzdGFyJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfSEFMRl9TVEFSOiBzdHJpbmcgPSAnaGFsZic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX0NIRUNLRURfQ09MT1I6IHN0cmluZyA9ICdjaGVja2VkY29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICd1bmNoZWNrZWRjb2xvcic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1ZBTFVFOiBzdHJpbmcgPSAndmFsdWUnO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9TSVpFOiBzdHJpbmcgPSAnc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1JFQURPTkxZOiBzdHJpbmcgPSAncmVhZG9ubHknO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9UT1RBTFNUQVJTOiBzdHJpbmcgPSAndG90YWxzdGFycyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3N0YXJNYWluJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBtYWluRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAoIXRoaXMub25TdGFyc0NvdW50Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25TdGFyc0NvdW50Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblN0YXJzQ291bnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJhdGluZyh0cnVlKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5hZGRSZW1vdmVFdmVudHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uVmFsdWVDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJhdGluZygpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlTaXplQWxsU3RhcnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uQ2hlY2tlZENvbG9yQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25DaGVja2VkQ29sb3JDaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLm9uQ2hlY2tlZENvbG9yQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyh0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uVW5DaGVja2VkQ29sb3JDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblVuQ2hlY2tlZENvbG9yQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblVuQ2hlY2tlZENvbG9yQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyhmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblNpemVDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblNpemVDaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICB0aGlzLm9uU2l6ZUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlTaXplQWxsU3RhcnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9uUmVhZE9ubHlDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5vblJlYWRPbmx5Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblJlYWRPbmx5Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRSZW1vdmVFdmVudHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2hlY2tlZGNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tlZENvbG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVuY2hlY2tlZGNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdW5DaGVja2VkQ29sb3I7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBzaXplKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2l6ZS5jb25jYXQoKCF0aGlzLl9zaXplLmluY2x1ZGVzKFwicHhcIikgPyBcInB4XCIgOiBcIlwiKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuX3JlYWRPbmx5KSA9PT0gXCJ0cnVlXCI7XHJcbiAgfVxyXG5cclxuICBnZXQgdG90YWxzdGFycygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsU3RhcnM7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcmF0ZTogRXZlbnRFbWl0dGVyPHsgb2xkVmFsdWU6IG51bWJlciwgbmV3VmFsdWU6IG51bWJlciwgc3RhclJhdGluZzogU3RhclJhdGluZ0NvbXBvbmVudCB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX0NIRUNLRURfQ09MT1IpIHNldCBjaGVja2VkY29sb3IodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY2hlY2tlZENvbG9yID0gdmFsdWU7XHJcbiAgICB0aGlzLl9jaGVja2VkQ29sb3IgJiYgdGhpcy5vbkNoZWNrZWRDb2xvckNoYW5nZS5uZXh0KHRoaXMuX2NoZWNrZWRDb2xvcik7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfVU5DSEVDS0VEX0NPTE9SKSBzZXQgdW5jaGVja2VkY29sb3IodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdW5DaGVja2VkQ29sb3IgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3VuQ2hlY2tlZENvbG9yICYmIHRoaXMub25VbkNoZWNrZWRDb2xvckNoYW5nZS5uZXh0KHRoaXMuX3VuQ2hlY2tlZENvbG9yKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9WQUxVRSkgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHZhbHVlID0gKCF2YWx1ZSB8fCB2YWx1ZSA9PSBudWxsKSA/IDAgOiB2YWx1ZTtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLl92YWx1ZSA+PSAwICYmIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMuX3ZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9TSVpFKSBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB2YWx1ZSA9ICghdmFsdWUgfHwgdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSBcIjBweFwiKSA/IFwiMjRweFwiIDogdmFsdWU7XHJcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uU2l6ZUNoYW5nZS5uZXh0KHRoaXMuX3NpemUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX1JFQURPTkxZKSBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlYWRPbmx5ID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uUmVhZE9ubHlDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfVE9UQUxTVEFSUykgc2V0IHRvdGFsc3RhcnModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdG90YWxTdGFycyA9IHZhbHVlIDw9IDAgPyA1IDogdmFsdWU7XHJcbiAgICB0aGlzLm9uU3RhcnNDb3VudENoYW5nZS5uZXh0KE51bWJlcih2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYWtlRWRpdGFibGUoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFpbkVsZW1lbnQpIHJldHVybjtcclxuICAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5vZmZTdGFyLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIHN0YXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uUmF0ZS5iaW5kKHRoaXMpKTtcclxuICAgICAgc3Rhci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5vblN0YXIuYmluZCh0aGlzKSk7XHJcbiAgICAgIHN0YXIuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHN0YXIudGl0bGUgPSBzdGFyLmRhdGFzZXQuaW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZVJlYWRPbmx5KCkge1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGl0bGUgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy5zdGFycy5mb3JFYWNoKChzdGFyOiBhbnkpID0+IHtcclxuICAgICAgc3Rhci5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICAgICAgc3Rhci50aXRsZSA9IFwiXCI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUmVtb3ZlRXZlbnRzKCkge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgdGhpcy5tYWtlUmVhZE9ubHkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWFrZUVkaXRhYmxlKCk7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUmF0ZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHJldHVybjtcclxuICAgIGxldCBzdGFyOiBIVE1MRWxlbWVudCA9IDxIVE1MRWxlbWVudD5ldmVudC5zcmNFbGVtZW50O1xyXG4gICAgbGV0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMudmFsdWUgPSBwYXJzZUludChzdGFyLmRhdGFzZXQuaW5kZXgpO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPT0gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gMTtcclxuICAgIH1cclxuICAgIGxldCByYXRlVmFsdWVzID0geyBvbGRWYWx1ZTogb2xkVmFsdWUsIG5ld1ZhbHVlOiB0aGlzLnZhbHVlLCBzdGFyUmF0aW5nOiB0aGlzIH07XHJcbiAgICB0aGlzLnJhdGUuZW1pdChyYXRlVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25TdGFyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgbGV0IHN0YXI6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnNyY0VsZW1lbnQ7XHJcbiAgICBsZXQgY3VycmVudEluZGV4ID0gcGFyc2VJbnQoc3Rhci5kYXRhc2V0LmluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY3VycmVudEluZGV4OyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuc3RhcnNbaW5kZXhdLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuYWRkRGVmYXVsdENsYXNzKHRoaXMuc3RhcnNbaW5kZXhdKTtcclxuICAgICAgdGhpcy5hZGRDaGVja2VkU3RhckNsYXNzKHRoaXMuc3RhcnNbaW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IGN1cnJlbnRJbmRleDsgaW5kZXggPCB0aGlzLnN0YXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0aGlzLnN0YXJzW2luZGV4XS5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgICB0aGlzLmFkZERlZmF1bHRDbGFzcyh0aGlzLnN0YXJzW2luZGV4XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9mZlN0YXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVSYXRpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRGVmYXVsdENsYXNzKHN0YXI6IGFueSkge1xyXG4gICAgc3Rhci5jbGFzc0xpc3QuYWRkKFN0YXJSYXRpbmdDb21wb25lbnQuQ0xTX0RFRkFVTFRfU1RBUik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENoZWNrZWRTdGFyQ2xhc3Moc3RhcjogYW55KSB7XHJcbiAgICBzdGFyLmNsYXNzTGlzdC5hZGQoU3RhclJhdGluZ0NvbXBvbmVudC5DTFNfQ0hFQ0tFRF9TVEFSKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkSGFsZlN0YXJDbGFzcyhzdGFyOiBhbnkpIHtcclxuICAgIHN0YXIuY2xhc3NMaXN0LmFkZChTdGFyUmF0aW5nQ29tcG9uZW50LkNMU19IQUxGX1NUQVIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTdGFycygpIHtcclxuICAgIGlmICghdGhpcy5tYWluRWxlbWVudCkgcmV0dXJuO1xyXG4gICAgbGV0IHN0YXJDb250YWluZXI6IEhUTUxEaXZFbGVtZW50ID0gdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IG1heFN0YXJzID0gWy4uLkFycmF5KE51bWJlcih0aGlzLnRvdGFsc3RhcnMpKS5rZXlzKCldO1xyXG4gICAgdGhpcy5zdGFycy5sZW5ndGggPSAwO1xyXG4gICAgc3RhckNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgbWF4U3RhcnMuZm9yRWFjaChzdGFyTnVtYmVyID0+IHtcclxuICAgICAgbGV0IHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcclxuICAgICAgc3RhckVsZW1lbnQuZGF0YXNldC5pbmRleCA9IChzdGFyTnVtYmVyICsgMSkudG9TdHJpbmcoKTtcclxuICAgICAgc3RhckVsZW1lbnQudGl0bGUgPSBzdGFyRWxlbWVudC5kYXRhc2V0LmluZGV4O1xyXG4gICAgICBzdGFyQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0YXJFbGVtZW50KTtcclxuICAgICAgdGhpcy5zdGFycy5wdXNoKHN0YXJFbGVtZW50KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVNpemVBbGxTdGFycygpIHtcclxuICAgIGlmICh0aGlzLl9zaXplKSB7XHJcbiAgICAgIHRoaXMuc3RhcnMubGVuZ3RoID09IDAgJiYgdGhpcy5zZXRTdGFycygpO1xyXG4gICAgICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIGNvbnN0IG5ld1NpemUgPSB0aGlzLl9zaXplLm1hdGNoKC9cXGQrLylbMF07XHJcbiAgICAgICAgLy8gbGV0IGhhbGZTaXplID0gcGFyc2VJbnQobmV3U2l6ZSwgMTApIC8gMjtcclxuICAgICAgICAvLyBsZXQgaGFsZk1hcmdpbiA9IDAgLSBwYXJzZUludChuZXdTaXplLCAxMCk7ICAgICAgICBcclxuICAgICAgICBsZXQgbmV3U2l6ZSA9IHRoaXMuc2l6ZS5tYXRjaCgvXFxkKy8pWzBdO1xyXG4gICAgICAgIGxldCBoYWxmU2l6ZSA9IChwYXJzZUludChuZXdTaXplKSAqIDEwKSAvIDI0O1xyXG4gICAgICAgIGxldCBoYWxmTWFyZ2luID0gMCAtICgocGFyc2VJbnQobmV3U2l6ZSkgKiAyMCkgLyAyNCk7XHJcbiAgICAgICAgc3Rhci5zdHlsZS5zZXRQcm9wZXJ0eShTdGFyUmF0aW5nQ29tcG9uZW50LlZBUl9TSVpFLCB0aGlzLnNpemUpO1xyXG4gICAgICAgIGlmIChzdGFyLmNsYXNzTGlzdC5jb250YWlucyhTdGFyUmF0aW5nQ29tcG9uZW50LkNMU19IQUxGX1NUQVIpKSB7XHJcbiAgICAgICAgICBzdGFyLnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX0hBTEZfV0lEVEgsIGAke2hhbGZTaXplfXB4YCk7XHJcbiAgICAgICAgICBzdGFyLnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX0hBTEZfTUFSR0lOLCBgJHtoYWxmTWFyZ2lufXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb2xvclN0eWxlQWxsU3RhcnMoc2V0Q2hlY2tlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zdGFycy5sZW5ndGggPT0gMCAmJiB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoc2V0Q2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDaGVja2VkQ29sb3JTdHlsZShzdGFyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFwcGx5VW5DaGVja2VkQ29sb3JTdHlsZShzdGFyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q29sb3JTdHlsZShzdGFyRWxlbWVudDogSFRNTFNwYW5FbGVtZW50KSB7XHJcbiAgICB0aGlzLmFwcGx5Q2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQpO1xyXG4gICAgdGhpcy5hcHBseVVuQ2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNoZWNrZWRDb2xvclN0eWxlKHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpIHtcclxuICAgIHN0YXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX0NIRUNLRURfQ09MT1IsIHRoaXMuY2hlY2tlZGNvbG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlVbkNoZWNrZWRDb2xvclN0eWxlKHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpIHtcclxuICAgIHN0YXJFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX1VOQ0hFQ0tFRF9DT0xPUiwgdGhpcy51bmNoZWNrZWRjb2xvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlUmF0aW5nKGZvcmNlR2VuZXJhdGU6Ym9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSAmJiAhZm9yY2VHZW5lcmF0ZSkgcmV0dXJuO1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICB0aGlzLnN0YXJzLmxlbmd0aCA9PSAwICYmIHRoaXMuc2V0U3RhcnMoKTtcclxuICAgIGlmICh0aGlzLnZhbHVlID49IDApIHtcclxuICAgICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuXHJcbiAgICAgIGxldCBoYXNEZWNpbWFsczogYm9vbGVhbiA9XHJcbiAgICAgICAgKChOdW1iZXIucGFyc2VGbG9hdCh0aGlzLnZhbHVlLnRvU3RyaW5nKCkpICUgMSlcclxuICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAuc3Vic3RyaW5nKDMsIDIpKSA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICAgIGxldCBpID0gMTtcclxuICAgICAgdGhpcy5zdGFycy5mb3JFYWNoKChzdGFyOiBhbnkpID0+IHtcclxuICAgICAgICBzdGFyLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGUoc3Rhcik7XHJcbiAgICAgICAgdGhpcy5hZGREZWZhdWx0Q2xhc3Moc3Rhcik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlID49IGkpIHtcclxuICAgICAgICAgIC8vIHN0YXIgb25cclxuICAgICAgICAgIHRoaXMuYWRkQ2hlY2tlZFN0YXJDbGFzcyhzdGFyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gaGFsZiBzdGFyXHJcbiAgICAgICAgICBpZiAoaGFzRGVjaW1hbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRIYWxmU3RhckNsYXNzKHN0YXIpO1xyXG4gICAgICAgICAgICBoYXNEZWNpbWFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpKys7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1yYXRpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctc3RhcnJhdGluZy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3Rhci1yYXRpbmcvc3Rhci1yYXRpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFDdEQsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTL0I7SUFrQ0U7UUFBQSxpQkFpREM7UUFsRk8sVUFBSyxHQUFtQixFQUFFLENBQUM7UUFNM0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQW9HdEIsU0FBSSxHQUEwRixJQUFJLFlBQVksRUFBRSxDQUFDO1FBMUV6SCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLEtBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsS0FBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUIsS0FBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQix5QkFBeUI7WUFDM0IsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMs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QixDQUFDLFNBQVM7O1NBQzNDLENBQUM7O09BRVcsbUJBQW1CLENBaVYvQjtJQUFELDBCQUFDO0NBQUEsQUFqVkQsSUFpVkM7U0FqVlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFxyXG4gIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzdGFyLXJhdGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItcmF0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdGFyLXJhdGluZy5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU3RhclJhdGluZ0NvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBzdGFyczogQXJyYXk8RWxlbWVudD4gPSBbXTtcclxuICBcclxuICBwcml2YXRlIF9jaGVja2VkQ29sb3I6IHN0cmluZztcclxuICBwcml2YXRlIF91bkNoZWNrZWRDb2xvcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsU3RhcnM6IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBvblN0YXJzQ291bnRDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uVmFsdWVDaGFuZ2U6IFN1YmplY3Q8bnVtYmVyPjtcclxuICBwcml2YXRlIG9uQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblVuQ2hlY2tlZENvbG9yQ2hhbmdlOiBTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPjtcclxuICBwcml2YXRlIG9uUmVhZE9ubHlDaGFuZ2U6IFN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9DSEVDS0VEX0NPTE9SOiBzdHJpbmcgPSAnLS1jaGVja2VkQ29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFZBUl9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICctLXVuQ2hlY2tlZENvbG9yJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBWQVJfU0laRTogc3RyaW5nID0gJy0tc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfV0lEVEg6IHN0cmluZyA9ICctLWhhbGZXaWR0aCc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFSX0hBTEZfTUFSR0lOOiBzdHJpbmcgPSAnLS1oYWxmTWFyZ2luJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfQ0hFQ0tFRF9TVEFSOiBzdHJpbmcgPSAnb24nO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENMU19ERUZBVUxUX1NUQVI6IHN0cmluZyA9ICdzdGFyJztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBDTFNfSEFMRl9TVEFSOiBzdHJpbmcgPSAnaGFsZic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX0NIRUNLRURfQ09MT1I6IHN0cmluZyA9ICdjaGVja2VkY29sb3InO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9VTkNIRUNLRURfQ09MT1I6IHN0cmluZyA9ICd1bmNoZWNrZWRjb2xvcic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1ZBTFVFOiBzdHJpbmcgPSAndmFsdWUnO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9TSVpFOiBzdHJpbmcgPSAnc2l6ZSc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5QX1JFQURPTkxZOiBzdHJpbmcgPSAncmVhZG9ubHknO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IElOUF9UT1RBTFNUQVJTOiBzdHJpbmcgPSAndG90YWxzdGFycyc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3N0YXJNYWluJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBtYWluRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAoIXRoaXMub25TdGFyc0NvdW50Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25TdGFyc0NvdW50Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblN0YXJzQ291bnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJhdGluZyh0cnVlKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yU3R5bGVBbGxTdGFycyhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudHMoKTtcclxuICAgICAgICAvL3RoaXMuYWRkUmVtb3ZlRXZlbnRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblZhbHVlQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVSYXRpbmcoKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vbkNoZWNrZWRDb2xvckNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uQ2hlY2tlZENvbG9yQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vbkNoZWNrZWRDb2xvckNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb2xvclN0eWxlQWxsU3RhcnModHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblVuQ2hlY2tlZENvbG9yQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25VbkNoZWNrZWRDb2xvckNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMub25VbkNoZWNrZWRDb2xvckNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb2xvclN0eWxlQWxsU3RhcnMoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMub25TaXplQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25TaXplQ2hhbmdlID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgdGhpcy5vblNpemVDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmFwcGx5U2l6ZUFsbFN0YXJzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5vblJlYWRPbmx5Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25SZWFkT25seUNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgIHRoaXMub25SZWFkT25seUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPyB0aGlzLm1ha2VSZWFkT25seSgpIDogdGhpcy5tYWtlRWRpdGFibGUoKTtcclxuICAgICAgICAvL3RoaXMuYWRkUmVtb3ZlRXZlbnRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNoZWNrZWRjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrZWRDb2xvcjtcclxuICB9XHJcblxyXG4gIGdldCB1bmNoZWNrZWRjb2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VuQ2hlY2tlZENvbG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgc2l6ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NpemUuY29uY2F0KCghdGhpcy5fc2l6ZS5pbmNsdWRlcyhcInB4XCIpID8gXCJweFwiIDogXCJcIikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLl9yZWFkT25seSkgPT09IFwidHJ1ZVwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRvdGFsc3RhcnMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90b3RhbFN0YXJzO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHJhdGU6IEV2ZW50RW1pdHRlcjx7IG9sZFZhbHVlOiBudW1iZXIsIG5ld1ZhbHVlOiBudW1iZXIsIHN0YXJSYXRpbmc6IFN0YXJSYXRpbmdDb21wb25lbnQgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9DSEVDS0VEX0NPTE9SKSBzZXQgY2hlY2tlZGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2NoZWNrZWRDb2xvciA9IHZhbHVlO1xyXG4gICAgdGhpcy5fY2hlY2tlZENvbG9yICYmIHRoaXMub25DaGVja2VkQ29sb3JDaGFuZ2UubmV4dCh0aGlzLl9jaGVja2VkQ29sb3IpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX1VOQ0hFQ0tFRF9DT0xPUikgc2V0IHVuY2hlY2tlZGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3VuQ2hlY2tlZENvbG9yID0gdmFsdWU7XHJcbiAgICB0aGlzLl91bkNoZWNrZWRDb2xvciAmJiB0aGlzLm9uVW5DaGVja2VkQ29sb3JDaGFuZ2UubmV4dCh0aGlzLl91bkNoZWNrZWRDb2xvcik7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfVkFMVUUpIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB2YWx1ZSA9ICghdmFsdWUgfHwgdmFsdWUgPT0gbnVsbCkgPyAwIDogdmFsdWU7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fdmFsdWUgPj0gMCAmJiB0aGlzLm9uVmFsdWVDaGFuZ2UubmV4dCh0aGlzLl92YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoU3RhclJhdGluZ0NvbXBvbmVudC5JTlBfU0laRSkgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdmFsdWUgPSAoIXZhbHVlIHx8IHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gXCIwcHhcIikgPyBcIjI0cHhcIiA6IHZhbHVlO1xyXG4gICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vblNpemVDaGFuZ2UubmV4dCh0aGlzLl9zaXplKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dChTdGFyUmF0aW5nQ29tcG9uZW50LklOUF9SRUFET05MWSkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZWFkT25seSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vblJlYWRPbmx5Q2hhbmdlLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFN0YXJSYXRpbmdDb21wb25lbnQuSU5QX1RPVEFMU1RBUlMpIHNldCB0b3RhbHN0YXJzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3RvdGFsU3RhcnMgPSB2YWx1ZSA8PSAwID8gNSA6IHZhbHVlO1xyXG4gICAgdGhpcy5vblN0YXJzQ291bnRDaGFuZ2UubmV4dChOdW1iZXIodmFsdWUpKTtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgbWFrZUVkaXRhYmxlKCkge1xyXG4gIC8vICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgLy8gICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMub2ZmU3Rhci5iaW5kKHRoaXMpKTtcclxuICAvLyAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSBcInBvaW50ZXJcIjtcclxuICAvLyAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC50aXRsZSA9IHRoaXMudmFsdWU7XHJcbiAgLy8gICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gIC8vICAgICBzdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vblJhdGUuYmluZCh0aGlzKSk7XHJcbiAgLy8gICAgIHN0YXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMub25TdGFyLmJpbmQodGhpcykpO1xyXG4gIC8vICAgICBzdGFyLnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gIC8vICAgICBzdGFyLnRpdGxlID0gc3Rhci5kYXRhc2V0LmluZGV4O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIG1ha2VFZGl0YWJsZSgpIHtcclxuICAgIGlmICghdGhpcy5tYWluRWxlbWVudCkgcmV0dXJuO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIHN0YXIuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHN0YXIudGl0bGUgPSBzdGFyLmRhdGFzZXQuaW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZVJlYWRPbmx5KCkge1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGl0bGUgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy5zdGFycy5mb3JFYWNoKChzdGFyOiBhbnkpID0+IHtcclxuICAgICAgc3Rhci5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICAgICAgc3Rhci50aXRsZSA9IFwiXCI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgYWRkUmVtb3ZlRXZlbnRzKCkge1xyXG4gIC8vICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAvLyAgICAgdGhpcy5tYWtlUmVhZE9ubHkoKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMubWFrZUVkaXRhYmxlKCk7XHJcbiAgLy8gICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMudmFsdWUpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRFdmVudHMoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFpbkVsZW1lbnQpIHJldHVybjtcclxuICAgIHRoaXMubWFpbkVsZW1lbnQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5vZmZTdGFyLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IFwicG9pbnRlclwiO1xyXG4gICAgdGhpcy5tYWluRWxlbWVudC5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIHN0YXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uUmF0ZS5iaW5kKHRoaXMpKTtcclxuICAgICAgc3Rhci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5vblN0YXIuYmluZCh0aGlzKSk7XHJcbiAgICAgIHN0YXIuc3R5bGUuY3Vyc29yID0gXCJwb2ludGVyXCI7XHJcbiAgICAgIHN0YXIudGl0bGUgPSBzdGFyLmRhdGFzZXQuaW5kZXg7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25SYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgbGV0IHN0YXI6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnNyY0VsZW1lbnQ7XHJcbiAgICBsZXQgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy52YWx1ZSA9IHBhcnNlSW50KHN0YXIuZGF0YXNldC5pbmRleCk7XHJcbiAgICBpZiAodGhpcy52YWx1ZSA9PSAwKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSAxO1xyXG4gICAgfVxyXG4gICAgbGV0IHJhdGVWYWx1ZXMgPSB7IG9sZFZhbHVlOiBvbGRWYWx1ZSwgbmV3VmFsdWU6IHRoaXMudmFsdWUsIHN0YXJSYXRpbmc6IHRoaXMgfTtcclxuICAgIHRoaXMucmF0ZS5lbWl0KHJhdGVWYWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblN0YXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSByZXR1cm47XHJcbiAgICBsZXQgc3RhcjogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+ZXZlbnQuc3JjRWxlbWVudDtcclxuICAgIGxldCBjdXJyZW50SW5kZXggPSBwYXJzZUludChzdGFyLmRhdGFzZXQuaW5kZXgpO1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjdXJyZW50SW5kZXg7IGluZGV4KyspIHtcclxuICAgICAgdGhpcy5zdGFyc1tpbmRleF0uY2xhc3NOYW1lID0gXCJcIjtcclxuICAgICAgdGhpcy5hZGREZWZhdWx0Q2xhc3ModGhpcy5zdGFyc1tpbmRleF0pO1xyXG4gICAgICB0aGlzLmFkZENoZWNrZWRTdGFyQ2xhc3ModGhpcy5zdGFyc1tpbmRleF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gY3VycmVudEluZGV4OyBpbmRleCA8IHRoaXMuc3RhcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuc3RhcnNbaW5kZXhdLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuYWRkRGVmYXVsdENsYXNzKHRoaXMuc3RhcnNbaW5kZXhdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb2ZmU3RhcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5nZW5lcmF0ZVJhdGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGREZWZhdWx0Q2xhc3Moc3RhcjogYW55KSB7XHJcbiAgICBzdGFyLmNsYXNzTGlzdC5hZGQoU3RhclJhdGluZ0NvbXBvbmVudC5DTFNfREVGQVVMVF9TVEFSKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ2hlY2tlZFN0YXJDbGFzcyhzdGFyOiBhbnkpIHtcclxuICAgIHN0YXIuY2xhc3NMaXN0LmFkZChTdGFyUmF0aW5nQ29tcG9uZW50LkNMU19DSEVDS0VEX1NUQVIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRIYWxmU3RhckNsYXNzKHN0YXI6IGFueSkge1xyXG4gICAgc3Rhci5jbGFzc0xpc3QuYWRkKFN0YXJSYXRpbmdDb21wb25lbnQuQ0xTX0hBTEZfU1RBUik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXJzKCkge1xyXG4gICAgaWYgKCF0aGlzLm1haW5FbGVtZW50KSByZXR1cm47XHJcbiAgICBsZXQgc3RhckNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgPSB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBsZXQgbWF4U3RhcnMgPSBbLi4uQXJyYXkoTnVtYmVyKHRoaXMudG90YWxzdGFycykpLmtleXMoKV07XHJcbiAgICB0aGlzLnN0YXJzLmxlbmd0aCA9IDA7XHJcbiAgICBzdGFyQ29udGFpbmVyLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICBtYXhTdGFycy5mb3JFYWNoKHN0YXJOdW1iZXIgPT4ge1xyXG4gICAgICBsZXQgc3RhckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xyXG4gICAgICBzdGFyRWxlbWVudC5kYXRhc2V0LmluZGV4ID0gKHN0YXJOdW1iZXIgKyAxKS50b1N0cmluZygpO1xyXG4gICAgICBzdGFyRWxlbWVudC50aXRsZSA9IHN0YXJFbGVtZW50LmRhdGFzZXQuaW5kZXg7XHJcbiAgICAgIHN0YXJDb250YWluZXIuYXBwZW5kQ2hpbGQoc3RhckVsZW1lbnQpO1xyXG4gICAgICB0aGlzLnN0YXJzLnB1c2goc3RhckVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5U2l6ZUFsbFN0YXJzKCkge1xyXG4gICAgaWYgKHRoaXMuX3NpemUpIHtcclxuICAgICAgdGhpcy5zdGFycy5sZW5ndGggPT0gMCAmJiB0aGlzLnNldFN0YXJzKCk7XHJcbiAgICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gY29uc3QgbmV3U2l6ZSA9IHRoaXMuX3NpemUubWF0Y2goL1xcZCsvKVswXTtcclxuICAgICAgICAvLyBsZXQgaGFsZlNpemUgPSBwYXJzZUludChuZXdTaXplLCAxMCkgLyAyO1xyXG4gICAgICAgIC8vIGxldCBoYWxmTWFyZ2luID0gMCAtIHBhcnNlSW50KG5ld1NpemUsIDEwKTsgICAgICAgIFxyXG4gICAgICAgIGxldCBuZXdTaXplID0gdGhpcy5zaXplLm1hdGNoKC9cXGQrLylbMF07XHJcbiAgICAgICAgbGV0IGhhbGZTaXplID0gKHBhcnNlSW50KG5ld1NpemUpICogMTApIC8gMjQ7XHJcbiAgICAgICAgbGV0IGhhbGZNYXJnaW4gPSAwIC0gKChwYXJzZUludChuZXdTaXplKSAqIDIwKSAvIDI0KTtcclxuICAgICAgICBzdGFyLnN0eWxlLnNldFByb3BlcnR5KFN0YXJSYXRpbmdDb21wb25lbnQuVkFSX1NJWkUsIHRoaXMuc2l6ZSk7XHJcbiAgICAgICAgaWYgKHN0YXIuY2xhc3NMaXN0LmNvbnRhaW5zKFN0YXJSYXRpbmdDb21wb25lbnQuQ0xTX0hBTEZfU1RBUikpIHtcclxuICAgICAgICAgIHN0YXIuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfSEFMRl9XSURUSCwgYCR7aGFsZlNpemV9cHhgKTtcclxuICAgICAgICAgIHN0YXIuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfSEFMRl9NQVJHSU4sIGAke2hhbGZNYXJnaW59cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbG9yU3R5bGVBbGxTdGFycyhzZXRDaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0YXJzLmxlbmd0aCA9PSAwICYmIHRoaXMuc2V0U3RhcnMoKTtcclxuICAgIHRoaXMuc3RhcnMuZm9yRWFjaCgoc3RhcjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChzZXRDaGVja2VkKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNoZWNrZWRDb2xvclN0eWxlKHN0YXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXBwbHlVbkNoZWNrZWRDb2xvclN0eWxlKHN0YXIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb2xvclN0eWxlKHN0YXJFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQpIHtcclxuICAgIHRoaXMuYXBwbHlDaGVja2VkQ29sb3JTdHlsZShzdGFyRWxlbWVudCk7XHJcbiAgICB0aGlzLmFwcGx5VW5DaGVja2VkQ29sb3JTdHlsZShzdGFyRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5Q2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCkge1xyXG4gICAgc3RhckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfQ0hFQ0tFRF9DT0xPUiwgdGhpcy5jaGVja2VkY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVVuQ2hlY2tlZENvbG9yU3R5bGUoc3RhckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCkge1xyXG4gICAgc3RhckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoU3RhclJhdGluZ0NvbXBvbmVudC5WQVJfVU5DSEVDS0VEX0NPTE9SLCB0aGlzLnVuY2hlY2tlZGNvbG9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVSYXRpbmcoZm9yY2VHZW5lcmF0ZTpib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5ICYmICFmb3JjZUdlbmVyYXRlKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMubWFpbkVsZW1lbnQpIHJldHVybjtcclxuICAgIHRoaXMuc3RhcnMubGVuZ3RoID09IDAgJiYgdGhpcy5zZXRTdGFycygpO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPj0gMCkge1xyXG4gICAgICB0aGlzLm1haW5FbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGl0bGUgPSB0aGlzLnZhbHVlO1xyXG5cclxuICAgICAgbGV0IGhhc0RlY2ltYWxzOiBib29sZWFuID1cclxuICAgICAgICAoKE51bWJlci5wYXJzZUZsb2F0KHRoaXMudmFsdWUudG9TdHJpbmcoKSkgJSAxKVxyXG4gICAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAgIC5zdWJzdHJpbmcoMywgMikpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IGkgPSAxO1xyXG4gICAgICB0aGlzLnN0YXJzLmZvckVhY2goKHN0YXI6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXIuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgICAgICB0aGlzLmFwcGx5Q29sb3JTdHlsZShzdGFyKTtcclxuICAgICAgICB0aGlzLmFkZERlZmF1bHRDbGFzcyhzdGFyKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPj0gaSkge1xyXG4gICAgICAgICAgLy8gc3RhciBvblxyXG4gICAgICAgICAgdGhpcy5hZGRDaGVja2VkU3RhckNsYXNzKHN0YXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBoYWxmIHN0YXJcclxuICAgICAgICAgIGlmIChoYXNEZWNpbWFscykge1xyXG4gICAgICAgICAgICB0aGlzLmFkZEhhbGZTdGFyQ2xhc3Moc3Rhcik7XHJcbiAgICAgICAgICAgIGhhc0RlY2ltYWxzID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkrKztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==

@@ -38,3 +38,4 @@ import { __decorate, __metadata } from 'tslib';

this.applyColorStyleAllStars(false);
this.addRemoveEvents();
this.addEvents();
//this.addRemoveEvents();
});

@@ -70,3 +71,4 @@ }

this.onReadOnlyChange.subscribe(() => {
this.addRemoveEvents();
this.readonly ? this.makeReadOnly() : this.makeEditable();
//this.addRemoveEvents();
});

@@ -119,11 +121,20 @@ }

}
// private makeEditable() {
// if (!this.mainElement) return;
// this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
// this.mainElement.nativeElement.style.cursor = "pointer";
// this.mainElement.nativeElement.title = this.value;
// this.stars.forEach((star: any) => {
// star.addEventListener('click', this.onRate.bind(this));
// star.addEventListener('mouseenter', this.onStar.bind(this));
// star.style.cursor = "pointer";
// star.title = star.dataset.index;
// });
// }
makeEditable() {
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach((star) => {
star.addEventListener('click', this.onRate.bind(this));
star.addEventListener('mouseenter', this.onStar.bind(this));
star.style.cursor = "pointer";

@@ -143,10 +154,22 @@ star.title = star.dataset.index;

}
addRemoveEvents() {
if (this.readonly) {
this.makeReadOnly();
}
else {
this.makeEditable();
this.onValueChange.next(this.value);
}
// private addRemoveEvents() {
// if (this.readonly) {
// this.makeReadOnly();
// } else {
// this.makeEditable();
// this.onValueChange.next(this.value);
// }
// }
addEvents() {
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach((star) => {
star.addEventListener('click', this.onRate.bind(this));
star.addEventListener('mouseenter', this.onStar.bind(this));
star.style.cursor = "pointer";
star.title = star.dataset.index;
});
}

@@ -153,0 +176,0 @@ ngAfterViewInit() {

@@ -36,3 +36,4 @@ import { __decorate, __metadata, __spread } from 'tslib';

_this.applyColorStyleAllStars(false);
_this.addRemoveEvents();
_this.addEvents();
//this.addRemoveEvents();
});

@@ -68,3 +69,4 @@ }

this.onReadOnlyChange.subscribe(function () {
_this.addRemoveEvents();
_this.readonly ? _this.makeReadOnly() : _this.makeEditable();
//this.addRemoveEvents();
});

@@ -142,12 +144,20 @@ }

});
// private makeEditable() {
// if (!this.mainElement) return;
// this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
// this.mainElement.nativeElement.style.cursor = "pointer";
// this.mainElement.nativeElement.title = this.value;
// this.stars.forEach((star: any) => {
// star.addEventListener('click', this.onRate.bind(this));
// star.addEventListener('mouseenter', this.onStar.bind(this));
// star.style.cursor = "pointer";
// star.title = star.dataset.index;
// });
// }
StarRatingComponent.prototype.makeEditable = function () {
var _this = this;
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach(function (star) {
star.addEventListener('click', _this.onRate.bind(_this));
star.addEventListener('mouseenter', _this.onStar.bind(_this));
star.style.cursor = "pointer";

@@ -167,10 +177,23 @@ star.title = star.dataset.index;

};
StarRatingComponent.prototype.addRemoveEvents = function () {
if (this.readonly) {
this.makeReadOnly();
}
else {
this.makeEditable();
this.onValueChange.next(this.value);
}
// private addRemoveEvents() {
// if (this.readonly) {
// this.makeReadOnly();
// } else {
// this.makeEditable();
// this.onValueChange.next(this.value);
// }
// }
StarRatingComponent.prototype.addEvents = function () {
var _this = this;
if (!this.mainElement)
return;
this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));
this.mainElement.nativeElement.style.cursor = "pointer";
this.mainElement.nativeElement.title = this.value;
this.stars.forEach(function (star) {
star.addEventListener('click', _this.onRate.bind(_this));
star.addEventListener('mouseenter', _this.onStar.bind(_this));
star.style.cursor = "pointer";
star.title = star.dataset.index;
});
};

@@ -177,0 +200,0 @@ StarRatingComponent.prototype.ngAfterViewInit = function () {

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"RatingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":8,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"StarRatingComponent"}],"exports":[{"__symbolic":"reference","name":"StarRatingComponent"}],"entryComponents":[{"__symbolic":"reference","name":"StarRatingComponent"}]}]}],"members":{"ngDoBootstrap":[{"__symbolic":"method"}]}},"StarRatingComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"star-rating","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":8,"character":17},"member":"ShadowDom"},"template":"<div #starMain>\r\n</div>\r\n\r\n<!-- <ng-container *ngFor=\"let star of stars; let i = index;\">\r\n <span \r\n (click)=\"!isReadOnly && onRate(i)\" \r\n (mouseleave)=\"!isReadOnly && generateRating()\"\r\n (mouseenter)=\"!isReadOnly && onStar(i)\" \r\n [ngStyle]=\"{\r\n 'font-size': getSize(),\r\n 'width': getSize(),\r\n pointer: isReadOnly ? 'default' : 'pointer'\r\n }\" \r\n [ngClass]=\"{\r\n on: star.checked,\r\n half: star.isHalf,\r\n readOnly: isReadOnly,\r\n editable: !isReadOnly\r\n }\"></span>\r\n</ng-container> -->","styles":[":root{--checkedColor:gold;--unCheckedColor:gray;--size:24px;--halfWidth:10px;--halfMargin:-20px}.star{cursor:pointer;color:var(--unCheckedColor);font-size:var(--size);width:var(--size);display:inline-block}.star:last-child{margin-right:0}.star:before{content:'\\2605'}.star.on{color:var(--checkedColor)}.star.half:after{content:'\\2605';color:var(--checkedColor);position:absolute;margin-left:var(--halfMargin);width:var(--halfWidth);overflow:hidden}"]}]}],"members":{"mainElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":43,"character":3},"arguments":["starMain",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor"}],"rate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":118,"character":3}}]}],"checkedcolor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_CHECKED_COLOR"}]}]}],"uncheckedcolor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":125,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_UNCHECKED_COLOR"}]}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_VALUE"}]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_SIZE"}]}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_READONLY"}]}]}],"totalstars":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":147,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_TOTALSTARS"}]}]}],"makeEditable":[{"__symbolic":"method"}],"makeReadOnly":[{"__symbolic":"method"}],"addRemoveEvents":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"onRate":[{"__symbolic":"method"}],"onStar":[{"__symbolic":"method"}],"offStar":[{"__symbolic":"method"}],"addDefaultClass":[{"__symbolic":"method"}],"addCheckedStarClass":[{"__symbolic":"method"}],"addHalfStarClass":[{"__symbolic":"method"}],"setStars":[{"__symbolic":"method"}],"applySizeAllStars":[{"__symbolic":"method"}],"applyColorStyleAllStars":[{"__symbolic":"method"}],"applyColorStyle":[{"__symbolic":"method"}],"applyCheckedColorStyle":[{"__symbolic":"method"}],"applyUnCheckedColorStyle":[{"__symbolic":"method"}],"generateRating":[{"__symbolic":"method"}]},"statics":{"VAR_CHECKED_COLOR":"--checkedColor","VAR_UNCHECKED_COLOR":"--unCheckedColor","VAR_SIZE":"--size","VAR_HALF_WIDTH":"--halfWidth","VAR_HALF_MARGIN":"--halfMargin","CLS_CHECKED_STAR":"on","CLS_DEFAULT_STAR":"star","CLS_HALF_STAR":"half","INP_CHECKED_COLOR":"checkedcolor","INP_UNCHECKED_COLOR":"uncheckedcolor","INP_VALUE":"value","INP_SIZE":"size","INP_READONLY":"readonly","INP_TOTALSTARS":"totalstars"}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"lib-rating","template":"\n <p>\n rating works!\n </p>\n ","styles":[]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}}},"origins":{"RatingModule":"./lib/rating.module","StarRatingComponent":"./components/star-rating/star-rating.component","ɵa":"./lib/rating.component"},"importAs":"ng-starrating"}
{"__symbolic":"module","version":4,"metadata":{"RatingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":8,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"StarRatingComponent"}],"exports":[{"__symbolic":"reference","name":"StarRatingComponent"}],"entryComponents":[{"__symbolic":"reference","name":"StarRatingComponent"}]}]}],"members":{"ngDoBootstrap":[{"__symbolic":"method"}]}},"StarRatingComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"star-rating","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":8,"character":17},"member":"ShadowDom"},"template":"<div #starMain>\r\n</div>\r\n\r\n<!-- <ng-container *ngFor=\"let star of stars; let i = index;\">\r\n <span \r\n (click)=\"!isReadOnly && onRate(i)\" \r\n (mouseleave)=\"!isReadOnly && generateRating()\"\r\n (mouseenter)=\"!isReadOnly && onStar(i)\" \r\n [ngStyle]=\"{\r\n 'font-size': getSize(),\r\n 'width': getSize(),\r\n pointer: isReadOnly ? 'default' : 'pointer'\r\n }\" \r\n [ngClass]=\"{\r\n on: star.checked,\r\n half: star.isHalf,\r\n readOnly: isReadOnly,\r\n editable: !isReadOnly\r\n }\"></span>\r\n</ng-container> -->","styles":[":root{--checkedColor:gold;--unCheckedColor:gray;--size:24px;--halfWidth:10px;--halfMargin:-20px}.star{cursor:pointer;color:var(--unCheckedColor);font-size:var(--size);width:var(--size);display:inline-block}.star:last-child{margin-right:0}.star:before{content:'\\2605'}.star.on{color:var(--checkedColor)}.star.half:after{content:'\\2605';color:var(--checkedColor);position:absolute;margin-left:var(--halfMargin);width:var(--halfWidth);overflow:hidden}"]}]}],"members":{"mainElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":43,"character":3},"arguments":["starMain",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor"}],"rate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":120,"character":3}}]}],"checkedcolor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":122,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_CHECKED_COLOR"}]}]}],"uncheckedcolor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":127,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_UNCHECKED_COLOR"}]}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_VALUE"}]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_SIZE"}]}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":144,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_READONLY"}]}]}],"totalstars":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":149,"character":3},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"StarRatingComponent"},"member":"INP_TOTALSTARS"}]}]}],"makeEditable":[{"__symbolic":"method"}],"makeReadOnly":[{"__symbolic":"method"}],"addEvents":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"onRate":[{"__symbolic":"method"}],"onStar":[{"__symbolic":"method"}],"offStar":[{"__symbolic":"method"}],"addDefaultClass":[{"__symbolic":"method"}],"addCheckedStarClass":[{"__symbolic":"method"}],"addHalfStarClass":[{"__symbolic":"method"}],"setStars":[{"__symbolic":"method"}],"applySizeAllStars":[{"__symbolic":"method"}],"applyColorStyleAllStars":[{"__symbolic":"method"}],"applyColorStyle":[{"__symbolic":"method"}],"applyCheckedColorStyle":[{"__symbolic":"method"}],"applyUnCheckedColorStyle":[{"__symbolic":"method"}],"generateRating":[{"__symbolic":"method"}]},"statics":{"VAR_CHECKED_COLOR":"--checkedColor","VAR_UNCHECKED_COLOR":"--unCheckedColor","VAR_SIZE":"--size","VAR_HALF_WIDTH":"--halfWidth","VAR_HALF_MARGIN":"--halfMargin","CLS_CHECKED_STAR":"on","CLS_DEFAULT_STAR":"star","CLS_HALF_STAR":"half","INP_CHECKED_COLOR":"checkedcolor","INP_UNCHECKED_COLOR":"uncheckedcolor","INP_VALUE":"value","INP_SIZE":"size","INP_READONLY":"readonly","INP_TOTALSTARS":"totalstars"}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"lib-rating","template":"\n <p>\n rating works!\n </p>\n ","styles":[]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}}},"origins":{"RatingModule":"./lib/rating.module","StarRatingComponent":"./components/star-rating/star-rating.component","ɵa":"./lib/rating.component"},"importAs":"ng-starrating"}
{
"name": "ng-starrating",
"version": "1.0.13",
"version": "1.0.14",
"description": "Star Rating Library using Angular",

@@ -5,0 +5,0 @@ "peerDependencies": {

# ng-starrating
[![npm version](https://img.shields.io/badge/npm-v1.0.13-brightgreen.svg)](https://www.npmjs.com/package/ng-starrating/v/1.0.13)
[![npm version](https://img.shields.io/badge/npm-v1.0.14-brightgreen.svg)](https://www.npmjs.com/package/ng-starrating/v/1.0.14)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/riteshgandhi/ng-star-rating)

@@ -154,2 +154,3 @@

`v1.0.14 - [2020-02-11]`
`v1.0.13 - [2020-02-11]`

@@ -156,0 +157,0 @@ - minor fixes

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc