@aggdirect/coolmap 2.7.6 → 2.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -151,6 +151,7 @@ export class AddRouteComponent {
|
|
|
151
151
|
.then((res) => {
|
|
152
152
|
if (res) {
|
|
153
153
|
this.addRouteForm.patchValue({
|
|
154
|
+
pickup_location: res['formatted_address'],
|
|
154
155
|
pickup_lat_lng: (res['lat'] + ',' + res['lng']).toString()
|
|
155
156
|
});
|
|
156
157
|
this.coolMapService.clearBoundWithCordinates();
|
|
@@ -162,6 +163,7 @@ export class AddRouteComponent {
|
|
|
162
163
|
this.utils.autocomplete(this.filterDelivery).then((res) => {
|
|
163
164
|
if (res) {
|
|
164
165
|
this.addRouteForm.patchValue({
|
|
166
|
+
delivery_location: res['formatted_address'],
|
|
165
167
|
delivery_lat_lng: (res['lat'] + ',' + res['lng']).toString()
|
|
166
168
|
});
|
|
167
169
|
this.checkAndFetchRouteInformation();
|
|
@@ -343,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
343
345
|
}], customerRepoDetails: [{
|
|
344
346
|
type: Input
|
|
345
347
|
}] } });
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvYWRkLXJvdXRlL2FkZC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2FkZC1yb3V0ZS9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLGlCQUFpQjtJQXlCVDtJQUF1QztJQUE0QjtJQUN2RDtJQXpCRyxZQUFZLENBQWM7SUFDeEIsY0FBYyxDQUFjO0lBQy9DLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3ZDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQy9ELGFBQWEsR0FBUSxFQUFFLENBQUM7SUFDeEIsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQiwyQkFBMkIsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDMUUsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixTQUFT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SSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7dUdBclJVLGlCQUFpQixxR0EwQmxCLFlBQVk7MkZBMUJYLGlCQUFpQixvYkNkOUIsMm5OQWdJQTs7MkZEbEhhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkE4QnRCLE1BQU07MkJBQUMsWUFBWTt5Q0F6QlksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNXLGNBQWM7c0JBQWpELFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNWLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTTtnQkFRUyxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIElucHV0LCBPbkRlc3Ryb3ksIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb29sbWFwQ29uZmlnTW9kZWwsIENvb2xtYXBTZXJ2aWNlLCBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWwsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1yb3V0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtcm91dGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBZGRSb3V0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdmaWx0ZXJQaWNrdXAnKSBwdWJsaWMgZmlsdGVyUGlja3VwITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyRGVsaXZlcnknKSBwdWJsaWMgZmlsdGVyRGVsaXZlcnkhOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU5hdiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHVwZGF0ZVJvdXRlTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgcGlja3VwT3B0aW9uczogYW55ID0gW107XG4gIGRlbGl2ZXJ5T3B0aW9uczogYW55ID0gW107XG4gIHJlcXVlc3RQYXJtc0ZvclJvdXRlRGV0YWlscyA9IHsgcGlja3VwX2xhdF9sbmc6ICcnLCBkZWxpdmVyeV9sYXRfbG5nOiAnJyB9XG4gIGN1c3RvbWVyc0xpc3Q6IGFueSA9IFtdO1xuICB1bml0c0xpc3Q6IGFueSA9IFtdO1xuICBtYXRlcmlhbHNMaXN0OiBhbnkgPSBbXTtcbiAgYWRkUm91dGVGb3JtITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgcm91dGVEYXRhITogUm91dGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21lclJlcG9EZXRhaWxzITogQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsO1xuICByb3V0ZUlkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcmV2ZW50U2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2ZW50SW5pdGlhbFNhdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VzdG9tZXJzTGlzdCQhOiBPYnNlcnZhYmxlPGFueT47XG4gIHJvdXRlRGV0YWlscyE6IHsgcGlja3VwX2xvY2F0aW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkOyBkZWxpdmVyeV9sb2NhdGlvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDsgfSB8IG51bGw7XG4gIHB1YmxpYyBkZXN0cm95ZXIkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcG9wdXBEZXRhaWxzOiBSb3V0ZTtcbiAgZW5hYmxlUG9wVXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTtcbiAgZW5hYmxlRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb29sTWFwU2VydmljZTogQ29vbG1hcFNlcnZpY2UsIHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHB1YmxpYyBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkgeyAgICAgIFxuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoTWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKCkudGhlbigocmVzKT0+eyAgICAgICAgXG4gICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdCA9IHJlcztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoTWF0ZXJpYWxzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gcmVzO1xuICAgICAgfSk7XG4gICAgfVxuICAgXG4gICAgdGhpcy51dGlscy5mZXRjaFVuaXRzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgIHRoaXMudW5pdHNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUluaXQoKTtcbiAgICB0aGlzLnV0aWxzLmdldHJvdXRlRGV0YWlsc1V0aWxpdHkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIGlmIChyZXNbJ2V2ZW50J10gIT09ICdjbGljaycgJiYgIXRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHsgdGhpcy5lbmFibGVQb3BVcCA9IHJlc1snZXZlbnQnXSB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZW5hYmxlUG9wVXAgJiYgIXRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHsgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSA9IHRydWU7IH1cbiAgICAgICAgaWYgKHJlc1snZXZlbnQnXSAhPT0gJ2NsaWNrJyAmJiAhcmVzWydldmVudCddICYmIHRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHtcbiAgICAgICAgICB0aGlzLnBvcHVwRGV0YWlscyA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzdjInKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5wb3B1cERldGFpbHMgPSByZXNbJ3JvdXRlJ10gfVxuICAgICAgICBpZiAodGhpcy5lbmFibGVQb3BVcCkgdGhpcy5wb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXSA9IHRoaXMudXRpbHMuZ2V0RGF0ZUZvcm1hdChuZXcgRGF0ZSh0aGlzLnBvcHVwRGV0YWlsc1snY3JlYXRlZF9hdCddKSwgJy8nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmaWx0ZXJDdXN0b21lckxpc3QoKSB7XG4gICAgdGhpcy5jdXN0b21lcnNMaXN0JCA9IHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSB8fCAnJykpLFxuICAgICk7XG4gIH1cbiAgcHVibGljIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tZXJzTGlzdC5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBvcHRpb25bJ2N1c3RvbWVyX25hbWUnXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydyb3V0ZURhdGEnXSAmJiAhY2hhbmdlc1sncm91dGVEYXRhJ11bJ2N1cnJlbnRWYWx1ZSddKSB0aGlzLmluSXQobnVsbCk7XG4gIH1cbiAgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBib2R5OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJvdXRlPycgfSxcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHsgaWYgKHJlcykgeyB0aGlzLmRlbGV0ZVJvdXRlKCkgfSB9KTtcbiAgfVxuICBlZGl0RXZlbnQoKSB7XG4gICAgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlRm9ybSA9IHRydWU7IHRoaXMuZW5hYmxlUG9wVXAgPSBmYWxzZTtcbiAgICB0aGlzLnBvcHVwRGV0YWlsc1sncHJldmVudCddID0gZmFsc2U7XG4gICAgdGhpcy51dGlscy5yZW1vdmVNYXBFbnRpdHkubmV4dCh0aGlzLnBvcHVwRGV0YWlscyk7XG4gICAgdGhpcy5pbkl0KHRoaXMucG9wdXBEZXRhaWxzKTtcbiAgfVxuICBpbkl0KGNoYW5nZXM6IFJvdXRlKSB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGlmICghY2hhbmdlc1sncHJldmVudCddKSB7XG4gICAgICAgIHRoaXMucHJldmVudFNhdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgICAgIHRoaXMucGF0Y2hGb3JtVmFsdWUoY2hhbmdlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbih0cnVlKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVuYWJsZUZvcm0gPSB0cnVlOyB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF0Y2hGb3JtVmFsdWUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbigpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBjdXN0b21lcl9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLmlkLFxuICAgICAgICBjdXN0b21lcl9uYW1lOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIubmFtZSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hDdXN0b21lcnNMaXN0KCkudGhlbigocmVzKT0+e1xuICAgICAgICB0aGlzLmN1c3RvbWVyc0xpc3QgPSByZXM7IHRoaXMuZmlsdGVyQ3VzdG9tZXJMaXN0KCk7IHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10uZW5hYmxlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgZnJvbUV2ZW50KHRoaXMuZmlsdGVyUGlja3VwLm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMTUwKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlscy5hdXRvY29tcGxldGUodGhpcy5maWx0ZXJQaWNrdXApXG4gICAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICBwaWNrdXBfbGF0X2xuZzogKHJlc1snbGF0J10gKyAnLCcgKyByZXNbJ2xuZyddKS50b1N0cmluZygpXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmNvb2xNYXBTZXJ2aWNlLmNsZWFyQm91bmRXaXRoQ29yZGluYXRlcygpO1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGZyb21FdmVudCh0aGlzLmZpbHRlckRlbGl2ZXJ5Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMTUwKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlscy5hdXRvY29tcGxldGUodGhpcy5maWx0ZXJEZWxpdmVyeSkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgIGRlbGl2ZXJ5X2xhdF9sbmc6IChyZXNbJ2xhdCddICsgJywnICsgcmVzWydsbmcnXSkudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBmb3JtQ29udHJvbFZhbHVlKCkge1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbG9jYXRpb24nXT8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5waWNrdXBfbG9jYXRpb24gJiYgcmVzICE9PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5waWNrdXBfbG9jYXRpb24pIHtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7IHBpY2t1cF9sYXRfbG5nOiAnJyB9KTtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3BpY2t1cF9sYXRfbG5nJ10ubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ10/LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUuZGVsaXZlcnlfbG9jYXRpb24gJiYgcmVzICE9PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sb2NhdGlvbikge1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHsgZGVsaXZlcnlfbGF0X2xuZzogJycgfSk7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sYXRfbG5nJ10ubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybUluaXQoKSB7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIHJvdXRlX25hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGN1c3RvbWVyX25hbWU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGN1c3RvbWVyX2lkOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgbWF0ZXJpYWxzX2lkOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB1bml0X2lkOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBwYXRoOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBwaWNrdXBfbG9jYXRpb246IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBpY2t1cF9sYXRfbG5nOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBkZWxpdmVyeV9sb2NhdGlvbjogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZGVsaXZlcnlfbGF0X2xuZzogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZXN0aW1hdGVkX2Rpc3RhbmNlOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBlc3RpbWF0ZWRfdGltZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgbm90ZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjA0OCldKSxcbiAgICAgIHRydWNrZXJfcGF5X2VzdGltYXRlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICBjdXN0b21lcl9wcmljZV9lc3RpbWF0ZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcGF0Y2hGb3JtVmFsdWUoZGF0YT86IFJvdXRlKSB7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKGRhdGEhKTtcbiAgICBpZiAodGhpcy5jb25maWcucmVwb3NpdG9yeSA9PT0gJ2N1c3RvbWVyJykgeyAgICAgIFxuICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIuaWQsXG4gICAgICAgIGN1c3RvbWVyX25hbWU6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5uYW1lLFxuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5yb3V0ZUlkID0gZGF0YT8ucm91dGVfaWQ7XG4gICAgdGhpcy5yb3V0ZURldGFpbHMgPSBkYXRhID8geyBwaWNrdXBfbG9jYXRpb246IGRhdGEucGlja3VwX2xvY2F0aW9uLCBkZWxpdmVyeV9sb2NhdGlvbjogZGF0YS5kZWxpdmVyeV9sb2NhdGlvbiB9IDogbnVsbDtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7IGlmICh0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSkgdGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUgPSBmYWxzZSB9XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJDdXN0b21lckxpc3QoKTtcbiAgICBhd2FpdCB0cnVlO1xuICB9XG5cbiAgY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oaXNpbml0aWFsPzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZT8uZGVsaXZlcnlfbGF0X2xuZz8ubGVuZ3RoID4gMCAmJiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZT8ucGlja3VwX2xhdF9sbmc/Lmxlbmd0aCA+IDAgJiYgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUudW5pdF9pZCkge1xuICAgICAgbGV0IHVuaXQgPSB0aGlzLnVuaXRzTGlzdC5maW5kKCh4OiBhbnkpID0+IHguaWQgPT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnVuaXRfaWQpO1xuICAgICAgY29uc3QgcGFyYW0gPSB7XG4gICAgICAgIGRlbGl2ZXJ5X2xhdF9sbmc6IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xhdF9sbmcsXG4gICAgICAgIHBpY2t1cF9sYXRfbG5nOiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5waWNrdXBfbGF0X2xuZyxcbiAgICAgICAgdW5pdDogdW5pdD8udHlwZVxuICAgICAgfTtcbiAgICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ2NhbGN1bGF0ZS9yb3V0ZXMvZXN0aW1hdGlvbicsIHBhcmFtKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzWydwYXRoJ10pIHtcbiAgICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIGVzdGltYXRlZF9kaXN0YW5jZTogcmVzWydkaXN0J10sXG4gICAgICAgICAgICBlc3RpbWF0ZWRfdGltZTogcmVzWyd0aW1lJ10sXG4gICAgICAgICAgICBwYXRoOiByZXNbJ3BhdGgnXSxcbiAgICAgICAgICAgIHRydWNrZXJfcGF5X2VzdGltYXRlOiByZXNbJ3RydWNrZXJfaGF1bF9jb3N0J10sXG4gICAgICAgICAgICBjdXN0b21lcl9wcmljZV9lc3RpbWF0ZTogKCsoK3Jlc1sndHJ1Y2tlcl9oYXVsX2Nvc3QnXSAvIDAuODApLnRvRml4ZWQoMikpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHBhdGggPSByZXNbJ3BhdGgnXS5zcGxpdCgnOycpO1xuICAgICAgICAgIHBhdGggPSBwYXRoLm1hcCgoZWxlOiBzdHJpbmcgfCBhbnkpID0+IHsgcmV0dXJuIGVsZSA9IHRoaXMuZm9ybWF0ZUxhdExvbmcoZWxlKSB9KTtcbiAgICAgICAgICByZXNbJ3BhdGgnXSA9IHBhdGg7XG4gICAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiBbeyB0eXBlOiAnRmVhdHVyZScsIHByb3BlcnRpZXM6IHt9LCBnZW9tZXRyeTogeyB0eXBlOiAnTGluZVN0cmluZycsIGNvb3JkaW5hdGVzOiByZXNbJ3BhdGgnXSB9IH1dXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsRGV0YWlscyA9IHRoaXMubWF0ZXJpYWxzTGlzdC5maW5kKCh4OiBhbnkpID0+IHguc3ViX21hdGVyaWFsX2lkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5tYXRlcmlhbHNfaWQpO1xuICAgICAgICAgICAgdGhpcy5jb29sTWFwU2VydmljZS5sb2FkTWFwUHJvcGVydHkoZWxlbWVudCwgMSwgdW5pdD8udHlwZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBpY2t1cF9sb2NhdGlvbjogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdwaWNrdXBfbG9jYXRpb24nKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgZGVsaXZlcnlfbG9jYXRpb246IHRoaXMuYWRkUm91dGVGb3JtLmdldCgnZGVsaXZlcnlfbG9jYXRpb24nKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgcm91dGVfbmFtZTogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdyb3V0ZV9uYW1lJyk/LnZhbHVlLFxuICAgICAgICAgICAgICAgIG1hdGVyaWFsTGFiZWw6IG1hdGVyaWFsRGV0YWlscz8ubGFiZWwsXG4gICAgICAgICAgICAgICAgdW5pdDogdW5pdD8udHlwZVxuICAgICAgICAgICAgICB9KS50aGVuKChyZXMpID0+IHsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb29sTWFwU2VydmljZS5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXNbJ3N0YXR1cyddLCAnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZUlkICYmIGlzaW5pdGlhbCkgdGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHsgdGhpcy5jb29sTWFwU2VydmljZS5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKSB9XG4gIH1cblxuICBmb3JtYXRlTGF0TG9uZyhsYXRsb25nOiBzdHJpbmcpIHsgcmV0dXJuIGxhdGxvbmcgPyBsYXRsb25nLnNwbGl0KCcsJykubWFwKHggPT4gK3gpLnJldmVyc2UoKSA6IG51bGwgfVxuICBzYXZlUm91dGUoKSB7XG4gICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLnByZXZlbnRTYXZlID0gZmFsc2U7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVJZCA/IHRoaXMudXRpbHMucG9zdGRhdGEoJ3VwZGF0ZS9yb3V0ZXMnLCBkYXRhKSA6IHRoaXMudXRpbHMucG9zdGRhdGEoJ2FkZC9yb3V0ZXMnLCBkYXRhKVxuICAgICAgaWYgKHRoaXMucm91dGVJZCkgZGF0YVsnaWQnXSA9IHRoaXMucm91dGVJZDtcbiAgICAgIHVybC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMudXBkYXRlUm91dGVMaXN0LmVtaXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzLm1lc3NhZ2UsICdzdWNjZXNzJyk7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgICAgIGlmICghdGhpcy5yb3V0ZUlkKSB0aGlzLmNoYW5nZU5hdi5uZXh0KCdBZGRyb3V0ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlcy5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycikgPT4geyBpZiAoZXJyKSB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlOyB9IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG4gIGRlbGV0ZVJvdXRlKCkge1xuICAgIHRoaXMucHJldmVudFNhdmUgPSBmYWxzZTtcbiAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdkZWxldGUvcm91dGVzJywgeyB1dWlkOiB0aGlzLnJvdXRlSWQgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzWydkYXRhJ11bJ3N1Y2Nlc3MnXSkge1xuICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXNbJ2RhdGEnXVsnbWVzc2FnZSddLCAnc3VjY2VzcycpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJvdXRlTGlzdC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmNoYW5nZU5hdi5uZXh0KCdBZGRyb3V0ZScpO1xuICAgICAgICB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ1NvbXRoaW5nIHdlbnQgd3JvbmcnLCAnZXJyb3InKTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4geyB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZSB9KVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVyJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkcm91dGVib3hcIj5cbiAgPGRpdiBjbGFzcz1cInJvdXRlZGV0YWlsYm94XCIgKm5nSWY9XCJlbmFibGVQb3BVcFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0bnJvdXRlZGV0YWlsXCI+XG4gICAgICA8bWF0LWljb24gKGNsaWNrKT1cInByZXZhbnRQb3B1cENsb3NlID0gZmFsc2U7IGVuYWJsZVBvcFVwID0gZmFsc2U7XCI+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgICAgPGxpYi1yb3V0ZS1pbmZvLWNhcmQgW3Byb3BEYXRhXT1cIntjbGFzc05hbWU6ICdyb3V0ZUNhcmQnLCByZXBvc2l0b3J5OiBjb25maWdbJ3JlcG9zaXRvcnknXX1cIiBbcG9wdXBEYXRhXT1cInBvcHVwRGV0YWlsc1wiPjwvbGliLXJvdXRlLWluZm8tY2FyZD5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlVHh0XCI+XG4gICAgICA8c21hbGw+XG4gICAgICAgIENyZWF0ZWQgYnkge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYnlfbmFtZSddfX0gb24ge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXX19XG4gICAgICA8L3NtYWxsPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRidG5cIiAoY2xpY2spPVwiZWRpdEV2ZW50KClcIj5FZGl0PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWRkX2FkZF9yb3V0ZV9ib3hcIiBjZGtEcmFnIFtzdHlsZS52aXNpYmlsaXR5XT1cIiFlbmFibGVGb3JtID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9waGVhZGluZ3BydFwiPlxuICAgICAgPGgyPiB7e3JvdXRlSWQ/ICdFRElUJyA6ICdBREQnfX0gUk9VVEUgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25wcnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJvdXRlSWRcIiBjbGFzcz1cImRlbGJ0blwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJjaGFuZ2VOYXYubmV4dCgnQWRkcm91dGUnKVwiPkNsb3NlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZFJvdXRlRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdXRlX2Zvcm1fYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlJvdXRlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZV9uYW1lXCIgYXV0b2NvbXBsZXRlPVwibm9wZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydyb3V0ZV9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgUm91dGUgTmFtZSBpcyByZXF1aXJlZFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Q3VzdG9tZXJfbmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJDdXN0b21lciBOYW1lXCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY3VzdG9tZXJfbmFtZVwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGN1c3RvbWVyIG9mIGN1c3RvbWVyc0xpc3QkIHwgYXN5bmNcIiBbdmFsdWVdPVwiY3VzdG9tZXJbJ2N1c3RvbWVyX25hbWUnXVwiPlxuICAgICAgICAgICAgICAgIHt7Y3VzdG9tZXJbJ2N1c3RvbWVyX25hbWUnXX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2N1c3RvbWVyX25hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICBDdXN0b21lciBuYW1lIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UGlja3VwPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgIHR5cGU9XCJ0ZXh0XCIgXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgbWF0SW5wdXQgI2ZpbHRlclBpY2t1cFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaWNrdXBfbG9jYXRpb25cIiBcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3BpY2t1cF9sYXRfbG5nJ10udG91Y2hlZCAmJiBhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3BpY2t1cF9sYXRfbG5nJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgcGlja3VwIGxvY2F0aW9uIGZyb20gdGhlIGxpc3QuXG4gICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPkRlbGl2ZXJ5PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBcbiAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgI2ZpbHRlckRlbGl2ZXJ5XG4gICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVsaXZlcnlfbG9jYXRpb25cIiBcbiAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sYXRfbG5nJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgZGVsaXZlcnkgbG9jYXRpb24gZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm90ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBzdHlsZT1cImhlaWdodDogMThweDsgcmVzaXplOiBub25lO1wiIG1hdElucHV0IG5hbWU9XCJcIiBpZD1cIlwiIGNvbHM9XCIzMFwiIHJvd3M9XCIxMFwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBhdXRvY29tcGxldGU9XCJub3BlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snbm90ZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICAgICAgICBOb3RlcyBzaG91bGQgYmUgd2l0aGluIDIwNDggY2hhcmFjdGVycy5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBkLWZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+VW5pdCB0eXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInVuaXRfaWRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIHVuaXRzTGlzdFwiIFt2YWx1ZV09XCJ1bml0Py5pZFwiPiB7e3VuaXQ/LnR5cGV9fSA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sndW5pdF9pZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgVW5pdCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+TWF0ZXJpYWw8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWF0ZXJpYWxzX2lkXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWF0ZXJpYWwgb2YgbWF0ZXJpYWxzTGlzdFwiIFt2YWx1ZV09XCJjb25maWcucmVwb3NpdG9yeSA9PT0gJ2Nvb2xtYXAnID8gbWF0ZXJpYWw/Lm1hdGVyaWFsX2lkIDogbWF0ZXJpYWw/LnN1Yl9tYXRlcmlhbF9pZFwiPiB7e2NvbmZpZy5yZXBvc2l0b3J5ID09PSAnY29vbG1hcCcgPyBtYXRlcmlhbD8ubWF0ZXJpYWwgOiBtYXRlcmlhbD8ubGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydtYXRlcmlhbHNfaWQnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgIE1hdGVyaWFsIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxhcHAtZXN0aW1hdGlvbi1kaXNwbGF5ICpuZ0lmPVwiYWRkUm91dGVGb3JtPy52YWx1ZT8ucGlja3VwX2xhdF9sbmcgJiYgYWRkUm91dGVGb3JtPy52YWx1ZT8uZGVsaXZlcnlfbGF0X2xuZ1wiIFt2YWx1ZV09XCJhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11cIj48L2FwcC1lc3RpbWF0aW9uLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cImFkZFJvdXRlRm9ybVsndmFsdWUnXVsndHJ1Y2tlcl9wYXlfZXN0aW1hdGUnXSAmJiBhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ2N1c3RvbWVyX3ByaWNlX2VzdGltYXRlJ11cIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ1sncmVwb3NpdG9yeSddICE9PSAnY3VzdG9tZXInXCIgY2xhc3M9XCJlc3RpbWF0ZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICBUcnVja2VyIFBheSBFc3RpbWF0ZSAtIDxiPnt7JyQnKyBhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ3RydWNrZXJfcGF5X2VzdGltYXRlJ119fTwvYj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJlc3RpbWF0ZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICBDdXN0b21lciBQcmljZSBFc3RpbWF0ZSAtIDxiPnt7JyQnKyBhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ2N1c3RvbWVyX3ByaWNlX2VzdGltYXRlJ119fTwvYj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic2F2ZVJvdXRlKClcIiAqbmdJZj1cInByZXZlbnRTYXZlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRkUm91dGVGb3JtLmludmFsaWQgJiYgcHJldmVudFNhdmUgfHwgcHJldmVudEluaXRpYWxTYXZlXCI+e3tyb3V0ZUlkPyAnVXBkYXRlJyA6ICdTYXZlJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiIXByZXZlbnRTYXZlXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvYWRkLXJvdXRlL2FkZC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2FkZC1yb3V0ZS9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLGlCQUFpQjtJQXlCVDtJQUF1QztJQUE0QjtJQUN2RDtJQXpCRyxZQUFZLENBQWM7SUFDeEIsY0FBYyxDQUFjO0lBQy9DLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3ZDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQy9ELGFBQWEsR0FBUSxFQUFFLENBQUM7SUFDeEIsZUFBZSxHQUFRLEVBQUUsQ0FBQztJQUMxQiwyQkFBMkIsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDMUUsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixTQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFDeEIsWUFBWSxDQUFhO0lBQ1QsU0FBUyxDQUFTO0lBQ2xCLG1CQUFtQixDQUE0QjtJQUMvRCxPQUFPLENBQTRCO0lBQ25DLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDN0Isa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQ3BDLGNBQWMsQ0FBbUI7SUFDakMsWUFBWSxDQUF3RztJQUM3RyxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUMzQyxZQUFZLENBQVE7SUFDcEIsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUU1QixZQUFtQixjQUE4QixFQUFTLEtBQW1CLEVBQVMsTUFBaUIsRUFDeEUsTUFBMEI7UUFEdEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDeEUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFBQyxDQUFDO3FCQUN2RixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dCQUFDLENBQUM7Z0JBQ3hGLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO3FCQUFNLENBQUM7b0JBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztnQkFDM0MsSUFBSSxJQUFJLENBQUMsV0FBVztvQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuSSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDakYsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBQ00sT0FBTyxDQUFDLEtBQWE7UUFDMUIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNELFVBQVU7UUFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDbEQsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLDZDQUE2QyxFQUFFO1NBQzlELENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFjO1FBQ2pCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNyQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQTtZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7Z0JBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pELGFBQWEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUk7YUFDdEQsQ0FBQyxDQUFBO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO2dCQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdEQsb0JBQW9CLEVBQUUsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDdkMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzt3QkFDM0IsZUFBZSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDekMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7cUJBQzNELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVMLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3hELG9CQUFvQixFQUFFLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzt3QkFDM0IsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDO3dCQUMzQyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO3FCQUM3RCxDQUFDLENBQUE7b0JBQ0YsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7Z0JBQ3ZDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEgsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUMvRixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEgsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDbkcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNoQyxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RELGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BGLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsWUFBWSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25ELElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsZUFBZSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxjQUFjLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFELGlCQUFpQixFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3RCxnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUQsa0JBQWtCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlELGNBQWMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUQsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2RCxvQkFBb0IsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDM0MsdUJBQXVCLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQy9DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO2dCQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNqRCxhQUFhLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJO2FBQ3RELENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2SCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQjtvQkFBRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFBO1lBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELDZCQUE2QixDQUFDLFNBQW1CO1FBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwSixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyRixNQUFNLEtBQUssR0FBRztnQkFDWixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQzFELGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjO2dCQUN0RCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7YUFDakIsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2hILElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzt3QkFDM0Isa0JBQWtCLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQzt3QkFDL0IsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7d0JBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDO3dCQUNqQixvQkFBb0IsRUFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUM7d0JBQzlDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMxRSxDQUFDLENBQUM7b0JBQ0gsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFpQixFQUFFLEVBQUUsR0FBRyxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2xGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ25CLE1BQU0sT0FBTyxHQUFRO3dCQUNuQixJQUFJLEVBQUUsbUJBQW1CO3dCQUN6QixRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO3FCQUM1RyxDQUFBO29CQUNELElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3ZGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUN4SCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQ3hEOzRCQUNFLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUs7NEJBQ2hFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSzs0QkFDcEUsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUs7NEJBQ3RELGFBQWEsRUFBRSxlQUFlLEVBQUUsS0FBSzs0QkFDckMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO3lCQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTO29CQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZSxJQUFJLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUM7SUFDckcsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQy9HLElBQUksSUFBSSxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzFELElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTzt3QkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDckQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixDQUFDO1lBQ0gsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0UsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQzFCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQzt1R0F2UlUsaUJBQWlCLHFHQTBCbEIsWUFBWTsyRkExQlgsaUJBQWlCLG9iQ2Q5Qiwybk5BZ0lBOzsyRkRsSGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7OzBCQThCdEIsTUFBTTsyQkFBQyxZQUFZO3lDQXpCWSxZQUFZO3NCQUE3QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ1csY0FBYztzQkFBakQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ1YsU0FBUztzQkFBekIsTUFBTTtnQkFDVSxlQUFlO3NCQUEvQixNQUFNO2dCQVFTLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgSW5wdXQsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbUV2ZW50LCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgQ29vbG1hcFNlcnZpY2UsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLXJvdXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1yb3V0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1yb3V0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFkZFJvdXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlclBpY2t1cCcpIHB1YmxpYyBmaWx0ZXJQaWNrdXAhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmaWx0ZXJEZWxpdmVyeScpIHB1YmxpYyBmaWx0ZXJEZWxpdmVyeSE6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTmF2ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdXBkYXRlUm91dGVMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwaWNrdXBPcHRpb25zOiBhbnkgPSBbXTtcbiAgZGVsaXZlcnlPcHRpb25zOiBhbnkgPSBbXTtcbiAgcmVxdWVzdFBhcm1zRm9yUm91dGVEZXRhaWxzID0geyBwaWNrdXBfbGF0X2xuZzogJycsIGRlbGl2ZXJ5X2xhdF9sbmc6ICcnIH1cbiAgY3VzdG9tZXJzTGlzdDogYW55ID0gW107XG4gIHVuaXRzTGlzdDogYW55ID0gW107XG4gIG1hdGVyaWFsc0xpc3Q6IGFueSA9IFtdO1xuICBhZGRSb3V0ZUZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3V0ZURhdGEhOiBSb3V0ZTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG4gIHJvdXRlSWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByZXZlbnRTYXZlOiBib29sZWFuID0gZmFsc2U7XG4gIHByZXZlbnRJbml0aWFsU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXN0b21lcnNMaXN0JCE6IE9ic2VydmFibGU8YW55PjtcbiAgcm91dGVEZXRhaWxzITogeyBwaWNrdXBfbG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7IGRlbGl2ZXJ5X2xvY2F0aW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkOyB9IHwgbnVsbDtcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwb3B1cERldGFpbHM6IFJvdXRlO1xuICBlbmFibGVQb3BVcDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2YW50UG9wdXBDbG9zZSA9IGZhbHNlO1xuICBlbmFibGVGb3JtOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvb2xNYXBTZXJ2aWNlOiBDb29sbWFwU2VydmljZSwgcHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHVibGljIGNvbmZpZzogQ29vbG1hcENvbmZpZ01vZGVsKSB7ICAgICAgXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hNYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIoKS50aGVuKChyZXMpPT57ICAgICAgICBcbiAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gcmVzO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hNYXRlcmlhbHNMaXN0KCkudGhlbigocmVzKT0+e1xuICAgICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXM7XG4gICAgICB9KTtcbiAgICB9XG4gICBcbiAgICB0aGlzLnV0aWxzLmZldGNoVW5pdHNMaXN0KCkudGhlbigocmVzKT0+e1xuICAgICAgdGhpcy51bml0c0xpc3QgPSByZXM7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtSW5pdCgpO1xuICAgIHRoaXMudXRpbHMuZ2V0cm91dGVEZXRhaWxzVXRpbGl0eS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgaWYgKHJlc1snZXZlbnQnXSAhPT0gJ2NsaWNrJyAmJiAhdGhpcy5wcmV2YW50UG9wdXBDbG9zZSkgeyB0aGlzLmVuYWJsZVBvcFVwID0gcmVzWydldmVudCddIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5lbmFibGVQb3BVcCAmJiAhdGhpcy5wcmV2YW50UG9wdXBDbG9zZSkgeyB0aGlzLnByZXZhbnRQb3B1cENsb3NlID0gdHJ1ZTsgfVxuICAgICAgICBpZiAocmVzWydldmVudCddICE9PSAnY2xpY2snICYmICFyZXNbJ2V2ZW50J10gJiYgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSkge1xuICAgICAgICAgIHRoaXMucG9wdXBEZXRhaWxzID0gdGhpcy51dGlscy5nZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHN2MicpO1xuICAgICAgICB9IGVsc2UgeyB0aGlzLnBvcHVwRGV0YWlscyA9IHJlc1sncm91dGUnXSB9XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVBvcFVwKSB0aGlzLnBvcHVwRGV0YWlsc1snY3JlYXRlZF9hdCddID0gdGhpcy51dGlscy5nZXREYXRlRm9ybWF0KG5ldyBEYXRlKHRoaXMucG9wdXBEZXRhaWxzWydjcmVhdGVkX2F0J10pLCAnLycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZpbHRlckN1c3RvbWVyTGlzdCgpIHtcbiAgICB0aGlzLmN1c3RvbWVyc0xpc3QkID0gdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2N1c3RvbWVyX25hbWUnXS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBtYXAodmFsdWUgPT4gdGhpcy5fZmlsdGVyKHZhbHVlIHx8ICcnKSksXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgX2ZpbHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21lcnNMaXN0LmZpbHRlcigob3B0aW9uOiBhbnkpID0+IG9wdGlvblsnY3VzdG9tZXJfbmFtZSddLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3JvdXRlRGF0YSddICYmICFjaGFuZ2VzWydyb3V0ZURhdGEnXVsnY3VycmVudFZhbHVlJ10pIHRoaXMuaW5JdChudWxsKTtcbiAgfVxuICBvcGVuRGlhbG9nKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7IGJvZHk6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcm91dGU/JyB9LFxuICAgIH0pO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4geyBpZiAocmVzKSB7IHRoaXMuZGVsZXRlUm91dGUoKSB9IH0pO1xuICB9XG4gIGVkaXRFdmVudCgpIHtcbiAgICB0aGlzLnByZXZhbnRQb3B1cENsb3NlID0gZmFsc2U7XG4gICAgdGhpcy5lbmFibGVGb3JtID0gdHJ1ZTsgdGhpcy5lbmFibGVQb3BVcCA9IGZhbHNlO1xuICAgIHRoaXMucG9wdXBEZXRhaWxzWydwcmV2ZW50J10gPSBmYWxzZTtcbiAgICB0aGlzLnV0aWxzLnJlbW92ZU1hcEVudGl0eS5uZXh0KHRoaXMucG9wdXBEZXRhaWxzKTtcbiAgICB0aGlzLmluSXQodGhpcy5wb3B1cERldGFpbHMpO1xuICB9XG4gIGluSXQoY2hhbmdlczogUm91dGUpIHtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgaWYgKCFjaGFuZ2VzWydwcmV2ZW50J10pIHtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wYXRjaEZvcm1WYWx1ZShjaGFuZ2VzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKHRydWUpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZW5hYmxlRm9ybSA9IHRydWU7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgdGhpcy5wYXRjaEZvcm1WYWx1ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Db250cm9sVmFsdWUoKTtcbiAgICBpZiAodGhpcy5jb25maWcucmVwb3NpdG9yeSA9PT0gJ2N1c3RvbWVyJykge1xuICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIuaWQsXG4gICAgICAgIGN1c3RvbWVyX25hbWU6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5uYW1lLFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51dGlscy5mZXRjaEN1c3RvbWVyc0xpc3QoKS50aGVuKChyZXMpPT57XG4gICAgICAgIHRoaXMuY3VzdG9tZXJzTGlzdCA9IHJlczsgdGhpcy5maWx0ZXJDdXN0b21lckxpc3QoKTsgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2N1c3RvbWVyX25hbWUnXS5lbmFibGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBmcm9tRXZlbnQodGhpcy5maWx0ZXJQaWNrdXAubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgxNTApKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnV0aWxzLmF1dG9jb21wbGV0ZSh0aGlzLmZpbHRlclBpY2t1cClcbiAgICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgIHBpY2t1cF9sb2NhdGlvbjogcmVzWydmb3JtYXR0ZWRfYWRkcmVzcyddLFxuICAgICAgICAgICAgICAgIHBpY2t1cF9sYXRfbG5nOiAocmVzWydsYXQnXSArICcsJyArIHJlc1snbG5nJ10pLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UuY2xlYXJCb3VuZFdpdGhDb3JkaW5hdGVzKCk7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50KHRoaXMuZmlsdGVyRGVsaXZlcnkubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgxNTApKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnV0aWxzLmF1dG9jb21wbGV0ZSh0aGlzLmZpbHRlckRlbGl2ZXJ5KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgZGVsaXZlcnlfbG9jYXRpb246IHJlc1snZm9ybWF0dGVkX2FkZHJlc3MnXSxcbiAgICAgICAgICAgICAgZGVsaXZlcnlfbGF0X2xuZzogKHJlc1snbGF0J10gKyAnLCcgKyByZXNbJ2xuZyddKS50b1N0cmluZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZvcm1Db250cm9sVmFsdWUoKSB7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3BpY2t1cF9sb2NhdGlvbiddPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sb2NhdGlvbiAmJiByZXMgIT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sb2NhdGlvbikge1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHsgcGlja3VwX2xhdF9sbmc6ICcnIH0pO1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbG9jYXRpb24nXT8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sb2NhdGlvbiAmJiByZXMgIT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoeyBkZWxpdmVyeV9sYXRfbG5nOiAnJyB9KTtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2RlbGl2ZXJ5X2xhdF9sbmcnXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmb3JtSW5pdCgpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgcm91dGVfbmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgY3VzdG9tZXJfbmFtZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgY3VzdG9tZXJfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBtYXRlcmlhbHNfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHVuaXRfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBhdGg6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBpY2t1cF9sb2NhdGlvbjogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGlja3VwX2xhdF9sbmc6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGRlbGl2ZXJ5X2xvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBkZWxpdmVyeV9sYXRfbG5nOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBlc3RpbWF0ZWRfZGlzdGFuY2U6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGVzdGltYXRlZF90aW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBub3RlOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyMDQ4KV0pLFxuICAgICAgdHJ1Y2tlcl9wYXlfZXN0aW1hdGU6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICAgIGN1c3RvbWVyX3ByaWNlX2VzdGltYXRlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwYXRjaEZvcm1WYWx1ZShkYXRhPzogUm91dGUpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5yZXNldCgpO1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoZGF0YSEpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7ICAgICAgXG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZCxcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLm5hbWUsXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnJvdXRlSWQgPSBkYXRhPy5yb3V0ZV9pZDtcbiAgICB0aGlzLnJvdXRlRGV0YWlscyA9IGRhdGEgPyB7IHBpY2t1cF9sb2NhdGlvbjogZGF0YS5waWNrdXBfbG9jYXRpb24sIGRlbGl2ZXJ5X2xvY2F0aW9uOiBkYXRhLmRlbGl2ZXJ5X2xvY2F0aW9uIH0gOiBudWxsO1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHsgaWYgKHRoaXMucHJldmVudEluaXRpYWxTYXZlKSB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IGZhbHNlIH1cbiAgICB9KTtcbiAgICB0aGlzLmZpbHRlckN1c3RvbWVyTGlzdCgpO1xuICAgIGF3YWl0IHRydWU7XG4gIH1cblxuICBjaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbihpc2luaXRpYWw/OiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlPy5kZWxpdmVyeV9sYXRfbG5nPy5sZW5ndGggPiAwICYmIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlPy5waWNrdXBfbGF0X2xuZz8ubGVuZ3RoID4gMCAmJiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKSB7XG4gICAgICBsZXQgdW5pdCA9IHRoaXMudW5pdHNMaXN0LmZpbmQoKHg6IGFueSkgPT4geC5pZCA9PT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUudW5pdF9pZCk7XG4gICAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgICAgZGVsaXZlcnlfbGF0X2xuZzogdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUuZGVsaXZlcnlfbGF0X2xuZyxcbiAgICAgICAgcGlja3VwX2xhdF9sbmc6IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sYXRfbG5nLFxuICAgICAgICB1bml0OiB1bml0Py50eXBlXG4gICAgICB9O1xuICAgICAgdGhpcy51dGlscy5wb3N0ZGF0YSgnY2FsY3VsYXRlL3JvdXRlcy9lc3RpbWF0aW9uJywgcGFyYW0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcyAmJiByZXNbJ3BhdGgnXSkge1xuICAgICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgZXN0aW1hdGVkX2Rpc3RhbmNlOiByZXNbJ2Rpc3QnXSxcbiAgICAgICAgICAgIGVzdGltYXRlZF90aW1lOiByZXNbJ3RpbWUnXSxcbiAgICAgICAgICAgIHBhdGg6IHJlc1sncGF0aCddLFxuICAgICAgICAgICAgdHJ1Y2tlcl9wYXlfZXN0aW1hdGU6IHJlc1sndHJ1Y2tlcl9oYXVsX2Nvc3QnXSxcbiAgICAgICAgICAgIGN1c3RvbWVyX3ByaWNlX2VzdGltYXRlOiAoKygrcmVzWyd0cnVja2VyX2hhdWxfY29zdCddIC8gMC44MCkudG9GaXhlZCgyKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgcGF0aCA9IHJlc1sncGF0aCddLnNwbGl0KCc7Jyk7XG4gICAgICAgICAgcGF0aCA9IHBhdGgubWFwKChlbGU6IHN0cmluZyB8IGFueSkgPT4geyByZXR1cm4gZWxlID0gdGhpcy5mb3JtYXRlTGF0TG9uZyhlbGUpIH0pO1xuICAgICAgICAgIHJlc1sncGF0aCddID0gcGF0aDtcbiAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgZmVhdHVyZXM6IFt7IHR5cGU6ICdGZWF0dXJlJywgcHJvcGVydGllczoge30sIGdlb21ldHJ5OiB7IHR5cGU6ICdMaW5lU3RyaW5nJywgY29vcmRpbmF0ZXM6IHJlc1sncGF0aCddIH0gfV1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jb29sTWFwU2VydmljZS5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXQgPSB0aGlzLnVuaXRzTGlzdC5maW5kKCh4OiBhbnkpID0+IHguaWQgPT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnVuaXRfaWQpO1xuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxEZXRhaWxzID0gdGhpcy5tYXRlcmlhbHNMaXN0LmZpbmQoKHg6IGFueSkgPT4geC5zdWJfbWF0ZXJpYWxfaWQgPT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLm1hdGVyaWFsc19pZCk7XG4gICAgICAgICAgICB0aGlzLmNvb2xNYXBTZXJ2aWNlLmxvYWRNYXBQcm9wZXJ0eShlbGVtZW50LCAxLCB1bml0Py50eXBlLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGlja3VwX2xvY2F0aW9uOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ3BpY2t1cF9sb2NhdGlvbicpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBkZWxpdmVyeV9sb2NhdGlvbjogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdkZWxpdmVyeV9sb2NhdGlvbicpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICByb3V0ZV9uYW1lOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ3JvdXRlX25hbWUnKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWxMYWJlbDogbWF0ZXJpYWxEZXRhaWxzPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB1bml0OiB1bml0Py50eXBlXG4gICAgICAgICAgICAgIH0pLnRoZW4oKHJlcykgPT4geyB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvb2xNYXBTZXJ2aWNlLnJlbW92ZVJvdXRlQW5kTWFya2VyKDEpO1xuICAgICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlc1snc3RhdHVzJ10sICdlcnJvcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlSWQgJiYgaXNpbml0aWFsKSB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgeyB0aGlzLmNvb2xNYXBTZXJ2aWNlLnJlbW92ZVJvdXRlQW5kTWFya2VyKDEpIH1cbiAgfVxuXG4gIGZvcm1hdGVMYXRMb25nKGxhdGxvbmc6IHN0cmluZykgeyByZXR1cm4gbGF0bG9uZyA/IGxhdGxvbmcuc3BsaXQoJywnKS5tYXAoeCA9PiAreCkucmV2ZXJzZSgpIDogbnVsbCB9XG4gIHNhdmVSb3V0ZSgpIHtcbiAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMucHJldmVudFNhdmUgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmFkZFJvdXRlRm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZUlkID8gdGhpcy51dGlscy5wb3N0ZGF0YSgndXBkYXRlL3JvdXRlcycsIGRhdGEpIDogdGhpcy51dGlscy5wb3N0ZGF0YSgnYWRkL3JvdXRlcycsIGRhdGEpXG4gICAgICBpZiAodGhpcy5yb3V0ZUlkKSBkYXRhWydpZCddID0gdGhpcy5yb3V0ZUlkO1xuICAgICAgdXJsLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSb3V0ZUxpc3QuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXMubWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICAgICAgaWYgKCF0aGlzLnJvdXRlSWQpIHRoaXMuY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzLm1lc3NhZ2UsICdlcnJvcicpO1xuICAgICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LCAoZXJyKSA9PiB7IGlmIChlcnIpIHsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7IH0gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB9XG4gIH1cbiAgZGVsZXRlUm91dGUoKSB7XG4gICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ2RlbGV0ZS9yb3V0ZXMnLCB7IHV1aWQ6IHRoaXMucm91dGVJZCB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXNbJ2RhdGEnXVsnc3VjY2VzcyddKSB7XG4gICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlc1snZGF0YSddWydtZXNzYWdlJ10sICdzdWNjZXNzJyk7XG4gICAgICAgIHRoaXMudXBkYXRlUm91dGVMaXN0LmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJyk7XG4gICAgICAgIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcignU29tdGhpbmcgd2VudCB3cm9uZycsICdlcnJvcicpO1xuICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlIH0pXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGRyb3V0ZWJveFwiPlxuICA8ZGl2IGNsYXNzPVwicm91dGVkZXRhaWxib3hcIiAqbmdJZj1cImVuYWJsZVBvcFVwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRucm91dGVkZXRhaWxcIj5cbiAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTsgZW5hYmxlUG9wVXAgPSBmYWxzZTtcIj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gICAgICA8bGliLXJvdXRlLWluZm8tY2FyZCBbcHJvcERhdGFdPVwie2NsYXNzTmFtZTogJ3JvdXRlQ2FyZCcsIHJlcG9zaXRvcnk6IGNvbmZpZ1sncmVwb3NpdG9yeSddfVwiIFtwb3B1cERhdGFdPVwicG9wdXBEZXRhaWxzXCI+PC9saWItcm91dGUtaW5mby1jYXJkPlxuICAgIDxkaXYgY2xhc3M9XCJjcmVhdGVUeHRcIj5cbiAgICAgIDxzbWFsbD5cbiAgICAgICAgQ3JlYXRlZCBieSB7e3BvcHVwRGV0YWlsc1snY3JlYXRlZF9ieV9uYW1lJ119fSBvbiB7e3BvcHVwRGV0YWlsc1snY3JlYXRlZF9hdCddfX1cbiAgICAgIDwvc21hbGw+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZWRpdGJ0blwiIChjbGljayk9XCJlZGl0RXZlbnQoKVwiPkVkaXQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhZGRfYWRkX3JvdXRlX2JveFwiIGNka0RyYWcgW3N0eWxlLnZpc2liaWxpdHldPVwiIWVuYWJsZUZvcm0gPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b3BoZWFkaW5ncHJ0XCI+XG4gICAgICA8aDI+IHt7cm91dGVJZD8gJ0VESVQnIDogJ0FERCd9fSBST1VURSA8L2gyPlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnBydFwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwicm91dGVJZFwiIGNsYXNzPVwiZGVsYnRuXCIgKGNsaWNrKT1cIm9wZW5EaWFsb2coKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cImNoYW5nZU5hdi5uZXh0KCdBZGRyb3V0ZScpXCI+Q2xvc2U8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYWRkUm91dGVGb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm91dGVfZm9ybV9hcmVhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Um91dGUgTmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInJvdXRlX25hbWVcIiBhdXRvY29tcGxldGU9XCJub3BlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3JvdXRlX25hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICBSb3V0ZSBOYW1lIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5DdXN0b21lcl9uYW1lPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkN1c3RvbWVyIE5hbWVcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjdXN0b21lcl9uYW1lXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY3VzdG9tZXIgb2YgY3VzdG9tZXJzTGlzdCQgfCBhc3luY1wiIFt2YWx1ZV09XCJjdXN0b21lclsnY3VzdG9tZXJfbmFtZSddXCI+XG4gICAgICAgICAgICAgICAge3tjdXN0b21lclsnY3VzdG9tZXJfbmFtZSddfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snY3VzdG9tZXJfbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgIEN1c3RvbWVyIG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5QaWNrdXA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCAgdHlwZT1cInRleHRcIiBcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyUGlja3VwXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBpY2t1cF9sb2NhdGlvblwiIFxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS50b3VjaGVkICYmIGFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBwaWNrdXAgbG9jYXRpb24gZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVsaXZlcnk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFxuICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCAjZmlsdGVyRGVsaXZlcnlcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWxpdmVyeV9sb2NhdGlvblwiIFxuICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sYXRfbG5nJ10udG91Y2hlZCAmJiBhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2RlbGl2ZXJ5X2xhdF9sbmcnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBkZWxpdmVyeSBsb2NhdGlvbiBmcm9tIHRoZSBsaXN0LlxuICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ob3RlczwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhIHN0eWxlPVwiaGVpZ2h0OiAxOHB4OyByZXNpemU6IG5vbmU7XCIgbWF0SW5wdXQgbmFtZT1cIlwiIGlkPVwiXCIgY29scz1cIjMwXCIgcm93cz1cIjEwXCIgZm9ybUNvbnRyb2xOYW1lPVwibm90ZVwiIGF1dG9jb21wbGV0ZT1cIm5vcGVcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydub3RlJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XG4gICAgICAgICAgICAgIE5vdGVzIHNob3VsZCBiZSB3aXRoaW4gMjA0OCBjaGFyYWN0ZXJzLlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGQtZmxleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dGJveCBtLTBcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Vbml0IHR5cGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidW5pdF9pZFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHVuaXQgb2YgdW5pdHNMaXN0XCIgW3ZhbHVlXT1cInVuaXQ/LmlkXCI+IHt7dW5pdD8udHlwZX19IDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWyd1bml0X2lkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICBVbml0IGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dGJveCBtLTBcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5NYXRlcmlhbDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtYXRlcmlhbHNfaWRcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtYXRlcmlhbCBvZiBtYXRlcmlhbHNMaXN0XCIgW3ZhbHVlXT1cImNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY29vbG1hcCcgPyBtYXRlcmlhbD8ubWF0ZXJpYWxfaWQgOiBtYXRlcmlhbD8uc3ViX21hdGVyaWFsX2lkXCI+IHt7Y29uZmlnLnJlcG9zaXRvcnkgPT09ICdjb29sbWFwJyA/IG1hdGVyaWFsPy5tYXRlcmlhbCA6IG1hdGVyaWFsPy5sYWJlbH19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ21hdGVyaWFsc19pZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgTWF0ZXJpYWwgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPGFwcC1lc3RpbWF0aW9uLWRpc3BsYXkgKm5nSWY9XCJhZGRSb3V0ZUZvcm0/LnZhbHVlPy5waWNrdXBfbGF0X2xuZyAmJiBhZGRSb3V0ZUZvcm0/LnZhbHVlPy5kZWxpdmVyeV9sYXRfbG5nXCIgW3ZhbHVlXT1cImFkZFJvdXRlRm9ybVsndmFsdWUnXVwiPjwvYXBwLWVzdGltYXRpb24tZGlzcGxheT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwiYWRkUm91dGVGb3JtWyd2YWx1ZSddWyd0cnVja2VyX3BheV9lc3RpbWF0ZSddICYmIGFkZFJvdXRlRm9ybVsndmFsdWUnXVsnY3VzdG9tZXJfcHJpY2VfZXN0aW1hdGUnXVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnWydyZXBvc2l0b3J5J10gIT09ICdjdXN0b21lcidcIiBjbGFzcz1cImVzdGltYXRlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIFRydWNrZXIgUGF5IEVzdGltYXRlIC0gPGI+e3snJCcrIGFkZFJvdXRlRm9ybVsndmFsdWUnXVsndHJ1Y2tlcl9wYXlfZXN0aW1hdGUnXX19PC9iPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVzdGltYXRlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIEN1c3RvbWVyIFByaWNlIEVzdGltYXRlIC0gPGI+e3snJCcrIGFkZFJvdXRlRm9ybVsndmFsdWUnXVsnY3VzdG9tZXJfcHJpY2VfZXN0aW1hdGUnXX19PC9iPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzYXZlUm91dGUoKVwiICpuZ0lmPVwicHJldmVudFNhdmVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJhZGRSb3V0ZUZvcm0uaW52YWxpZCAmJiBwcmV2ZW50U2F2ZSB8fCBwcmV2ZW50SW5pdGlhbFNhdmVcIj57e3JvdXRlSWQ/ICdVcGRhdGUnIDogJ1NhdmUnfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj5cbiAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCIhcHJldmVudFNhdmVcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1325,6 +1325,7 @@ class AddRouteComponent {
|
|
|
1325
1325
|
.then((res) => {
|
|
1326
1326
|
if (res) {
|
|
1327
1327
|
this.addRouteForm.patchValue({
|
|
1328
|
+
pickup_location: res['formatted_address'],
|
|
1328
1329
|
pickup_lat_lng: (res['lat'] + ',' + res['lng']).toString()
|
|
1329
1330
|
});
|
|
1330
1331
|
this.coolMapService.clearBoundWithCordinates();
|
|
@@ -1336,6 +1337,7 @@ class AddRouteComponent {
|
|
|
1336
1337
|
this.utils.autocomplete(this.filterDelivery).then((res) => {
|
|
1337
1338
|
if (res) {
|
|
1338
1339
|
this.addRouteForm.patchValue({
|
|
1340
|
+
delivery_location: res['formatted_address'],
|
|
1339
1341
|
delivery_lat_lng: (res['lat'] + ',' + res['lng']).toString()
|
|
1340
1342
|
});
|
|
1341
1343
|
this.checkAndFetchRouteInformation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggdirect-coolmap.mjs","sources":["../../../projects/coolmap/src/lib/component/map/map.component.ts","../../../projects/coolmap/src/lib/component/map/map.component.html","../../../projects/coolmap/src/lib/component/nav/nav.component.ts","../../../projects/coolmap/src/lib/component/nav/nav.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/route-jobcode-list.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/route-jobcode-list.component.html","../../../projects/coolmap/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.ts","../../../projects/coolmap/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.html","../../../projects/coolmap/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.ts","../../../projects/coolmap/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.html","../../../projects/coolmap/src/lib/component/shared/job-route-list/job-route-list.component.ts","../../../projects/coolmap/src/lib/component/shared/job-route-list/job-route-list.component.html","../../../projects/coolmap/src/lib/component/shared/jobcode-status/jobcode-status.component.ts","../../../projects/coolmap/src/lib/component/shared/jobcode-status/jobcode-status.component.html","../../../projects/coolmap/src/lib/component/shared/jobcode-overview/jobcode-overview.component.ts","../../../projects/coolmap/src/lib/component/shared/jobcode-overview/jobcode-overview.component.html","../../../projects/coolmap/src/lib/component/shared/route-info-card/route-info-card.component.ts","../../../projects/coolmap/src/lib/component/shared/route-info-card/route-info-card.component.html","../../../projects/coolmap/src/lib/component/job-code/job-code.component.ts","../../../projects/coolmap/src/lib/component/job-code/job-code.component.html","../../../projects/coolmap/src/lib/component/shared/dialog/dialog.component.ts","../../../projects/coolmap/src/lib/component/shared/dialog/dialog.component.html","../../../projects/coolmap/src/lib/component/shared/estimation-display/estimation-display.component.ts","../../../projects/coolmap/src/lib/component/shared/estimation-display/estimation-display.component.html","../../../projects/coolmap/src/lib/component/add-route/add-route.component.ts","../../../projects/coolmap/src/lib/component/add-route/add-route.component.html","../../../projects/coolmap/src/lib/coolmap.module.ts","../../../projects/coolmap/src/public-api.ts","../../../projects/coolmap/src/aggdirect-coolmap.ts"],"sourcesContent":["import { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { CoolmapService } from '@aggdirect/coolmap-services';\n\n\n\n@Component({\n selector: 'app-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.css']\n})\nexport class MapComponent implements OnDestroy {\n @ViewChild('map', { static: true }) public mapDiv!: ElementRef;\n enableProgress: boolean = true;\n public destroyer$ = new Subject<boolean>();\n\n constructor( public coolmapService: CoolmapService ) { }\n\n ngAfterViewInit() {\n this.coolmapService.reintiatecoolmap.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n this.enableProgress = true;\n if (res) {\n this.coolmapService.initiateMapForAddRoute(this.mapDiv.nativeElement).then((res) => {\n this.enableProgress = false;\n })\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div>\n <mat-progress-bar *ngIf=\"enableProgress\" mode=\"indeterminate\"></mat-progress-bar>\n <div #map class=\"coolmap\" style=\"height: 100vh;\"></div>\n</div>\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\nimport { CoolmapService, UtilsService } from '@aggdirect/coolmap-services';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.scss']\n})\nexport class NavComponent implements OnDestroy {\n @Output() public drawer = new EventEmitter<boolean>();\n @Output() public changeNav = new EventEmitter<string>();\n navValue: string = 'Jobcode';\n isnavChange: boolean = true;\n paddinForJobCode = { top: 0, bottom: 250, left: 500, right: 400 };\n paddinForViewRoute = { top: 0, bottom: 400, left: 400, right: 0 };\n public destroyer$ = new Subject<boolean>();\n\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\n this.utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => { this.isnavChange = res })\n this.coolMap.setPadding(this.paddinForJobCode);\n }\n\n openDrawer() { this.drawer.emit(true) }\n chnageNav(name: string): void {\n if (this.isnavChange) {\n this.changeNav.emit(name); this.navValue = name; this.coolMap.clearBound();\n if (name === 'Addroute') { this.coolMap.setPadding(this.paddinForViewRoute) }\n else { this.coolMap.setPadding(this.paddinForJobCode) }\n this.utils.clearOptions();\n }\n }\n\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"nav\">\n <button (click)=\"openDrawer()\" class=\"toggle\">\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\n </button>\n\n <ul class=\"m-100\">\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\n </a>\n </li>\n\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </a>\n </li>\n </ul>\n</div>\n","import { Component, Inject, Input } from '@angular/core';\nimport { CoolmapConfigModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-view-route-list-card',\n templateUrl: './view-route-list-card.component.html',\n styleUrls: ['./view-route-list-card.component.scss']\n})\nexport class ViewRouteListCardComponent {\n @Input() public route!: Route;\n @Input() public emitrouteevent: any;\n constructor(public utils: UtilsService,\n @Inject('memberData') public config: CoolmapConfigModel) { }\n\n detailsDict(event: boolean | string, route: Route) {\n if(event === 'click') this.utils.setdictValue('route-detailsv2', JSON.stringify(route));\n route['type'] = 'editroute'; route['prevent'] = true; this.emitrouteevent.emit(route);\n this.utils.routeDetailsUtility.next({ event, route });\n }\n}\n","<div class=\"routebox\">\n <span>\n <mat-icon>directions</mat-icon>\n <h2 [ngClass]=\"{'routeheading': route['route_name']}\">\n {{route['route_name']}}\n </h2>\n </span>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{route['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? route['material'] : route['materialLabel']}}</h3>\n\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{route['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{route['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n <div class=\"infoicon\" (click)=\"detailsDict('click', route)\" (mouseover)=\"detailsDict(true, route)\"\n (mouseleave)=\"detailsDict(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"status routestatus\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n</div>\n\n","import { Component, Input } from '@angular/core';\nimport { DriverSmsCardEnum, DriversmsCardKey } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-sms-card-details-overview',\n templateUrl: './sms-card-details-overview.component.html',\n styleUrls: ['./sms-card-details-overview.component.scss']\n})\nexport class SmsCardDetailsOverviewComponent {\n @Input() public jobValue: any;\n label = DriversmsCardKey;\n overViewEnum: any = DriverSmsCardEnum;\n constructor() { }\n\n}\n","<ng-container *ngFor=\"let item of label\">\n <span>\n <label>{{overViewEnum[item]}}</label>\n <ng-container *ngIf=\"item !== 'values'\">{{jobValue[item] ? jobValue[item] : 'N/A'}}</ng-container>\n <ng-container *ngIf=\"item === 'values'\">{{jobValue[item]['Done'] + jobValue[item]['Ongoing'] + jobValue[item]['Open']}}</ng-container>\n </span>\n</ng-container>\n","import { Component, EventEmitter, Input, Output, Inject } from '@angular/core';\nimport { CoolmapConfigModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-job-code-list-card',\n templateUrl: './job-code-list-card.component.html',\n styleUrls: ['./job-code-list-card.component.scss']\n})\nexport class JobCodeListCardComponent {\n @Input() public route!: Route;\n @Output() public routeSeletion = new EventEmitter();\n @Output() public toggleDrivermenu = new EventEmitter();\n @Input() public emitJobdetails: any;\n @Input() public preventCloseDetails!: boolean;\n constructor(public utils: UtilsService,\n @Inject('memberData') public config: CoolmapConfigModel) { }\n\n selectRoute(route: Route) { this.routeSeletion.emit(route) }\n toggleDriverlist(mouseevntType: boolean | string, route: Route, isHoverOut?: boolean) {\n const data = { mouseevntType, route, isHoverOut }\n this.toggleDrivermenu.emit(data);\n if (mouseevntType === 'click') this.utils.setdictValue('driver-details', JSON.stringify(this.route));\n }\n toggleJobCodeDetails(mouseEventType: boolean, route: Route) {\n if (mouseEventType) { route['type'] = 'jobcode'; this.emitJobdetails.emitroute.emit(route) }\n else if(!mouseEventType && this.preventCloseDetails){\n route = this.utils.getdictValue('route-details');\n route['type'] = 'jobcode'; this.emitJobdetails.emitroute.emit(route)\n }\n else if (!mouseEventType && !this.preventCloseDetails) this.emitJobdetails.clearJobDetailsFromList.emit(true);\n }\n calculateStatusPercentage(type: string, route: any) {\n const total = route['Done'] + route['Ongoing'] + route['Open'];\n if (type === 'done') { return Math.round((100 * route['Done']) / total) }\n else if (type === 'ongoing') { return Math.round((100 * route['Ongoing']) / total) }\n else if (type === 'open') { return Math.round((100 * route['Open']) / total) }\n else { return null }\n }\n setRouteItem(){\n this.utils.preVentJobdetailclose.next(true);\n this.utils.setdictValue('route-details', JSON.stringify(this.route));\n }\n}\n","<div class=\"innerbox\">\n <div class=\"inputarea\">\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\n <label> </label>\n <div class=\"border\"></div>\n </div>\n <div class=\"job_intro\">\n <div class=\"heading\">\n <h2>\n {{route['order_number'] ? route['order_number'] : ''}}\n </h2>\n |\n <span>\n {{route['customer_name']}}\n </span>\n |\n <span>\n {{route['project']}}\n </span>\n </div>\n <div class=\"destinationprt\">\n <span style=\"padding-left: 0;\">\n {{route['pickup_location']}}\n </span>\n <b>></b>\n <span>\n {{route['delivery_location']}}\n </span>\n </div>\n <div class=\"mat_cat\">\n <span>\n {{route['material']}}\n </span>\n </div>\n\n <div class=\"statusbar\">\n <div class=\"status_percent\">\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\n </div>\n </div>\n </div>\n <div class=\"statusarea\">\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n <div class=\"driver_icon\" *ngIf=\"config.repository !== 'customer'\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\n (click)=\"toggleDriverlist('click', route)\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { FormControl, Validators } from '@angular/forms';\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-route-jobcode-list',\n templateUrl: './route-jobcode-list.component.html',\n styleUrls: ['./route-jobcode-list.component.scss']\n})\nexport class RouteJobCodeListComponent implements OnInit, OnChanges {\n @Input() public loader = true;\n @Input() public type: string = '';\n @Input() public data: Route[] = [];\n @Input() public currentNav: string = ''\n @Output() public emitroute = new EventEmitter();\n @Output() public showAllRoute = new EventEmitter();\n preventMouseout: boolean = false;\n filterList: Route[] = this.data;\n @Input() public searchTerm!: any;\n isDriverList: boolean = false;\n public selectedRoute = new SelectionModel<any>(true, [])\n driverList!: any;\n preventListSelect: boolean = false;\n @Output() public clearJobDetailsFromList = new EventEmitter();\n preventDetailsClose = false;\n messageLoader: boolean = false;\n driverMessage = new FormControl('', [Validators.maxLength(256)]);\n @Input() public clearListSeletion: boolean;\n isSmsList: boolean = false;\n constructor(public coolMap: CoolmapService, public utils: UtilsService) { this.driverList = [] }\n ngOnInit(): void {\n this.utils.getpreVentJobdetailclose.subscribe(res => { this.preventDetailsClose = res });\n this.utils.removeMapEntityUtility.subscribe((res: Route) => {this.passRoute(res)});\n }\n passRoute(job: Route) {\n this.data.forEach((each) => { if (each['route_id'] !== job['route_id']) { each['isActive'] = false } else { each['isActive'] = true } });\n if (this.type == 'addroute') this.filterList.forEach(ele => this.coolMap.filterRoute(ele['route_id'], 'none'));\n }\n selectRoute(route: any) {\n if (!this.preventListSelect) {\n this.preventListSelect = true;\n this.selectedRoute.toggle(route);\n this.clearJobDetailsFromList.emit(true);\n this.utils.preVentJobdetailclose.next(false);\n this.filterList.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'none'));\n this.clearList();\n this.selectedRoute.selected.forEach((ele, index) => {\n this.coolMap.filterRoute(ele['job_id'], 'visible', ((this.selectedRoute.selected.length - 1) === index)).then(() => {\n this.preventListSelect = false;\n })\n });\n if (!this.selectedRoute.selected.length) {\n this.preventListSelect = false\n this.data.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'visible'));\n };\n }\n }\n checkroutes(route: Route) {\n const selectedRoute = this.selectedRoute.selected;\n this.filterList = this.filterList.map(ele => { ele['isSelected'] = false; return ele })\n if (selectedRoute.length > 0) {\n selectedRoute.forEach(ele => {\n if (route['order_number'] === ele['order_number']) { ele['isSelected'] = true }\n });\n } return route\n }\n ngOnChanges(changes: SimpleChanges) {\n setTimeout(() => {\n if (this.currentNav === 'Addroute' && (this.data.length < this.filterList.length)) {\n const index = this.filterList.findIndex(ele => ele.isActive);\n if (index > 0) this.filterList[index].isActive = false;\n this.data.forEach((ele: Route, indexForData: number) => {\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id'])\n this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {\n });\n });\n }\n }, 500);\n if (changes['data'] && changes['data']['currentValue']) {\n this.filterList = changes['data']['currentValue'];\n if (this.searchTerm) {\n if (this.searchTerm.length > 0) {\n this.data = this.utils.getSearchResults(changes['data']['currentValue'], this.searchTerm);\n this.filterList = this.data;\n } else {\n this.filterList = changes['data']['currentValue'];\n }\n }\n\n if (this.type === 'jobcode') {\n this.loader = true; this.clearList();\n if (this.filterList.length === 0) this.loader = false;\n }\n\n if (this.type !== 'jobcode') {\n if (changes['data']['previousValue'] && this.currentNav === 'addForm') {\n const activeRoute = changes['data']['previousValue'].find((ele: Route) => ele.isActive);\n if (activeRoute) {\n this.filterList.map((item: any) => {\n if (item.route_id === activeRoute.route_id) {\n item.isActive = true;\n }\n })\n }\n }\n }\n if (changes['data']['previousValue'] && this.currentNav !== 'addForm') {\n this.coolMap.removeJobFromMap(changes['data']['previousValue']);\n this.selectedRoute.clear();\n };\n if (this.currentNav !== 'addForm') {\n changes['data']['currentValue'].forEach((ele: Route, indexForData: number) => {\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id'])\n if(this.type === 'jobcode') ele.materialLabel = ele.material;\n this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {\n if (indexForData === (this.data.length - 1)) {\n this.loader = false;\n this.utils.preventnavChange.next(true);\n }\n });\n });\n }\n }\n if (changes['searchTerm']) {\n if (this.filterList) {\n this.data = this.filterList;\n this.clearList();\n if (changes['searchTerm']['currentValue'].length > 0) {\n this.coolMap.removeRouteAndMarker(1);\n this.data = this.utils.getSearchResults(this.data, changes['searchTerm']['currentValue']);\n } else { this.data = this.filterList; }\n setTimeout(() => {\n this.coolMap.clearBoundWithCordinates();\n if (this.currentNav !== 'addForm' && !this.selectedRoute['selected'].length) {\n this.coolMap.removeRouteAndMarker(1);\n this.toggleFilterRoute(this.filterList);\n }\n }, 500);\n if (this.currentNav !== 'addForm' && this.selectedRoute['selected'].length) {\n if (this.data && this.data.length > 0) {\n this.clearList();\n this.clearJobDetailsFromList.emit(true)\n this.coolMap.removeJobFromMap(this.selectedRoute.selected);\n setTimeout(() => {\n this.data.forEach((ele, indexForData) => {\n this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === (this.data.length - 1))).then(() => {\n if (indexForData === (this.data.length - 1)) { this.loader = false; this.utils.preventnavChange.next(true) }\n if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {\n this.selectedRoute.clear()\n }\n });\n })\n }, 500);\n }\n }\n }\n }\n }\n showRoute() {\n this.utils.preventnavChange.next(false);\n this.loader = true; this.clearList();\n this.showAllRoute.emit(true);\n if (this.filterList && this.filterList.length > 0) {\n this.coolMap.removeJobFromMap(this.selectedRoute.selected);\n setTimeout(() => {\n this.filterList.forEach((ele, indexForData) => {\n this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === this.filterList.length - 1)).then(() => {\n if (indexForData === this.filterList.length - 1) { this.loader = false; this.utils.preventnavChange.next(true) }\n if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {\n this.selectedRoute.clear();\n }\n });\n })\n }, 500);\n }\n }\n toggleDrivermenu(event: any) {\n const mouseevntType = event.mouseevntType; let route = event.route;\n const isHoverOut = event.isHoverOut;\n if(typeof(mouseevntType) === 'string') {if(this.preventMouseout){this.isDriverList = !this.isDriverList}; this.preventMouseout = true}\n if (typeof(mouseevntType) === 'boolean' &&!mouseevntType && !this.preventMouseout) { this.isDriverList = mouseevntType };\n if (typeof(mouseevntType) === 'boolean' && mouseevntType && !this.preventMouseout) { this.isDriverList = mouseevntType };\n if(this.preventMouseout && !this.isDriverList) this.preventMouseout = false;\n if (isHoverOut) {\n if (this.preventMouseout) {\n route = this.utils.getdictValue('driver-details');\n this.driverList = route;\n }\n if (!this.preventMouseout) {\n this.driverList = route\n }\n } else {\n this.driverList = route\n }\n }\n visiblesection(value: string) { if (this.type === value) { return true } else return false }\n toggleFilterRoute(filterList: Route[]) {\n filterList.forEach((ele) => {\n const filterItem = (this.type === 'jobcode') ? 'job_id' : 'route_id';\n const index = this.data.findIndex((ele1) => { return (ele1[`${filterItem}`] === ele[`${filterItem}`]) });\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);\n if (id && index < 0) this.coolMap.filterRoute(id, 'none');\n if (id && index >= 0) {\n this.data[index].isActive = false;\n this.coolMap.filterRoute(id, 'visible');\n this.coolMap.extendBound(ele['path'], (index === (this.data.length - 1)));\n };\n });\n }\n clearList() {\n this.isDriverList = false; this.driverList = null; this.preventMouseout = false; this.isSmsList = false;\n }\n sendMessage() {\n this.messageLoader = true\n if (this.driverMessage.valid) {\n const data = {\n order_number: this.driverList['order_number'],\n date: this.driverList['date'],\n message: this.driverMessage.value,\n }\n this.utils.postdata('jobs_report_chat', data).subscribe((res: any) => {\n if (res['data']['status'] === 'Success.') {\n this.messageLoader = false;\n this.driverMessage.reset();\n this.utils.openSnackBar('Message Sent', 'success');\n } else {\n this.messageLoader = false;\n this.utils.openSnackBar('Message not sent', 'error');\n }\n }, err => {if(err) {this.messageLoader = false}})\n }\n }\n}\n","<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Output, Input, SimpleChanges, OnDestroy, Inject } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { CoolmapConfigModel, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';\nimport { map, Observable, startWith } from 'rxjs';\ninterface Filter {\n name?: string;\n type: string;\n value: any;\n label?: string;\n}\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-add-route-nav',\n templateUrl: './add-route-nav.component.html',\n styleUrls: ['./add-route-nav.component.scss']\n})\n\nexport class AddRouteNavComponent implements OnDestroy {\n filterForm = new FormGroup({ search: new FormControl() });\n filteredOptions!: Observable<any[]> | undefined;\n filters: Filter[] = [];\n loaderVal = false;\n routes: Route[] = [];\n @Output() public changeNav = new EventEmitter<string | any>();\n @Input() public navValue: string = '';\n @Output() public addemit = new EventEmitter();\n @Input() public updateRouteList: boolean = false;\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n\n public destroyer$ = new Subject<boolean>();\n preventListUpdate: boolean = false;\n unitList: any;\n materialsList: any;\n constructor(public utils: UtilsService,\n @Inject('memberData') private config: CoolmapConfigModel) {\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\n map(value => this.utils.filter(value, this.filters)));\n }\n\n showAddForm() { this.changeNav.emit('addForm'); this.addemit.emit('') }\n filterSearch(e: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n this.preventListUpdate = true;\n this.filterForm.controls.search.setValue(null);\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }]\n }\n removeFromFilter(filter: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n const index = this.filters.indexOf(filter);\n if (index >= 0) { this.filters = [] }\n }\n ngAfterViewInit(): void {\n this.checkAndCallRouteList();\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['updateRouteList'] && changes['updateRouteList']['currentValue']) this.checkAndCallRouteList();\n if (changes['navValue'] && (changes['navValue']['previousValue'] === 'addForm') && !this.preventListUpdate) this.checkAndCallRouteList();\n }\n getRoute(event: Route) { if (event['type'] === 'editroute') { this.addemit.emit(event) } }\n\n checkAndCallRouteList() {\n if (this.config.repository === 'customer') {\n this.utils.fetchUnitsList().then((res) => {\n this.unitList = res;\n this.utils.fetchMaterialsListForCustomer().then((res) => {\n this.materialsList = res;\n this.getRouteListForCustomer();\n });\n });\n } else {\n this.getRouteListForCoolMap()\n }\n }\n getUnitName(data): string {\n let unitName = '';\n this.unitList.map((res) => {\n if (res.id === data.unit_id) {\n unitName = res.type\n }\n })\n return unitName;\n }\n\n getMaterialName(data): string {\n let materialName = '';\n this.materialsList.map((res) => { \n if (res.sub_material_id === data.materials_id) {\n materialName = res.label\n }\n }) \n return materialName;\n }\n\n getRouteListForCoolMap() {\n this.utils.getData('routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.filters = [];\n this.routes = res['data']\n this.preventListUpdate = false;\n this.utils.clearOptions();\n this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });\n }\n });\n }\n\n getRouteListForCustomer() {\n const dataset = {\n customer_id: this.customerRepoDetails.customer.id\n }\n this.utils.postdata('routes/all', dataset).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.filters = [];\n this.routes = res['data']\n this.preventListUpdate = false;\n this.utils.clearOptions();\n this.routes.map((ele: Route) => {\n ele.unit = this.getUnitName(ele);\n ele.materialLabel = this.getMaterialName(ele);\n ele.material = this.getMaterialName(ele).split('|')[0].trim();\n this.utils.makeOptions(ele)\n });\n }\n });\n }\n resetSearch() { this.changeNav.emit('Addroute') }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"nav_body\">\n <div class=\"logo\">\n <img src=\"assets/images/logo.png\" alt=\"logo\" />\n </div>\n <div class=\"heading m-20\">\n <h1>View Route</h1>\n <button mat-raised-button (click)=\"showAddForm()\">\n <mat-icon>add_circle_outline</mat-icon> Add route\n </button>\n </div>\n\n <div class=\"search-panel\">\n <div class=\"w-100\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\n [disabled]=\"loaderVal\" placeholder=\"Search\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\"\n (click)=\"filterForm.reset()\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"whole_width\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </form>\n <div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row class=\"chip-grid\" (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n </div>\n </div>\n </div>\n <app-route-jobcode-list [type]=\"'addroute'\" [currentNav]=\"navValue\" [searchTerm]=\"filters\" [data]=\"routes\" [loader]=\"loaderVal\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\n</div>\n","import {\n Component,\n EventEmitter,\n Output,\n OnDestroy,\n Inject,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { MatDatepickerInputEvent } from '@angular/material/datepicker';\nimport { map, Observable, startWith } from 'rxjs';\nimport { FormControl, FormGroup } from '@angular/forms';\ninterface Filter {\n name?: string;\n type: string;\n value: any;\n label?: string;\n}\nimport { Subject, takeUntil } from 'rxjs';\nimport {\n CoolmapConfigModel,\n CustomerRepoDetailsModel,\n Route,\n UtilsService,\n} from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-job-code-nav',\n templateUrl: './job-code-nav.component.html',\n styleUrls: ['./job-code-nav.component.scss'],\n})\nexport class JobCodeNavComponent implements OnDestroy, OnChanges {\n filterForm = new FormGroup({ search: new FormControl() });\n listData: Route[] = [];\n loaderVal: boolean = false;\n dateValue = new Date();\n @Output() public jobemit = new EventEmitter();\n value = '';\n filteredOptions!: Observable<any[]> | undefined;\n filters: Filter[] = [];\n @Output() public clearJobDetails = new EventEmitter();\n public destroyer$ = new Subject<boolean>();\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n selectedDate: string;\n\n constructor(\n public utils: UtilsService,\n @Inject('memberData') private config: CoolmapConfigModel\n ) {\n this.selectedDate = this.utils.getDateFormat(new Date());\n utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe((res) => {\n if (res) {\n this.loaderVal = false;\n } else this.loaderVal = true;\n });\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['customerRepoDetails'] &&\n changes['customerRepoDetails']['currentValue']\n ) {\n this.loadData(this.selectedDate);\n this.filters = [];\n this.utils.clearViewRouteforJobCode.next(true);\n }\n }\n loadData(value: string) {\n this.selectedDate = value;\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(\n startWith(''),\n map((value) => this.utils.filter(value, this.filters))\n );\n this.utils.preventnavChange.next(false);\n this.loaderVal = true;\n let dataSet;\n if (this.config.repository === 'customer') {\n dataSet = {\n date: value,\n customer_id: this.customerRepoDetails.customer.id,\n project_id: this.customerRepoDetails.projectId,\n };\n } else {\n dataSet = { date: value };\n }\n this.utils\n .postdata('jobs_report_v2', dataSet)\n .pipe(takeUntil(this.destroyer$))\n .subscribe(\n (res: any) => {\n if (typeof res['data'] !== 'string') {\n if (res['data'].length > 0) {\n this.listData = res['data'].map((ele: Route) => {\n ele['date'] = value;\n return ele;\n });\n }\n if (this.config.repository === 'customer') {\n let projectName = window.location.href.split('project=').pop();\n projectName = projectName.toLowerCase()\n this.listData = this.listData.filter(ele => {\n const project = ele.project.toLowerCase();\n let adjustedProject = project.replace(\" \", \"_\");\n return adjustedProject === projectName\n });\n }\n this.listData.forEach((ele: Route) => {\n this.utils.makeOptions(ele);\n });\n } else this.listData = [];\n this.clearJobDetails.emit(true);\n this.utils.clearViewRouteforJobCode.next(true);\n this.filters = [];\n if (typeof res['data'] === 'string') this.utils.preventnavChange.next(true);\n },\n (err) => {\n if (err) this.utils.preventnavChange.next(true);\n }\n );\n }\n\n getRoute(job: Route) {\n if (job['type'] === 'jobcode') {\n this.jobemit.emit(job);\n }\n }\n getDate(ev: MatDatepickerInputEvent<Date>) {\n this.loadData(this.utils.getDateFormat(ev.value));\n }\n\n filterSearch(e: any): void {\n this.filterForm.controls.search.setValue(null);\n this.filterForm.controls.search.updateValueAndValidity();\n this.filters = [\n {\n name: e.source.value.label,\n type: e.source.value.type,\n value: e.source.value,\n },\n ];\n }\n removeFromFilter(filter: any): void {\n const index = this.filters.indexOf(filter);\n if (index >= 0) {\n this.filters = [];\n }\n }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"nav_body\">\n <div class=\"search-panel\">\n <div class=\"datepicker\">\n <mat-form-field>\n <mat-label>Choose a date</mat-label>\n <input readonly matInput (click)=\"picker.open()\" [disabled]=\"loaderVal\" [(ngModel)]=\"dateValue\" [matDatepicker]=\"picker\" (dateChange)=\"getDate($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n <div class=\"search\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\n [disabled]=\"loaderVal\" placeholder=\"Search\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button mat-button \n matSuffix \n mat-icon-button \n aria-label=\"Clear\" \n *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\" (click)=\"filterForm.reset()\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"whole_width\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </form>\n </div>\n\n <div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row class=\"chip-grid\" (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n </div>\n </div>\n <app-route-jobcode-list [type]=\"'jobcode'\" [searchTerm]=\"filters\" [data]=\"listData\" [loader]=\"loaderVal\" (clearJobDetailsFromList)=\"clearJobDetails.emit(true)\" (showAllRoute)=\"filters = []; clearJobDetails.emit(true)\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\nimport { map, Observable, startWith } from 'rxjs';\n\n@Component({\n selector: 'app-job-route-list',\n templateUrl: './job-route-list.component.html',\n styleUrls: ['./job-route-list.component.scss']\n})\nexport class JobRouteListComponent {\n @Output() public changeNav = new EventEmitter<string | any>();\n filteredOptions!: Observable<any[]> | undefined;\n preventListUpdate: boolean;\n filterForm = new FormGroup({ search: new FormControl() });\n filters: any[];\n @Input() public routes: Route[];\n @Input() public selectedRoute;\n @Output() public changeRoutes = new EventEmitter<string | any>();\n @Output() public changeSelectedRoute = new EventEmitter<string | any>();\n @Input() public masterRoutes: Route[];\n\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\n this.filters = [];\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\n map(value => this.utils.filter(value, this.filters)));\n }\n\n filterSearch(e: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n this.preventListUpdate = true;\n this.filterForm.controls.search.setValue(null);\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }];\n const filteredRoutes = this.utils.getSearchResults(this.masterRoutes, [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }]);\n this.changeRoutes.emit(filteredRoutes);\n this.selectedRoute.selected.forEach((item: any) => {\n const routeData = filteredRoutes.find(x => x.route_id === item.route_id);\n if (!routeData) {\n this.selectedRoute.toggle(item);\n this.changeSelectedRoute.emit(this.selectedRoute);\n this.coolMap.removeRouteAndMarker(item['route_id']).then((res: any) => {\n this.coolMap.extendReBound();\n });\n }\n })\n }\n\n removeFromFilter(filter: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n const index = this.filters.indexOf(filter);\n if (index >= 0) { this.filters = []; this.changeRoutes.emit(this.masterRoutes); }\n }\n}\n\n","<div class=\"searchprt\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\">\n <mat-label>Search</mat-label>\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.reset()\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"autocomplete\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n</form>\n</div>\n<div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Route } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-jobcode-status',\n templateUrl: './jobcode-status.component.html',\n styleUrls: ['./jobcode-status.component.scss']\n})\nexport class JobcodeStatusComponent {\n @Input() public jobValue!: Route;\n}\n","<div class=\"statusprt\" *ngIf=\"jobValue['values']\">\n <span class=\"done\"> Done - {{jobValue['values']['Done']}} </span>\n <span class=\"ongoing\"> Ongoing - {{jobValue['values']['Ongoing']}} </span>\n <span class=\"open\"> Open - {{jobValue['values']['Open']}} </span>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { JobCodeOverviewData, JobCodeOverviewEnum } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-jobcode-overview',\n templateUrl: './jobcode-overview.component.html',\n styleUrls: ['./jobcode-overview.component.scss']\n})\nexport class JobcodeOverviewComponent {\n @Input() public jobValue: any;\n label = JobCodeOverviewData;\n overViewEnum: any = JobCodeOverviewEnum;\n constructor() {}\n makeValueObject(item: string) {\n let obj;\n obj = { label: this.overViewEnum[item], value: this.jobValue[item] }\n return obj;\n }\n}\n","<div class=\"detail_view m-20\">\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>{{makeValueObject('pickup_location')['label']}}:</b> {{makeValueObject('pickup_location')['value']}}</p>\n <p class=\"dropprt\"><b>{{makeValueObject('delivery_location')['label']}}:</b> {{makeValueObject('delivery_location')['value']}}</p>\n </div>\n <ng-container *ngFor=\"let item of label\">\n <span *ngIf=\"item !== 'pickup_location' && item !== 'delivery_location'\" (mousedown)=\"$event.stopPropagation()\"><b>{{makeValueObject(item)['label']}}:</b> {{makeValueObject(item)['value']}}</span>\n </ng-container>\n </div>\n\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\n\ninterface CardEntity {\n pickup_location: string,\n delivery_location: string,\n route_name: string,\n customer_name: string,\n material: string,\n materialName: string;\n unit: string,\n estimated_distance: string,\n estimated_time: string,\n trucker_pay_estimate: string,\n customer_price_estimate: string,\n note: string,\n}\n\ninterface CardPropEntity {\n className: string,\n repository: string\n}\nconst CardKeysValue = ['route_name', 'customer_name', 'material', 'unit',\n 'estimated_distance', 'estimated_time', 'trucker_pay_estimate', 'customer_price_estimate', 'note', 'pickup_location', 'delivery_location'];\n\nenum CardElements {\n route_name = 'Name',\n customer_name = 'Customer',\n material = 'Material',\n unit = 'Type',\n estimated_distance = 'Distance',\n estimated_time = 'Travel Time',\n trucker_pay_estimate = 'Trucker Pay Estimate',\n customer_price_estimate = 'Customer Price Estimate',\n note = 'Notes',\n pickup_location = 'Pickup',\n delivery_location = 'Delivery'\n}\n\n\n@Component({\n selector: 'lib-route-info-card',\n templateUrl: './route-info-card.component.html',\n styleUrls: ['./route-info-card.component.scss']\n})\nexport class RouteInfoCardComponent {\n @Input() popupData: CardEntity;\n @Input() propData: CardPropEntity;\n cardKeysElement = CardKeysValue;\n constructor(public cdr: ChangeDetectorRef){}\n ngAfterViewInit(): void {\n if (this.propData['repository'] === 'customer') {\n this.cardKeysElement = this.cardKeysElement.filter(ele => ele !== 'trucker_pay_estimate');\n this.cdr.detectChanges();\n }\n\n }\n createLabel(itemName) {\n let obj;\n if (this.propData['repository'] === 'coolmap') {\n obj = { label: CardElements[itemName], value: this.popupData[itemName] }\n }\n if (this.propData['repository'] === 'customer') {\n if (itemName === 'material') {\n obj = { label: CardElements[itemName], value: this.popupData['materialLabel'] }\n } else {\n obj = { label: CardElements[itemName], value: this.popupData[itemName] }\n }\n }\n if (itemName === 'trucker_pay_estimate' || itemName === 'customer_price_estimate') {\n obj['value'] = obj['value'] ? '$' + obj['value'] : '';\n }\n return obj;\n }\n}\n","<div [class]=\"propData['className']\">\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b>{{createLabel('pickup_location')['value']}}</p>\n <p class=\"dropprt\"><b>Delivery:</b>{{createLabel('delivery_location')['value']}}</p>\n </div>\n <ng-container *ngFor=\"let item of cardKeysElement\">\n <span *ngIf=\"item !== 'pickup_location' && item !== 'delivery_location'\" [class.notes]=\"item === 'note'\"><b>{{createLabel(item)['label']}}:</b> {{createLabel(item)['value']}}</span>\n </ng-container>\n </div>\n</div>\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Component, OnInit, Input, Output, EventEmitter, OnDestroy, Inject } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { CoolmapConfigModel, CoolmapService, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n\n@Component({\n selector: 'app-job-code',\n templateUrl: './job-code.component.html',\n styleUrls: ['./job-code.component.scss']\n})\nexport class JobCodeComponent implements OnInit, OnDestroy {\n @Input() public jobdetail!: any;\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n isVisible: boolean = false;\n routes: Route[] = [];\n public selectedRoute = new SelectionModel<any>(true, [])\n @Output() public clearJobDetails = new EventEmitter();\n @Output() public openShareRoute = new EventEmitter(); isOverlapRouteSection = false;\n public destroyer$ = new Subject<boolean>();\n detailsCardEnable: boolean | string;\n preventMouseout: boolean = false;\n routeCardDetail: Route;\n preventListUpdate: boolean;\n masterRoutes: any;\n unitList: any;\n materialsList: any;\n\n constructor(public utils: UtilsService, public coolMap: CoolmapService,\n @Inject('memberData') public config: CoolmapConfigModel) {\n this.utils.clearViewRouteforJobCodeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {\n if (res) this.coolMap.removeJobFromMap(this.selectedRoute.selected); this.selectedRoute.clear();\n });\n }\n\n ngOnInit(): void { this.checkAndCallRouteList() }\n checkAndCallRouteList() {\n this.utils.clearOptions();\n if (this.config.repository === 'customer') {\n this.utils.fetchUnitsList().then((res) => {\n this.unitList = res;\n this.utils.fetchMaterialsListForCustomer().then((res) => {\n this.materialsList = res;\n this.getRouteListForCustomer();\n });\n });\n } else {\n this.getRouteListForCoolMap()\n }\n }\n getUnitName(data): string {\n let unitName = '';\n this.unitList.map((res) => {\n if (res.id === data.unit_id) {\n unitName = res.type\n }\n })\n return unitName;\n }\n\n getMaterialName(data): string {\n let materialName = '';\n this.materialsList.map((res) => {\n if (res.sub_material_id === data.materials_id) {\n materialName = res.label\n }\n })\n return materialName;\n }\n getRouteListForCoolMap() {\n this.utils.getData('routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.routes = res.data;\n this.masterRoutes = res.data;\n this.preventListUpdate = false;\n this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });\n }\n })\n }\n getRouteListForCustomer() {\n const dataset = {\n customer_id: this.customerRepoDetails.customer.id\n }\n this.utils.postdata('routes/all', dataset).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.routes = res.data;\n this.preventListUpdate = false;\n this.routes.map((ele: Route) => {\n ele.unit = this.getUnitName(ele);\n ele.materialLabel = this.getMaterialName(ele);\n ele.material = this.getMaterialName(ele).split('|')[0].trim();\n this.utils.makeOptions(ele)\n });\n this.masterRoutes = this.routes;\n }\n });\n }\n\n toggleSidemenu() {\n this.isVisible = !this.isVisible;\n this.detailsCardEnable = false;\n this.preventMouseout = false\n }\n clearJob() { this.clearJobDetails.emit(true); this.utils.preVentJobdetailclose.next(false) }\n selectRoute(event: Route) {\n const i = this.selectedRoute.selected.findIndex(ele => ele['order_number'] === event['order_number']);\n this.selectedRoute.toggle(event);\n if (!this.selectedRoute.isSelected(event) && event['route_id']) {\n this.coolMap.removeRouteAndMarker(event['route_id']).then((res: any) => {\n this.coolMap.extendReBound();\n });\n } else {\n this.coolMap.plotRoute(event, event['route_id'], 'jobrouteList', false, true);\n }\n }\n masterToggle() {\n if (this.routes.length === this.selectedRoute.selected.length) {\n this.selectedRoute.clear();\n this.routes.forEach(row => {\n this.coolMap.removeRouteAndMarker(row['route_id']).then((res: any) => { this.coolMap.extendReBound() })\n });\n } else {\n this.routes.forEach(row => {\n this.selectedRoute.select(row);\n this.coolMap.plotRoute(row, row['route_id'], 'jobrouteList', false, true);\n });\n }\n }\n togglerouteDetails(eventType: string | boolean, route: Route, mouseOut?: boolean) {\n if (typeof (eventType) === 'string') {\n this.preventMouseout = true; this.utils.setdictValue('route-details', JSON.stringify(route));\n }\n if (typeof (eventType) === 'boolean' && eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };\n if (typeof (eventType) === 'boolean' && !eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };\n if (this.preventMouseout && !this.detailsCardEnable) this.preventMouseout = false;\n if (mouseOut) {\n if (this.preventMouseout) {\n route = this.utils.getdictValue('route-details');\n this.routeCardDetail = route;\n }\n if (!this.preventMouseout) {\n this.routeCardDetail = route\n }\n } else {\n this.routeCardDetail = route\n }\n this.routeCardDetail['created_at'] = this.utils.getDateFormat(new Date(this.routeCardDetail['created_at']), '/');\n }\n\n openShareRouteModal(data) {\n this.openShareRoute.emit(data);\n }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n <cdk-virtual-scroll-viewport itemSize=\"50\" class=\"routeList-viewport\">\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label> </label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" *ngIf=\"config.repository === 'customer'\">\n <img src=\"assets/images/share_icon.png\" (click)=\"openShareRouteModal(list)\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{list['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? list['material'] : list['materialLabel']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </cdk-virtual-scroll-viewport>\n\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'listRoutecard', repository: config['repository']}\" [popupData]=\"routeCardDetail\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\n@Component({\n selector: 'app-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss']\n})\nexport class DialogComponent {\n body = 'Are you sure you want to delete?';\n positive = 'Delete';\n negative = 'Cancel';\n constructor(public dialogRef: MatDialogRef<DialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\n ['body', 'positive', 'negative'].map(elem => {\n if (this.data[elem] !== undefined) { this[elem] = this.data[elem] }\n });\n }\n onClose(result: boolean) { this.dialogRef.close(result) }\n}\n","<div class=\"dialogbox\">\n <h2>{{body}}</h2>\n <div class=\"twobtnprt\">\n <button class=\"delbtn\" (click)=\"onClose(true)\">{{positive}}</button>\n <button class=\"closebtn\" (click)=\"onClose(false)\">{{negative}}</button>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { EstinationEnum, EstinationData } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-estimation-display',\n templateUrl: './estimation-display.component.html',\n styleUrls: ['./estimation-display.component.scss']\n})\nexport class EstimationDisplayComponent {\n @Input() value!: any;\n label = EstinationData;\n Estinationlabel: any = EstinationEnum;\n}\n","<div class=\"d-flex\">\n <ng-container *ngFor=\"let item of label\">\n <span *ngIf=\"value[item]\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Estimation of {{Estinationlabel[item]}} - <b>{{value[item]}}</b>\n </span>\n </ng-container>\n</div>\n","import { Component, ElementRef, OnInit, ViewChild, Output, EventEmitter, SimpleChanges, OnChanges, Input, OnDestroy, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, fromEvent, map, Observable, startWith, Subject, takeUntil } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogComponent } from '../shared/dialog/dialog.component';\nimport { CoolmapConfigModel, CoolmapService, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n\n\n@Component({\n selector: 'app-add-route',\n templateUrl: './add-route.component.html',\n styleUrls: ['./add-route.component.scss']\n})\nexport class AddRouteComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('filterPickup') public filterPickup!: ElementRef;\n @ViewChild('filterDelivery') public filterDelivery!: ElementRef;\n @Output() public changeNav = new EventEmitter<string>();\n @Output() public updateRouteList = new EventEmitter<boolean>();\n pickupOptions: any = [];\n deliveryOptions: any = [];\n requestParmsForRouteDetails = { pickup_lat_lng: '', delivery_lat_lng: '' }\n customersList: any = [];\n unitsList: any = [];\n materialsList: any = [];\n addRouteForm!: FormGroup;\n @Input() public routeData!: Route;\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n routeId: string | null | undefined;\n preventSave: boolean = false;\n preventInitialSave: boolean = false;\n customersList$!: Observable<any>;\n routeDetails!: { pickup_location: string | null | undefined; delivery_location: string | null | undefined; } | null;\n public destroyer$ = new Subject<boolean>();\n popupDetails: Route;\n enablePopUp: boolean = false;\n prevantPopupClose = false;\n enableForm: boolean = false;\n\n constructor(public coolMapService: CoolmapService, public utils: UtilsService, public dialog: MatDialog,\n @Inject('memberData') public config: CoolmapConfigModel) { \n if (this.config.repository === 'customer') {\n this.utils.fetchMaterialsListForCustomer().then((res)=>{ \n this.materialsList = res;\n });\n } else {\n this.utils.fetchMaterialsList().then((res)=>{\n this.materialsList = res;\n });\n }\n \n this.utils.fetchUnitsList().then((res)=>{\n this.unitsList = res;\n });\n this.formInit();\n this.utils.getrouteDetailsUtility.subscribe(res => {\n if (res) {\n if (res['event'] !== 'click' && !this.prevantPopupClose) { this.enablePopUp = res['event'] }\n else if (this.enablePopUp && !this.prevantPopupClose) { this.prevantPopupClose = true; }\n if (res['event'] !== 'click' && !res['event'] && this.prevantPopupClose) {\n this.popupDetails = this.utils.getdictValue('route-detailsv2');\n } else { this.popupDetails = res['route'] }\n if (this.enablePopUp) this.popupDetails['created_at'] = this.utils.getDateFormat(new Date(this.popupDetails['created_at']), '/');\n }\n });\n }\n filterCustomerList() {\n this.customersList$ = this.addRouteForm.controls['customer_name'].valueChanges.pipe(\n startWith(''),\n map(value => this._filter(value || '')),\n );\n }\n public _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.customersList.filter((option: any) => option['customer_name'].toLowerCase().includes(filterValue));\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['routeData'] && !changes['routeData']['currentValue']) this.inIt(null);\n }\n openDialog(): void {\n const dialogRef = this.dialog.open(DialogComponent, {\n data: { body: 'Are you sure you want to delete this route?' },\n });\n dialogRef.afterClosed().subscribe(res => { if (res) { this.deleteRoute() } });\n }\n editEvent() {\n this.prevantPopupClose = false;\n this.enableForm = true; this.enablePopUp = false;\n this.popupDetails['prevent'] = false;\n this.utils.removeMapEntity.next(this.popupDetails);\n this.inIt(this.popupDetails);\n }\n inIt(changes: Route) {\n if (changes) {\n if (!changes['prevent']) {\n this.preventSave = false;\n this.formControlValue();\n this.patchFormValue(changes).then(() => {\n this.checkAndFetchRouteInformation(true)\n });\n }\n }\n if (!changes) {\n this.enableForm = true; this.preventSave = true;\n this.patchFormValue().then(() => {\n this.checkAndFetchRouteInformation()\n });\n }\n }\n ngOnInit(): void {\n this.formControlValue();\n if (this.config.repository === 'customer') {\n this.addRouteForm.patchValue({\n customer_id: this.customerRepoDetails.customer.id,\n customer_name: this.customerRepoDetails.customer.name,\n })\n } else {\n this.utils.fetchCustomersList().then((res)=>{\n this.customersList = res; this.filterCustomerList(); this.addRouteForm.controls['customer_name'].enable();\n });\n }\n }\n\n ngAfterViewInit() {\n fromEvent(this.filterPickup.nativeElement, 'keyup').pipe(\n distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {\n this.utils.autocomplete(this.filterPickup)\n .then((res) => {\n if (res) {\n this.addRouteForm.patchValue({\n pickup_lat_lng: (res['lat'] + ',' + res['lng']).toString()\n });\n this.coolMapService.clearBoundWithCordinates();\n this.checkAndFetchRouteInformation();\n }\n });\n });\n\n fromEvent(this.filterDelivery.nativeElement, 'keyup').pipe(\n distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {\n this.utils.autocomplete(this.filterDelivery).then((res) => {\n if (res) {\n this.addRouteForm.patchValue({\n delivery_lat_lng: (res['lat'] + ',' + res['lng']).toString()\n })\n this.checkAndFetchRouteInformation();\n }\n });\n });\n }\n\n formControlValue() {\n this.addRouteForm.controls['pickup_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (this.addRouteForm.value.pickup_location && res !== this.addRouteForm.value.pickup_location) {\n this.addRouteForm.patchValue({ pickup_lat_lng: '' });\n this.addRouteForm.controls['pickup_lat_lng'].markAsTouched();\n }\n });\n\n this.addRouteForm.controls['delivery_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (this.addRouteForm.value.delivery_location && res !== this.addRouteForm.value.delivery_location) {\n this.addRouteForm.patchValue({ delivery_lat_lng: '' });\n this.addRouteForm.controls['delivery_lat_lng'].markAsTouched();\n }\n });\n }\n\n formInit() {\n this.addRouteForm = new FormGroup({\n route_name: new FormControl('', [Validators.required]),\n customer_name: new FormControl({ value: '', disabled: true }, [Validators.required]),\n customer_id: new FormControl(''),\n materials_id: new FormControl('', [Validators.required]),\n unit_id: new FormControl('', [Validators.required]),\n path: new FormControl('', [Validators.required]),\n pickup_location: new FormControl('', [Validators.required]),\n pickup_lat_lng: new FormControl('', [Validators.required]),\n delivery_location: new FormControl('', [Validators.required]),\n delivery_lat_lng: new FormControl('', [Validators.required]),\n estimated_distance: new FormControl('', [Validators.required]),\n estimated_time: new FormControl('', [Validators.required]),\n note: new FormControl('', [Validators.maxLength(2048)]),\n trucker_pay_estimate: new FormControl(null),\n customer_price_estimate: new FormControl(null),\n });\n }\n\n async patchFormValue(data?: Route) {\n this.addRouteForm.reset();\n this.addRouteForm.patchValue(data!);\n if (this.config.repository === 'customer') { \n this.addRouteForm.patchValue({\n customer_id: this.customerRepoDetails.customer.id,\n customer_name: this.customerRepoDetails.customer.name,\n })\n }\n this.routeId = data?.route_id;\n this.routeDetails = data ? { pickup_location: data.pickup_location, delivery_location: data.delivery_location } : null;\n this.addRouteForm.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe(res => {\n if (res) { if (this.preventInitialSave) this.preventInitialSave = false }\n });\n this.filterCustomerList();\n await true;\n }\n\n checkAndFetchRouteInformation(isinitial?: boolean) {\n if (this.addRouteForm.value?.delivery_lat_lng?.length > 0 && this.addRouteForm.value?.pickup_lat_lng?.length > 0 && this.addRouteForm.value.unit_id) {\n let unit = this.unitsList.find((x: any) => x.id === this.addRouteForm.value.unit_id);\n const param = {\n delivery_lat_lng: this.addRouteForm.value.delivery_lat_lng,\n pickup_lat_lng: this.addRouteForm.value.pickup_lat_lng,\n unit: unit?.type\n };\n this.utils.postdata('calculate/routes/estimation', param).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res && res['path']) {\n this.addRouteForm.patchValue({\n estimated_distance: res['dist'],\n estimated_time: res['time'],\n path: res['path'],\n trucker_pay_estimate: res['trucker_haul_cost'],\n customer_price_estimate: (+(+res['trucker_haul_cost'] / 0.80).toFixed(2))\n });\n let path = res['path'].split(';');\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\n res['path'] = path;\n const element: any = {\n type: 'FeatureCollection',\n features: [{ type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: res['path'] } }]\n }\n this.coolMapService.removeRouteAndMarker(1).then(() => {\n const unit = this.unitsList.find((x: any) => x.id === this.addRouteForm.value.unit_id);\n const materialDetails = this.materialsList.find((x: any) => x.sub_material_id === this.addRouteForm.value.materials_id);\n this.coolMapService.loadMapProperty(element, 1, unit?.type,\n {\n pickup_location: this.addRouteForm.get('pickup_location')?.value,\n delivery_location: this.addRouteForm.get('delivery_location')?.value,\n route_name: this.addRouteForm.get('route_name')?.value,\n materialLabel: materialDetails?.label,\n unit: unit?.type\n }).then((res) => { this.preventSave = true });\n });\n } else {\n this.coolMapService.removeRouteAndMarker(1);\n this.utils.openSnackBar(res['status'], 'error');\n }\n if (this.routeId && isinitial) this.preventInitialSave = true;\n });\n } else { this.coolMapService.removeRouteAndMarker(1) }\n }\n\n formateLatLong(latlong: string) { return latlong ? latlong.split(',').map(x => +x).reverse() : null }\n saveRoute() {\n if (this.addRouteForm.valid) {\n this.preventSave = false;\n const data = this.addRouteForm.getRawValue();\n const url = this.routeId ? this.utils.postdata('update/routes', data) : this.utils.postdata('add/routes', data)\n if (this.routeId) data['id'] = this.routeId;\n url.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res.success) {\n this.updateRouteList.emit(true);\n this.utils.openSnackBar(res.message, 'success');\n this.preventInitialSave = true;\n this.preventSave = true;\n if (!this.routeId) this.changeNav.next('Addroute');\n } else {\n this.utils.openSnackBar(res.message, 'error');\n this.preventSave = true;\n }\n }, (err) => { if (err) { this.preventSave = true; } });\n } else {\n this.addRouteForm.markAllAsTouched();\n }\n }\n deleteRoute() {\n this.preventSave = false;\n this.utils.postdata('delete/routes', { uuid: this.routeId }).subscribe(res => {\n if (res['data']['success']) {\n this.utils.openSnackBar(res['data']['message'], 'success');\n this.updateRouteList.emit(true);\n this.changeNav.next('Addroute');\n this.preventInitialSave = true;\n this.preventSave = true;\n } else {\n this.utils.openSnackBar('Somthing went wrong', 'error');\n this.preventSave = true;\n }\n }, (err) => { this.preventSave = true })\n }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"addroutebox\">\n <div class=\"routedetailbox\" *ngIf=\"enablePopUp\">\n <div class=\"closebtnroutedetail\">\n <mat-icon (click)=\"prevantPopupClose = false; enablePopUp = false;\">clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'routeCard', repository: config['repository']}\" [popupData]=\"popupDetails\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{popupDetails['created_by_name']}} on {{popupDetails['created_at']}}\n </small>\n <button class=\"editbtn\" (click)=\"editEvent()\">Edit</button>\n </div>\n </div>\n <div class=\"add_add_route_box\" cdkDrag [style.visibility]=\"!enableForm ? 'hidden' : 'visible'\">\n <div class=\"topheadingprt\">\n <h2> {{routeId? 'EDIT' : 'ADD'}} ROUTE </h2>\n <div class=\"buttonprt\">\n <button *ngIf=\"routeId\" class=\"delbtn\" (click)=\"openDialog()\">Delete</button>\n <button mat-raised-button type=\"submit\" class=\"closebtn\" (click)=\"changeNav.next('Addroute')\">Close</button>\n </div>\n </div>\n <form [formGroup]=\"addRouteForm\">\n <div class=\"route_form_area\">\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Route Name</mat-label>\n <input matInput formControlName=\"route_name\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\">\n <mat-error *ngIf=\"addRouteForm.controls['route_name'].hasError('required')\">\n Route Name is required\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Customer_name</mat-label>\n <input type=\"text\" placeholder=\"Customer Name\" matInput formControlName=\"customer_name\" [matAutocomplete]=\"auto\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let customer of customersList$ | async\" [value]=\"customer['customer_name']\">\n {{customer['customer_name']}}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"addRouteForm.controls['customer_name'].hasError('required')\">\n Customer name is required.\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Pickup</mat-label>\n <input type=\"text\" \n placeholder=\"Search...\" matInput #filterPickup\n formControlName=\"pickup_location\" \n (mousedown)=\"$event.stopPropagation()\">\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['pickup_lat_lng'].touched && addRouteForm.controls['pickup_lat_lng'].hasError('required')\">\n Please select pickup location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Delivery</mat-label>\n <input type=\"text\" \n placeholder=\"Search...\"\n matInput #filterDelivery\n formControlName=\"delivery_location\" \n (mousedown)=\"$event.stopPropagation()\">\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['delivery_lat_lng'].touched && addRouteForm.controls['delivery_lat_lng'].hasError('required')\">\n Please select delivery location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Notes</mat-label>\n <textarea style=\"height: 18px; resize: none;\" matInput name=\"\" id=\"\" cols=\"30\" rows=\"10\" formControlName=\"note\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\"></textarea>\n <mat-error *ngIf=\"addRouteForm.controls['note'].hasError('maxlength')\">\n Notes should be within 2048 characters.\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"col-6 d-flex\">\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Unit type</mat-label>\n <mat-select formControlName=\"unit_id\" (selectionChange)=\"checkAndFetchRouteInformation()\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let unit of unitsList\" [value]=\"unit?.id\"> {{unit?.type}} </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['unit_id'].hasError('required')\">\n Unit is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Material</mat-label>\n <mat-select formControlName=\"materials_id\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let material of materialsList\" [value]=\"config.repository === 'coolmap' ? material?.material_id : material?.sub_material_id\"> {{config.repository === 'coolmap' ? material?.material : material?.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['materials_id'].hasError('required')\">\n Material is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"col-6\">\n <app-estimation-display *ngIf=\"addRouteForm?.value?.pickup_lat_lng && addRouteForm?.value?.delivery_lat_lng\" [value]=\"addRouteForm['value']\"></app-estimation-display>\n </div>\n <div class=\"col-6\" *ngIf=\"addRouteForm['value']['trucker_pay_estimate'] && addRouteForm['value']['customer_price_estimate']\">\n <span *ngIf=\"config['repository'] !== 'customer'\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Trucker Pay Estimate - <b>{{'$'+ addRouteForm['value']['trucker_pay_estimate']}}</b>\n </span>\n <span class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Customer Price Estimate - <b>{{'$'+ addRouteForm['value']['customer_price_estimate']}}</b>\n </span>\n </div>\n <button mat-raised-button type=\"submit\" (click)=\"saveRoute()\" *ngIf=\"preventSave\"\n [disabled]=\"addRouteForm.invalid && preventSave || preventInitialSave\">{{routeId? 'Update' : 'Save'}}\n </button>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"!preventSave\"></mat-spinner>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MapComponent } from './component/map/map.component';\nimport { NavComponent } from './component/nav/nav.component';\n\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport { AddRouteNavComponent } from './component/nav/layout/add-route-nav/add-route-nav.component';\nimport { JobCodeNavComponent } from './component/nav/layout/job-code-nav/job-code-nav.component';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule, MatPseudoCheckboxModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport { RouteJobCodeListComponent } from './component/route-jobcode-list/route-jobcode-list.component';\nimport { ViewRouteListCardComponent } from './component/route-jobcode-list/view-route-list-card/view-route-list-card.component';\nimport { SmsCardDetailsOverviewComponent } from './component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component';\nimport { JobCodeListCardComponent } from './component/route-jobcode-list/job-code-list-card/job-code-list-card.component';\nimport { JobCodeComponent } from './component/job-code/job-code.component';\nimport { JobcodeStatusComponent } from './component/shared/jobcode-status/jobcode-status.component';\nimport { JobRouteListComponent } from './component/shared/job-route-list/job-route-list.component';\nimport { JobcodeOverviewComponent } from './component/shared/jobcode-overview/jobcode-overview.component';\nimport { DialogComponent } from './component/shared/dialog/dialog.component';\nimport { AddRouteComponent } from './component/add-route/add-route.component';\nimport { EstimationDisplayComponent } from './component/shared/estimation-display/estimation-display.component';\nimport { RouteInfoCardComponent } from './component/shared/route-info-card/route-info-card.component';\nimport { CoolmapConfigModel } from '@aggdirect/coolmap-services';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n\n\n@NgModule({\n declarations: [\n MapComponent,\n NavComponent,\n AddRouteNavComponent,\n JobCodeNavComponent,\n RouteJobCodeListComponent,\n ViewRouteListCardComponent,\n SmsCardDetailsOverviewComponent,\n JobCodeListCardComponent,\n JobCodeComponent,\n JobRouteListComponent,\n JobcodeStatusComponent,\n JobcodeOverviewComponent,\n DialogComponent,\n AddRouteComponent,\n EstimationDisplayComponent,\n RouteInfoCardComponent\n ],\n imports: [\n CommonModule,\n MatSnackBarModule,\n MatSidenavModule,\n DragDropModule,\n FormsModule,\n MatInputModule,\n MatSelectModule,\n MatIconModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n MatDialogModule,\n MatTooltipModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatPseudoCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n ScrollingModule\n ],\n exports: [\n MapComponent,\n NavComponent,\n AddRouteNavComponent,\n JobCodeNavComponent,\n RouteJobCodeListComponent,\n ViewRouteListCardComponent,\n SmsCardDetailsOverviewComponent,\n JobCodeListCardComponent,\n JobCodeComponent,\n JobRouteListComponent,\n JobcodeStatusComponent,\n JobcodeOverviewComponent,\n DialogComponent,\n AddRouteComponent\n ],\n // TODO: entryComponents is no longer supported. Find out if this breaks something\n // entryComponents: [\n // DialogComponent,\n // JobCodeComponent,\n // AddRouteComponent\n // ],\n providers: [\n ]\n})\n\nexport class CoolmapModule {\n public static forRoot(memberData: CoolmapConfigModel): ModuleWithProviders<CoolmapModule> {\n return {\n ngModule: CoolmapModule,\n providers: [{provide: 'memberData', useValue: memberData}]\n };\n }\n}\n","/*\n * Public API Surface of coolmap\n */\n\nexport * from './lib/coolmap.module';\nexport * from './lib/component/map/map.component';\nexport * from './lib/component/nav/nav.component';\nexport * from './lib/component/nav/layout/add-route-nav/add-route-nav.component';\nexport * from './lib/component/nav/layout/job-code-nav/job-code-nav.component';\n\nexport * from './lib/component/route-jobcode-list/route-jobcode-list.component';\nexport * from './lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component';\nexport * from './lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component';\nexport * from './lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component';\nexport * from './lib/component/job-code/job-code.component';\nexport * from './lib/component/add-route/add-route.component';\nexport * from './lib/component/shared/jobcode-status/jobcode-status.component';\nexport * from './lib/component/shared/job-route-list/job-route-list.component';\nexport * from './lib/component/shared/jobcode-overview/jobcode-overview.component';\nexport * from './lib/component/shared/dialog/dialog.component';\n\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1","i6","i7","i9.ViewRouteListCardComponent","i10.SmsCardDetailsOverviewComponent","i11.JobCodeListCardComponent","i8","i11.RouteJobCodeListComponent","i10","i11","i12.RouteJobCodeListComponent","i5","i6.JobRouteListComponent","i7.JobcodeStatusComponent","i8.JobcodeOverviewComponent","i9.RouteInfoCardComponent","i9","i12","i13","i14.EstimationDisplayComponent","i15.RouteInfoCardComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aggdirect-coolmap.mjs","sources":["../../../projects/coolmap/src/lib/component/map/map.component.ts","../../../projects/coolmap/src/lib/component/map/map.component.html","../../../projects/coolmap/src/lib/component/nav/nav.component.ts","../../../projects/coolmap/src/lib/component/nav/nav.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.html","../../../projects/coolmap/src/lib/component/route-jobcode-list/route-jobcode-list.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/route-jobcode-list.component.html","../../../projects/coolmap/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.ts","../../../projects/coolmap/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.html","../../../projects/coolmap/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.ts","../../../projects/coolmap/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.html","../../../projects/coolmap/src/lib/component/shared/job-route-list/job-route-list.component.ts","../../../projects/coolmap/src/lib/component/shared/job-route-list/job-route-list.component.html","../../../projects/coolmap/src/lib/component/shared/jobcode-status/jobcode-status.component.ts","../../../projects/coolmap/src/lib/component/shared/jobcode-status/jobcode-status.component.html","../../../projects/coolmap/src/lib/component/shared/jobcode-overview/jobcode-overview.component.ts","../../../projects/coolmap/src/lib/component/shared/jobcode-overview/jobcode-overview.component.html","../../../projects/coolmap/src/lib/component/shared/route-info-card/route-info-card.component.ts","../../../projects/coolmap/src/lib/component/shared/route-info-card/route-info-card.component.html","../../../projects/coolmap/src/lib/component/job-code/job-code.component.ts","../../../projects/coolmap/src/lib/component/job-code/job-code.component.html","../../../projects/coolmap/src/lib/component/shared/dialog/dialog.component.ts","../../../projects/coolmap/src/lib/component/shared/dialog/dialog.component.html","../../../projects/coolmap/src/lib/component/shared/estimation-display/estimation-display.component.ts","../../../projects/coolmap/src/lib/component/shared/estimation-display/estimation-display.component.html","../../../projects/coolmap/src/lib/component/add-route/add-route.component.ts","../../../projects/coolmap/src/lib/component/add-route/add-route.component.html","../../../projects/coolmap/src/lib/coolmap.module.ts","../../../projects/coolmap/src/public-api.ts","../../../projects/coolmap/src/aggdirect-coolmap.ts"],"sourcesContent":["import { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { CoolmapService } from '@aggdirect/coolmap-services';\n\n\n\n@Component({\n selector: 'app-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.css']\n})\nexport class MapComponent implements OnDestroy {\n @ViewChild('map', { static: true }) public mapDiv!: ElementRef;\n enableProgress: boolean = true;\n public destroyer$ = new Subject<boolean>();\n\n constructor( public coolmapService: CoolmapService ) { }\n\n ngAfterViewInit() {\n this.coolmapService.reintiatecoolmap.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n this.enableProgress = true;\n if (res) {\n this.coolmapService.initiateMapForAddRoute(this.mapDiv.nativeElement).then((res) => {\n this.enableProgress = false;\n })\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div>\n <mat-progress-bar *ngIf=\"enableProgress\" mode=\"indeterminate\"></mat-progress-bar>\n <div #map class=\"coolmap\" style=\"height: 100vh;\"></div>\n</div>\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\nimport { CoolmapService, UtilsService } from '@aggdirect/coolmap-services';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.scss']\n})\nexport class NavComponent implements OnDestroy {\n @Output() public drawer = new EventEmitter<boolean>();\n @Output() public changeNav = new EventEmitter<string>();\n navValue: string = 'Jobcode';\n isnavChange: boolean = true;\n paddinForJobCode = { top: 0, bottom: 250, left: 500, right: 400 };\n paddinForViewRoute = { top: 0, bottom: 400, left: 400, right: 0 };\n public destroyer$ = new Subject<boolean>();\n\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\n this.utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => { this.isnavChange = res })\n this.coolMap.setPadding(this.paddinForJobCode);\n }\n\n openDrawer() { this.drawer.emit(true) }\n chnageNav(name: string): void {\n if (this.isnavChange) {\n this.changeNav.emit(name); this.navValue = name; this.coolMap.clearBound();\n if (name === 'Addroute') { this.coolMap.setPadding(this.paddinForViewRoute) }\n else { this.coolMap.setPadding(this.paddinForJobCode) }\n this.utils.clearOptions();\n }\n }\n\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"nav\">\n <button (click)=\"openDrawer()\" class=\"toggle\">\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\n </button>\n\n <ul class=\"m-100\">\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\n </a>\n </li>\n\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </a>\n </li>\n </ul>\n</div>\n","import { Component, Inject, Input } from '@angular/core';\nimport { CoolmapConfigModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-view-route-list-card',\n templateUrl: './view-route-list-card.component.html',\n styleUrls: ['./view-route-list-card.component.scss']\n})\nexport class ViewRouteListCardComponent {\n @Input() public route!: Route;\n @Input() public emitrouteevent: any;\n constructor(public utils: UtilsService,\n @Inject('memberData') public config: CoolmapConfigModel) { }\n\n detailsDict(event: boolean | string, route: Route) {\n if(event === 'click') this.utils.setdictValue('route-detailsv2', JSON.stringify(route));\n route['type'] = 'editroute'; route['prevent'] = true; this.emitrouteevent.emit(route);\n this.utils.routeDetailsUtility.next({ event, route });\n }\n}\n","<div class=\"routebox\">\n <span>\n <mat-icon>directions</mat-icon>\n <h2 [ngClass]=\"{'routeheading': route['route_name']}\">\n {{route['route_name']}}\n </h2>\n </span>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{route['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? route['material'] : route['materialLabel']}}</h3>\n\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{route['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{route['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n <div class=\"infoicon\" (click)=\"detailsDict('click', route)\" (mouseover)=\"detailsDict(true, route)\"\n (mouseleave)=\"detailsDict(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"status routestatus\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n</div>\n\n","import { Component, Input } from '@angular/core';\nimport { DriverSmsCardEnum, DriversmsCardKey } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-sms-card-details-overview',\n templateUrl: './sms-card-details-overview.component.html',\n styleUrls: ['./sms-card-details-overview.component.scss']\n})\nexport class SmsCardDetailsOverviewComponent {\n @Input() public jobValue: any;\n label = DriversmsCardKey;\n overViewEnum: any = DriverSmsCardEnum;\n constructor() { }\n\n}\n","<ng-container *ngFor=\"let item of label\">\n <span>\n <label>{{overViewEnum[item]}}</label>\n <ng-container *ngIf=\"item !== 'values'\">{{jobValue[item] ? jobValue[item] : 'N/A'}}</ng-container>\n <ng-container *ngIf=\"item === 'values'\">{{jobValue[item]['Done'] + jobValue[item]['Ongoing'] + jobValue[item]['Open']}}</ng-container>\n </span>\n</ng-container>\n","import { Component, EventEmitter, Input, Output, Inject } from '@angular/core';\nimport { CoolmapConfigModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-job-code-list-card',\n templateUrl: './job-code-list-card.component.html',\n styleUrls: ['./job-code-list-card.component.scss']\n})\nexport class JobCodeListCardComponent {\n @Input() public route!: Route;\n @Output() public routeSeletion = new EventEmitter();\n @Output() public toggleDrivermenu = new EventEmitter();\n @Input() public emitJobdetails: any;\n @Input() public preventCloseDetails!: boolean;\n constructor(public utils: UtilsService,\n @Inject('memberData') public config: CoolmapConfigModel) { }\n\n selectRoute(route: Route) { this.routeSeletion.emit(route) }\n toggleDriverlist(mouseevntType: boolean | string, route: Route, isHoverOut?: boolean) {\n const data = { mouseevntType, route, isHoverOut }\n this.toggleDrivermenu.emit(data);\n if (mouseevntType === 'click') this.utils.setdictValue('driver-details', JSON.stringify(this.route));\n }\n toggleJobCodeDetails(mouseEventType: boolean, route: Route) {\n if (mouseEventType) { route['type'] = 'jobcode'; this.emitJobdetails.emitroute.emit(route) }\n else if(!mouseEventType && this.preventCloseDetails){\n route = this.utils.getdictValue('route-details');\n route['type'] = 'jobcode'; this.emitJobdetails.emitroute.emit(route)\n }\n else if (!mouseEventType && !this.preventCloseDetails) this.emitJobdetails.clearJobDetailsFromList.emit(true);\n }\n calculateStatusPercentage(type: string, route: any) {\n const total = route['Done'] + route['Ongoing'] + route['Open'];\n if (type === 'done') { return Math.round((100 * route['Done']) / total) }\n else if (type === 'ongoing') { return Math.round((100 * route['Ongoing']) / total) }\n else if (type === 'open') { return Math.round((100 * route['Open']) / total) }\n else { return null }\n }\n setRouteItem(){\n this.utils.preVentJobdetailclose.next(true);\n this.utils.setdictValue('route-details', JSON.stringify(this.route));\n }\n}\n","<div class=\"innerbox\">\n <div class=\"inputarea\">\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\n <label> </label>\n <div class=\"border\"></div>\n </div>\n <div class=\"job_intro\">\n <div class=\"heading\">\n <h2>\n {{route['order_number'] ? route['order_number'] : ''}}\n </h2>\n |\n <span>\n {{route['customer_name']}}\n </span>\n |\n <span>\n {{route['project']}}\n </span>\n </div>\n <div class=\"destinationprt\">\n <span style=\"padding-left: 0;\">\n {{route['pickup_location']}}\n </span>\n <b>></b>\n <span>\n {{route['delivery_location']}}\n </span>\n </div>\n <div class=\"mat_cat\">\n <span>\n {{route['material']}}\n </span>\n </div>\n\n <div class=\"statusbar\">\n <div class=\"status_percent\">\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\n </div>\n </div>\n </div>\n <div class=\"statusarea\">\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n <div class=\"driver_icon\" *ngIf=\"config.repository !== 'customer'\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\n (click)=\"toggleDriverlist('click', route)\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { FormControl, Validators } from '@angular/forms';\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-route-jobcode-list',\n templateUrl: './route-jobcode-list.component.html',\n styleUrls: ['./route-jobcode-list.component.scss']\n})\nexport class RouteJobCodeListComponent implements OnInit, OnChanges {\n @Input() public loader = true;\n @Input() public type: string = '';\n @Input() public data: Route[] = [];\n @Input() public currentNav: string = ''\n @Output() public emitroute = new EventEmitter();\n @Output() public showAllRoute = new EventEmitter();\n preventMouseout: boolean = false;\n filterList: Route[] = this.data;\n @Input() public searchTerm!: any;\n isDriverList: boolean = false;\n public selectedRoute = new SelectionModel<any>(true, [])\n driverList!: any;\n preventListSelect: boolean = false;\n @Output() public clearJobDetailsFromList = new EventEmitter();\n preventDetailsClose = false;\n messageLoader: boolean = false;\n driverMessage = new FormControl('', [Validators.maxLength(256)]);\n @Input() public clearListSeletion: boolean;\n isSmsList: boolean = false;\n constructor(public coolMap: CoolmapService, public utils: UtilsService) { this.driverList = [] }\n ngOnInit(): void {\n this.utils.getpreVentJobdetailclose.subscribe(res => { this.preventDetailsClose = res });\n this.utils.removeMapEntityUtility.subscribe((res: Route) => {this.passRoute(res)});\n }\n passRoute(job: Route) {\n this.data.forEach((each) => { if (each['route_id'] !== job['route_id']) { each['isActive'] = false } else { each['isActive'] = true } });\n if (this.type == 'addroute') this.filterList.forEach(ele => this.coolMap.filterRoute(ele['route_id'], 'none'));\n }\n selectRoute(route: any) {\n if (!this.preventListSelect) {\n this.preventListSelect = true;\n this.selectedRoute.toggle(route);\n this.clearJobDetailsFromList.emit(true);\n this.utils.preVentJobdetailclose.next(false);\n this.filterList.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'none'));\n this.clearList();\n this.selectedRoute.selected.forEach((ele, index) => {\n this.coolMap.filterRoute(ele['job_id'], 'visible', ((this.selectedRoute.selected.length - 1) === index)).then(() => {\n this.preventListSelect = false;\n })\n });\n if (!this.selectedRoute.selected.length) {\n this.preventListSelect = false\n this.data.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'visible'));\n };\n }\n }\n checkroutes(route: Route) {\n const selectedRoute = this.selectedRoute.selected;\n this.filterList = this.filterList.map(ele => { ele['isSelected'] = false; return ele })\n if (selectedRoute.length > 0) {\n selectedRoute.forEach(ele => {\n if (route['order_number'] === ele['order_number']) { ele['isSelected'] = true }\n });\n } return route\n }\n ngOnChanges(changes: SimpleChanges) {\n setTimeout(() => {\n if (this.currentNav === 'Addroute' && (this.data.length < this.filterList.length)) {\n const index = this.filterList.findIndex(ele => ele.isActive);\n if (index > 0) this.filterList[index].isActive = false;\n this.data.forEach((ele: Route, indexForData: number) => {\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id'])\n this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {\n });\n });\n }\n }, 500);\n if (changes['data'] && changes['data']['currentValue']) {\n this.filterList = changes['data']['currentValue'];\n if (this.searchTerm) {\n if (this.searchTerm.length > 0) {\n this.data = this.utils.getSearchResults(changes['data']['currentValue'], this.searchTerm);\n this.filterList = this.data;\n } else {\n this.filterList = changes['data']['currentValue'];\n }\n }\n\n if (this.type === 'jobcode') {\n this.loader = true; this.clearList();\n if (this.filterList.length === 0) this.loader = false;\n }\n\n if (this.type !== 'jobcode') {\n if (changes['data']['previousValue'] && this.currentNav === 'addForm') {\n const activeRoute = changes['data']['previousValue'].find((ele: Route) => ele.isActive);\n if (activeRoute) {\n this.filterList.map((item: any) => {\n if (item.route_id === activeRoute.route_id) {\n item.isActive = true;\n }\n })\n }\n }\n }\n if (changes['data']['previousValue'] && this.currentNav !== 'addForm') {\n this.coolMap.removeJobFromMap(changes['data']['previousValue']);\n this.selectedRoute.clear();\n };\n if (this.currentNav !== 'addForm') {\n changes['data']['currentValue'].forEach((ele: Route, indexForData: number) => {\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id'])\n if(this.type === 'jobcode') ele.materialLabel = ele.material;\n this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {\n if (indexForData === (this.data.length - 1)) {\n this.loader = false;\n this.utils.preventnavChange.next(true);\n }\n });\n });\n }\n }\n if (changes['searchTerm']) {\n if (this.filterList) {\n this.data = this.filterList;\n this.clearList();\n if (changes['searchTerm']['currentValue'].length > 0) {\n this.coolMap.removeRouteAndMarker(1);\n this.data = this.utils.getSearchResults(this.data, changes['searchTerm']['currentValue']);\n } else { this.data = this.filterList; }\n setTimeout(() => {\n this.coolMap.clearBoundWithCordinates();\n if (this.currentNav !== 'addForm' && !this.selectedRoute['selected'].length) {\n this.coolMap.removeRouteAndMarker(1);\n this.toggleFilterRoute(this.filterList);\n }\n }, 500);\n if (this.currentNav !== 'addForm' && this.selectedRoute['selected'].length) {\n if (this.data && this.data.length > 0) {\n this.clearList();\n this.clearJobDetailsFromList.emit(true)\n this.coolMap.removeJobFromMap(this.selectedRoute.selected);\n setTimeout(() => {\n this.data.forEach((ele, indexForData) => {\n this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === (this.data.length - 1))).then(() => {\n if (indexForData === (this.data.length - 1)) { this.loader = false; this.utils.preventnavChange.next(true) }\n if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {\n this.selectedRoute.clear()\n }\n });\n })\n }, 500);\n }\n }\n }\n }\n }\n showRoute() {\n this.utils.preventnavChange.next(false);\n this.loader = true; this.clearList();\n this.showAllRoute.emit(true);\n if (this.filterList && this.filterList.length > 0) {\n this.coolMap.removeJobFromMap(this.selectedRoute.selected);\n setTimeout(() => {\n this.filterList.forEach((ele, indexForData) => {\n this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === this.filterList.length - 1)).then(() => {\n if (indexForData === this.filterList.length - 1) { this.loader = false; this.utils.preventnavChange.next(true) }\n if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {\n this.selectedRoute.clear();\n }\n });\n })\n }, 500);\n }\n }\n toggleDrivermenu(event: any) {\n const mouseevntType = event.mouseevntType; let route = event.route;\n const isHoverOut = event.isHoverOut;\n if(typeof(mouseevntType) === 'string') {if(this.preventMouseout){this.isDriverList = !this.isDriverList}; this.preventMouseout = true}\n if (typeof(mouseevntType) === 'boolean' &&!mouseevntType && !this.preventMouseout) { this.isDriverList = mouseevntType };\n if (typeof(mouseevntType) === 'boolean' && mouseevntType && !this.preventMouseout) { this.isDriverList = mouseevntType };\n if(this.preventMouseout && !this.isDriverList) this.preventMouseout = false;\n if (isHoverOut) {\n if (this.preventMouseout) {\n route = this.utils.getdictValue('driver-details');\n this.driverList = route;\n }\n if (!this.preventMouseout) {\n this.driverList = route\n }\n } else {\n this.driverList = route\n }\n }\n visiblesection(value: string) { if (this.type === value) { return true } else return false }\n toggleFilterRoute(filterList: Route[]) {\n filterList.forEach((ele) => {\n const filterItem = (this.type === 'jobcode') ? 'job_id' : 'route_id';\n const index = this.data.findIndex((ele1) => { return (ele1[`${filterItem}`] === ele[`${filterItem}`]) });\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);\n if (id && index < 0) this.coolMap.filterRoute(id, 'none');\n if (id && index >= 0) {\n this.data[index].isActive = false;\n this.coolMap.filterRoute(id, 'visible');\n this.coolMap.extendBound(ele['path'], (index === (this.data.length - 1)));\n };\n });\n }\n clearList() {\n this.isDriverList = false; this.driverList = null; this.preventMouseout = false; this.isSmsList = false;\n }\n sendMessage() {\n this.messageLoader = true\n if (this.driverMessage.valid) {\n const data = {\n order_number: this.driverList['order_number'],\n date: this.driverList['date'],\n message: this.driverMessage.value,\n }\n this.utils.postdata('jobs_report_chat', data).subscribe((res: any) => {\n if (res['data']['status'] === 'Success.') {\n this.messageLoader = false;\n this.driverMessage.reset();\n this.utils.openSnackBar('Message Sent', 'success');\n } else {\n this.messageLoader = false;\n this.utils.openSnackBar('Message not sent', 'error');\n }\n }, err => {if(err) {this.messageLoader = false}})\n }\n }\n}\n","<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Output, Input, SimpleChanges, OnDestroy, Inject } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { CoolmapConfigModel, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';\nimport { map, Observable, startWith } from 'rxjs';\ninterface Filter {\n name?: string;\n type: string;\n value: any;\n label?: string;\n}\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-add-route-nav',\n templateUrl: './add-route-nav.component.html',\n styleUrls: ['./add-route-nav.component.scss']\n})\n\nexport class AddRouteNavComponent implements OnDestroy {\n filterForm = new FormGroup({ search: new FormControl() });\n filteredOptions!: Observable<any[]> | undefined;\n filters: Filter[] = [];\n loaderVal = false;\n routes: Route[] = [];\n @Output() public changeNav = new EventEmitter<string | any>();\n @Input() public navValue: string = '';\n @Output() public addemit = new EventEmitter();\n @Input() public updateRouteList: boolean = false;\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n\n public destroyer$ = new Subject<boolean>();\n preventListUpdate: boolean = false;\n unitList: any;\n materialsList: any;\n constructor(public utils: UtilsService,\n @Inject('memberData') private config: CoolmapConfigModel) {\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\n map(value => this.utils.filter(value, this.filters)));\n }\n\n showAddForm() { this.changeNav.emit('addForm'); this.addemit.emit('') }\n filterSearch(e: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n this.preventListUpdate = true;\n this.filterForm.controls.search.setValue(null);\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }]\n }\n removeFromFilter(filter: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n const index = this.filters.indexOf(filter);\n if (index >= 0) { this.filters = [] }\n }\n ngAfterViewInit(): void {\n this.checkAndCallRouteList();\n }\n ngOnChanges(changes: SimpleChanges) {\n if (changes['updateRouteList'] && changes['updateRouteList']['currentValue']) this.checkAndCallRouteList();\n if (changes['navValue'] && (changes['navValue']['previousValue'] === 'addForm') && !this.preventListUpdate) this.checkAndCallRouteList();\n }\n getRoute(event: Route) { if (event['type'] === 'editroute') { this.addemit.emit(event) } }\n\n checkAndCallRouteList() {\n if (this.config.repository === 'customer') {\n this.utils.fetchUnitsList().then((res) => {\n this.unitList = res;\n this.utils.fetchMaterialsListForCustomer().then((res) => {\n this.materialsList = res;\n this.getRouteListForCustomer();\n });\n });\n } else {\n this.getRouteListForCoolMap()\n }\n }\n getUnitName(data): string {\n let unitName = '';\n this.unitList.map((res) => {\n if (res.id === data.unit_id) {\n unitName = res.type\n }\n })\n return unitName;\n }\n\n getMaterialName(data): string {\n let materialName = '';\n this.materialsList.map((res) => { \n if (res.sub_material_id === data.materials_id) {\n materialName = res.label\n }\n }) \n return materialName;\n }\n\n getRouteListForCoolMap() {\n this.utils.getData('routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.filters = [];\n this.routes = res['data']\n this.preventListUpdate = false;\n this.utils.clearOptions();\n this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });\n }\n });\n }\n\n getRouteListForCustomer() {\n const dataset = {\n customer_id: this.customerRepoDetails.customer.id\n }\n this.utils.postdata('routes/all', dataset).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.filters = [];\n this.routes = res['data']\n this.preventListUpdate = false;\n this.utils.clearOptions();\n this.routes.map((ele: Route) => {\n ele.unit = this.getUnitName(ele);\n ele.materialLabel = this.getMaterialName(ele);\n ele.material = this.getMaterialName(ele).split('|')[0].trim();\n this.utils.makeOptions(ele)\n });\n }\n });\n }\n resetSearch() { this.changeNav.emit('Addroute') }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"nav_body\">\n <div class=\"logo\">\n <img src=\"assets/images/logo.png\" alt=\"logo\" />\n </div>\n <div class=\"heading m-20\">\n <h1>View Route</h1>\n <button mat-raised-button (click)=\"showAddForm()\">\n <mat-icon>add_circle_outline</mat-icon> Add route\n </button>\n </div>\n\n <div class=\"search-panel\">\n <div class=\"w-100\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\n [disabled]=\"loaderVal\" placeholder=\"Search\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\"\n (click)=\"filterForm.reset()\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"whole_width\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </form>\n <div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row class=\"chip-grid\" (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n </div>\n </div>\n </div>\n <app-route-jobcode-list [type]=\"'addroute'\" [currentNav]=\"navValue\" [searchTerm]=\"filters\" [data]=\"routes\" [loader]=\"loaderVal\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\n</div>\n","import {\n Component,\n EventEmitter,\n Output,\n OnDestroy,\n Inject,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { MatDatepickerInputEvent } from '@angular/material/datepicker';\nimport { map, Observable, startWith } from 'rxjs';\nimport { FormControl, FormGroup } from '@angular/forms';\ninterface Filter {\n name?: string;\n type: string;\n value: any;\n label?: string;\n}\nimport { Subject, takeUntil } from 'rxjs';\nimport {\n CoolmapConfigModel,\n CustomerRepoDetailsModel,\n Route,\n UtilsService,\n} from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-job-code-nav',\n templateUrl: './job-code-nav.component.html',\n styleUrls: ['./job-code-nav.component.scss'],\n})\nexport class JobCodeNavComponent implements OnDestroy, OnChanges {\n filterForm = new FormGroup({ search: new FormControl() });\n listData: Route[] = [];\n loaderVal: boolean = false;\n dateValue = new Date();\n @Output() public jobemit = new EventEmitter();\n value = '';\n filteredOptions!: Observable<any[]> | undefined;\n filters: Filter[] = [];\n @Output() public clearJobDetails = new EventEmitter();\n public destroyer$ = new Subject<boolean>();\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n selectedDate: string;\n\n constructor(\n public utils: UtilsService,\n @Inject('memberData') private config: CoolmapConfigModel\n ) {\n this.selectedDate = this.utils.getDateFormat(new Date());\n utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe((res) => {\n if (res) {\n this.loaderVal = false;\n } else this.loaderVal = true;\n });\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['customerRepoDetails'] &&\n changes['customerRepoDetails']['currentValue']\n ) {\n this.loadData(this.selectedDate);\n this.filters = [];\n this.utils.clearViewRouteforJobCode.next(true);\n }\n }\n loadData(value: string) {\n this.selectedDate = value;\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(\n startWith(''),\n map((value) => this.utils.filter(value, this.filters))\n );\n this.utils.preventnavChange.next(false);\n this.loaderVal = true;\n let dataSet;\n if (this.config.repository === 'customer') {\n dataSet = {\n date: value,\n customer_id: this.customerRepoDetails.customer.id,\n project_id: this.customerRepoDetails.projectId,\n };\n } else {\n dataSet = { date: value };\n }\n this.utils\n .postdata('jobs_report_v2', dataSet)\n .pipe(takeUntil(this.destroyer$))\n .subscribe(\n (res: any) => {\n if (typeof res['data'] !== 'string') {\n if (res['data'].length > 0) {\n this.listData = res['data'].map((ele: Route) => {\n ele['date'] = value;\n return ele;\n });\n }\n if (this.config.repository === 'customer') {\n let projectName = window.location.href.split('project=').pop();\n projectName = projectName.toLowerCase()\n this.listData = this.listData.filter(ele => {\n const project = ele.project.toLowerCase();\n let adjustedProject = project.replace(\" \", \"_\");\n return adjustedProject === projectName\n });\n }\n this.listData.forEach((ele: Route) => {\n this.utils.makeOptions(ele);\n });\n } else this.listData = [];\n this.clearJobDetails.emit(true);\n this.utils.clearViewRouteforJobCode.next(true);\n this.filters = [];\n if (typeof res['data'] === 'string') this.utils.preventnavChange.next(true);\n },\n (err) => {\n if (err) this.utils.preventnavChange.next(true);\n }\n );\n }\n\n getRoute(job: Route) {\n if (job['type'] === 'jobcode') {\n this.jobemit.emit(job);\n }\n }\n getDate(ev: MatDatepickerInputEvent<Date>) {\n this.loadData(this.utils.getDateFormat(ev.value));\n }\n\n filterSearch(e: any): void {\n this.filterForm.controls.search.setValue(null);\n this.filterForm.controls.search.updateValueAndValidity();\n this.filters = [\n {\n name: e.source.value.label,\n type: e.source.value.type,\n value: e.source.value,\n },\n ];\n }\n removeFromFilter(filter: any): void {\n const index = this.filters.indexOf(filter);\n if (index >= 0) {\n this.filters = [];\n }\n }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"nav_body\">\n <div class=\"search-panel\">\n <div class=\"datepicker\">\n <mat-form-field>\n <mat-label>Choose a date</mat-label>\n <input readonly matInput (click)=\"picker.open()\" [disabled]=\"loaderVal\" [(ngModel)]=\"dateValue\" [matDatepicker]=\"picker\" (dateChange)=\"getDate($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n </div>\n <div class=\"search\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\n [disabled]=\"loaderVal\" placeholder=\"Search\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button mat-button \n matSuffix \n mat-icon-button \n aria-label=\"Clear\" \n *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\" (click)=\"filterForm.reset()\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"whole_width\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </form>\n </div>\n\n <div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row class=\"chip-grid\" (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n </div>\n </div>\n <app-route-jobcode-list [type]=\"'jobcode'\" [searchTerm]=\"filters\" [data]=\"listData\" [loader]=\"loaderVal\" (clearJobDetailsFromList)=\"clearJobDetails.emit(true)\" (showAllRoute)=\"filters = []; clearJobDetails.emit(true)\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\nimport { map, Observable, startWith } from 'rxjs';\n\n@Component({\n selector: 'app-job-route-list',\n templateUrl: './job-route-list.component.html',\n styleUrls: ['./job-route-list.component.scss']\n})\nexport class JobRouteListComponent {\n @Output() public changeNav = new EventEmitter<string | any>();\n filteredOptions!: Observable<any[]> | undefined;\n preventListUpdate: boolean;\n filterForm = new FormGroup({ search: new FormControl() });\n filters: any[];\n @Input() public routes: Route[];\n @Input() public selectedRoute;\n @Output() public changeRoutes = new EventEmitter<string | any>();\n @Output() public changeSelectedRoute = new EventEmitter<string | any>();\n @Input() public masterRoutes: Route[];\n\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\n this.filters = [];\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\n map(value => this.utils.filter(value, this.filters)));\n }\n\n filterSearch(e: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n this.preventListUpdate = true;\n this.filterForm.controls.search.setValue(null);\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }];\n const filteredRoutes = this.utils.getSearchResults(this.masterRoutes, [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }]);\n this.changeRoutes.emit(filteredRoutes);\n this.selectedRoute.selected.forEach((item: any) => {\n const routeData = filteredRoutes.find(x => x.route_id === item.route_id);\n if (!routeData) {\n this.selectedRoute.toggle(item);\n this.changeSelectedRoute.emit(this.selectedRoute);\n this.coolMap.removeRouteAndMarker(item['route_id']).then((res: any) => {\n this.coolMap.extendReBound();\n });\n }\n })\n }\n\n removeFromFilter(filter: any): void {\n this.changeNav.emit({ type: 'Addroute' });\n const index = this.filters.indexOf(filter);\n if (index >= 0) { this.filters = []; this.changeRoutes.emit(this.masterRoutes); }\n }\n}\n\n","<div class=\"searchprt\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"full-width\">\n <mat-label>Search</mat-label>\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\">\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.reset()\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" class=\"autocomplete\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\n [value]=\"option\">\n {{option.type | titlecase }}: {{option['label']}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n</form>\n</div>\n<div class=\"chip-list\">\n <mat-chip-grid #chipList aria-label=\"Filter selection\">\n @for (filter of filters; track filter) {\n <mat-chip-row (removed)=\"removeFromFilter(filter)\">\n {{filter.type | titlecase }}: {{filter.name}}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { Route } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-jobcode-status',\n templateUrl: './jobcode-status.component.html',\n styleUrls: ['./jobcode-status.component.scss']\n})\nexport class JobcodeStatusComponent {\n @Input() public jobValue!: Route;\n}\n","<div class=\"statusprt\" *ngIf=\"jobValue['values']\">\n <span class=\"done\"> Done - {{jobValue['values']['Done']}} </span>\n <span class=\"ongoing\"> Ongoing - {{jobValue['values']['Ongoing']}} </span>\n <span class=\"open\"> Open - {{jobValue['values']['Open']}} </span>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { JobCodeOverviewData, JobCodeOverviewEnum } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-jobcode-overview',\n templateUrl: './jobcode-overview.component.html',\n styleUrls: ['./jobcode-overview.component.scss']\n})\nexport class JobcodeOverviewComponent {\n @Input() public jobValue: any;\n label = JobCodeOverviewData;\n overViewEnum: any = JobCodeOverviewEnum;\n constructor() {}\n makeValueObject(item: string) {\n let obj;\n obj = { label: this.overViewEnum[item], value: this.jobValue[item] }\n return obj;\n }\n}\n","<div class=\"detail_view m-20\">\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>{{makeValueObject('pickup_location')['label']}}:</b> {{makeValueObject('pickup_location')['value']}}</p>\n <p class=\"dropprt\"><b>{{makeValueObject('delivery_location')['label']}}:</b> {{makeValueObject('delivery_location')['value']}}</p>\n </div>\n <ng-container *ngFor=\"let item of label\">\n <span *ngIf=\"item !== 'pickup_location' && item !== 'delivery_location'\" (mousedown)=\"$event.stopPropagation()\"><b>{{makeValueObject(item)['label']}}:</b> {{makeValueObject(item)['value']}}</span>\n </ng-container>\n </div>\n\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\n\ninterface CardEntity {\n pickup_location: string,\n delivery_location: string,\n route_name: string,\n customer_name: string,\n material: string,\n materialName: string;\n unit: string,\n estimated_distance: string,\n estimated_time: string,\n trucker_pay_estimate: string,\n customer_price_estimate: string,\n note: string,\n}\n\ninterface CardPropEntity {\n className: string,\n repository: string\n}\nconst CardKeysValue = ['route_name', 'customer_name', 'material', 'unit',\n 'estimated_distance', 'estimated_time', 'trucker_pay_estimate', 'customer_price_estimate', 'note', 'pickup_location', 'delivery_location'];\n\nenum CardElements {\n route_name = 'Name',\n customer_name = 'Customer',\n material = 'Material',\n unit = 'Type',\n estimated_distance = 'Distance',\n estimated_time = 'Travel Time',\n trucker_pay_estimate = 'Trucker Pay Estimate',\n customer_price_estimate = 'Customer Price Estimate',\n note = 'Notes',\n pickup_location = 'Pickup',\n delivery_location = 'Delivery'\n}\n\n\n@Component({\n selector: 'lib-route-info-card',\n templateUrl: './route-info-card.component.html',\n styleUrls: ['./route-info-card.component.scss']\n})\nexport class RouteInfoCardComponent {\n @Input() popupData: CardEntity;\n @Input() propData: CardPropEntity;\n cardKeysElement = CardKeysValue;\n constructor(public cdr: ChangeDetectorRef){}\n ngAfterViewInit(): void {\n if (this.propData['repository'] === 'customer') {\n this.cardKeysElement = this.cardKeysElement.filter(ele => ele !== 'trucker_pay_estimate');\n this.cdr.detectChanges();\n }\n\n }\n createLabel(itemName) {\n let obj;\n if (this.propData['repository'] === 'coolmap') {\n obj = { label: CardElements[itemName], value: this.popupData[itemName] }\n }\n if (this.propData['repository'] === 'customer') {\n if (itemName === 'material') {\n obj = { label: CardElements[itemName], value: this.popupData['materialLabel'] }\n } else {\n obj = { label: CardElements[itemName], value: this.popupData[itemName] }\n }\n }\n if (itemName === 'trucker_pay_estimate' || itemName === 'customer_price_estimate') {\n obj['value'] = obj['value'] ? '$' + obj['value'] : '';\n }\n return obj;\n }\n}\n","<div [class]=\"propData['className']\">\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b>{{createLabel('pickup_location')['value']}}</p>\n <p class=\"dropprt\"><b>Delivery:</b>{{createLabel('delivery_location')['value']}}</p>\n </div>\n <ng-container *ngFor=\"let item of cardKeysElement\">\n <span *ngIf=\"item !== 'pickup_location' && item !== 'delivery_location'\" [class.notes]=\"item === 'note'\"><b>{{createLabel(item)['label']}}:</b> {{createLabel(item)['value']}}</span>\n </ng-container>\n </div>\n</div>\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { Component, OnInit, Input, Output, EventEmitter, OnDestroy, Inject } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { CoolmapConfigModel, CoolmapService, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n\n@Component({\n selector: 'app-job-code',\n templateUrl: './job-code.component.html',\n styleUrls: ['./job-code.component.scss']\n})\nexport class JobCodeComponent implements OnInit, OnDestroy {\n @Input() public jobdetail!: any;\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n isVisible: boolean = false;\n routes: Route[] = [];\n public selectedRoute = new SelectionModel<any>(true, [])\n @Output() public clearJobDetails = new EventEmitter();\n @Output() public openShareRoute = new EventEmitter(); isOverlapRouteSection = false;\n public destroyer$ = new Subject<boolean>();\n detailsCardEnable: boolean | string;\n preventMouseout: boolean = false;\n routeCardDetail: Route;\n preventListUpdate: boolean;\n masterRoutes: any;\n unitList: any;\n materialsList: any;\n\n constructor(public utils: UtilsService, public coolMap: CoolmapService,\n @Inject('memberData') public config: CoolmapConfigModel) {\n this.utils.clearViewRouteforJobCodeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {\n if (res) this.coolMap.removeJobFromMap(this.selectedRoute.selected); this.selectedRoute.clear();\n });\n }\n\n ngOnInit(): void { this.checkAndCallRouteList() }\n checkAndCallRouteList() {\n this.utils.clearOptions();\n if (this.config.repository === 'customer') {\n this.utils.fetchUnitsList().then((res) => {\n this.unitList = res;\n this.utils.fetchMaterialsListForCustomer().then((res) => {\n this.materialsList = res;\n this.getRouteListForCustomer();\n });\n });\n } else {\n this.getRouteListForCoolMap()\n }\n }\n getUnitName(data): string {\n let unitName = '';\n this.unitList.map((res) => {\n if (res.id === data.unit_id) {\n unitName = res.type\n }\n })\n return unitName;\n }\n\n getMaterialName(data): string {\n let materialName = '';\n this.materialsList.map((res) => {\n if (res.sub_material_id === data.materials_id) {\n materialName = res.label\n }\n })\n return materialName;\n }\n getRouteListForCoolMap() {\n this.utils.getData('routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.routes = res.data;\n this.masterRoutes = res.data;\n this.preventListUpdate = false;\n this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });\n }\n })\n }\n getRouteListForCustomer() {\n const dataset = {\n customer_id: this.customerRepoDetails.customer.id\n }\n this.utils.postdata('routes/all', dataset).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res) {\n this.routes = res.data;\n this.preventListUpdate = false;\n this.routes.map((ele: Route) => {\n ele.unit = this.getUnitName(ele);\n ele.materialLabel = this.getMaterialName(ele);\n ele.material = this.getMaterialName(ele).split('|')[0].trim();\n this.utils.makeOptions(ele)\n });\n this.masterRoutes = this.routes;\n }\n });\n }\n\n toggleSidemenu() {\n this.isVisible = !this.isVisible;\n this.detailsCardEnable = false;\n this.preventMouseout = false\n }\n clearJob() { this.clearJobDetails.emit(true); this.utils.preVentJobdetailclose.next(false) }\n selectRoute(event: Route) {\n const i = this.selectedRoute.selected.findIndex(ele => ele['order_number'] === event['order_number']);\n this.selectedRoute.toggle(event);\n if (!this.selectedRoute.isSelected(event) && event['route_id']) {\n this.coolMap.removeRouteAndMarker(event['route_id']).then((res: any) => {\n this.coolMap.extendReBound();\n });\n } else {\n this.coolMap.plotRoute(event, event['route_id'], 'jobrouteList', false, true);\n }\n }\n masterToggle() {\n if (this.routes.length === this.selectedRoute.selected.length) {\n this.selectedRoute.clear();\n this.routes.forEach(row => {\n this.coolMap.removeRouteAndMarker(row['route_id']).then((res: any) => { this.coolMap.extendReBound() })\n });\n } else {\n this.routes.forEach(row => {\n this.selectedRoute.select(row);\n this.coolMap.plotRoute(row, row['route_id'], 'jobrouteList', false, true);\n });\n }\n }\n togglerouteDetails(eventType: string | boolean, route: Route, mouseOut?: boolean) {\n if (typeof (eventType) === 'string') {\n this.preventMouseout = true; this.utils.setdictValue('route-details', JSON.stringify(route));\n }\n if (typeof (eventType) === 'boolean' && eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };\n if (typeof (eventType) === 'boolean' && !eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };\n if (this.preventMouseout && !this.detailsCardEnable) this.preventMouseout = false;\n if (mouseOut) {\n if (this.preventMouseout) {\n route = this.utils.getdictValue('route-details');\n this.routeCardDetail = route;\n }\n if (!this.preventMouseout) {\n this.routeCardDetail = route\n }\n } else {\n this.routeCardDetail = route\n }\n this.routeCardDetail['created_at'] = this.utils.getDateFormat(new Date(this.routeCardDetail['created_at']), '/');\n }\n\n openShareRouteModal(data) {\n this.openShareRoute.emit(data);\n }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n <cdk-virtual-scroll-viewport itemSize=\"50\" class=\"routeList-viewport\">\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label> </label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" *ngIf=\"config.repository === 'customer'\">\n <img src=\"assets/images/share_icon.png\" (click)=\"openShareRouteModal(list)\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{list['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? list['material'] : list['materialLabel']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </cdk-virtual-scroll-viewport>\n\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'listRoutecard', repository: config['repository']}\" [popupData]=\"routeCardDetail\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\n@Component({\n selector: 'app-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss']\n})\nexport class DialogComponent {\n body = 'Are you sure you want to delete?';\n positive = 'Delete';\n negative = 'Cancel';\n constructor(public dialogRef: MatDialogRef<DialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\n ['body', 'positive', 'negative'].map(elem => {\n if (this.data[elem] !== undefined) { this[elem] = this.data[elem] }\n });\n }\n onClose(result: boolean) { this.dialogRef.close(result) }\n}\n","<div class=\"dialogbox\">\n <h2>{{body}}</h2>\n <div class=\"twobtnprt\">\n <button class=\"delbtn\" (click)=\"onClose(true)\">{{positive}}</button>\n <button class=\"closebtn\" (click)=\"onClose(false)\">{{negative}}</button>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { EstinationEnum, EstinationData } from '@aggdirect/coolmap-services';\n\n@Component({\n selector: 'app-estimation-display',\n templateUrl: './estimation-display.component.html',\n styleUrls: ['./estimation-display.component.scss']\n})\nexport class EstimationDisplayComponent {\n @Input() value!: any;\n label = EstinationData;\n Estinationlabel: any = EstinationEnum;\n}\n","<div class=\"d-flex\">\n <ng-container *ngFor=\"let item of label\">\n <span *ngIf=\"value[item]\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Estimation of {{Estinationlabel[item]}} - <b>{{value[item]}}</b>\n </span>\n </ng-container>\n</div>\n","import { Component, ElementRef, OnInit, ViewChild, Output, EventEmitter, SimpleChanges, OnChanges, Input, OnDestroy, Inject } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, fromEvent, map, Observable, startWith, Subject, takeUntil } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogComponent } from '../shared/dialog/dialog.component';\nimport { CoolmapConfigModel, CoolmapService, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';\n\n\n\n@Component({\n selector: 'app-add-route',\n templateUrl: './add-route.component.html',\n styleUrls: ['./add-route.component.scss']\n})\nexport class AddRouteComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('filterPickup') public filterPickup!: ElementRef;\n @ViewChild('filterDelivery') public filterDelivery!: ElementRef;\n @Output() public changeNav = new EventEmitter<string>();\n @Output() public updateRouteList = new EventEmitter<boolean>();\n pickupOptions: any = [];\n deliveryOptions: any = [];\n requestParmsForRouteDetails = { pickup_lat_lng: '', delivery_lat_lng: '' }\n customersList: any = [];\n unitsList: any = [];\n materialsList: any = [];\n addRouteForm!: FormGroup;\n @Input() public routeData!: Route;\n @Input() public customerRepoDetails!: CustomerRepoDetailsModel;\n routeId: string | null | undefined;\n preventSave: boolean = false;\n preventInitialSave: boolean = false;\n customersList$!: Observable<any>;\n routeDetails!: { pickup_location: string | null | undefined; delivery_location: string | null | undefined; } | null;\n public destroyer$ = new Subject<boolean>();\n popupDetails: Route;\n enablePopUp: boolean = false;\n prevantPopupClose = false;\n enableForm: boolean = false;\n\n constructor(public coolMapService: CoolmapService, public utils: UtilsService, public dialog: MatDialog,\n @Inject('memberData') public config: CoolmapConfigModel) { \n if (this.config.repository === 'customer') {\n this.utils.fetchMaterialsListForCustomer().then((res)=>{ \n this.materialsList = res;\n });\n } else {\n this.utils.fetchMaterialsList().then((res)=>{\n this.materialsList = res;\n });\n }\n \n this.utils.fetchUnitsList().then((res)=>{\n this.unitsList = res;\n });\n this.formInit();\n this.utils.getrouteDetailsUtility.subscribe(res => {\n if (res) {\n if (res['event'] !== 'click' && !this.prevantPopupClose) { this.enablePopUp = res['event'] }\n else if (this.enablePopUp && !this.prevantPopupClose) { this.prevantPopupClose = true; }\n if (res['event'] !== 'click' && !res['event'] && this.prevantPopupClose) {\n this.popupDetails = this.utils.getdictValue('route-detailsv2');\n } else { this.popupDetails = res['route'] }\n if (this.enablePopUp) this.popupDetails['created_at'] = this.utils.getDateFormat(new Date(this.popupDetails['created_at']), '/');\n }\n });\n }\n filterCustomerList() {\n this.customersList$ = this.addRouteForm.controls['customer_name'].valueChanges.pipe(\n startWith(''),\n map(value => this._filter(value || '')),\n );\n }\n public _filter(value: string): string[] {\n const filterValue = value.toLowerCase();\n return this.customersList.filter((option: any) => option['customer_name'].toLowerCase().includes(filterValue));\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['routeData'] && !changes['routeData']['currentValue']) this.inIt(null);\n }\n openDialog(): void {\n const dialogRef = this.dialog.open(DialogComponent, {\n data: { body: 'Are you sure you want to delete this route?' },\n });\n dialogRef.afterClosed().subscribe(res => { if (res) { this.deleteRoute() } });\n }\n editEvent() {\n this.prevantPopupClose = false;\n this.enableForm = true; this.enablePopUp = false;\n this.popupDetails['prevent'] = false;\n this.utils.removeMapEntity.next(this.popupDetails);\n this.inIt(this.popupDetails);\n }\n inIt(changes: Route) {\n if (changes) {\n if (!changes['prevent']) {\n this.preventSave = false;\n this.formControlValue();\n this.patchFormValue(changes).then(() => {\n this.checkAndFetchRouteInformation(true)\n });\n }\n }\n if (!changes) {\n this.enableForm = true; this.preventSave = true;\n this.patchFormValue().then(() => {\n this.checkAndFetchRouteInformation()\n });\n }\n }\n ngOnInit(): void {\n this.formControlValue();\n if (this.config.repository === 'customer') {\n this.addRouteForm.patchValue({\n customer_id: this.customerRepoDetails.customer.id,\n customer_name: this.customerRepoDetails.customer.name,\n })\n } else {\n this.utils.fetchCustomersList().then((res)=>{\n this.customersList = res; this.filterCustomerList(); this.addRouteForm.controls['customer_name'].enable();\n });\n }\n }\n\n ngAfterViewInit() {\n fromEvent(this.filterPickup.nativeElement, 'keyup').pipe(\n distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {\n this.utils.autocomplete(this.filterPickup)\n .then((res) => {\n if (res) {\n this.addRouteForm.patchValue({\n pickup_location: res['formatted_address'],\n pickup_lat_lng: (res['lat'] + ',' + res['lng']).toString()\n });\n this.coolMapService.clearBoundWithCordinates();\n this.checkAndFetchRouteInformation();\n }\n });\n });\n\n fromEvent(this.filterDelivery.nativeElement, 'keyup').pipe(\n distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {\n this.utils.autocomplete(this.filterDelivery).then((res) => {\n if (res) {\n this.addRouteForm.patchValue({\n delivery_location: res['formatted_address'],\n delivery_lat_lng: (res['lat'] + ',' + res['lng']).toString()\n })\n this.checkAndFetchRouteInformation();\n }\n });\n });\n }\n\n formControlValue() {\n this.addRouteForm.controls['pickup_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (this.addRouteForm.value.pickup_location && res !== this.addRouteForm.value.pickup_location) {\n this.addRouteForm.patchValue({ pickup_lat_lng: '' });\n this.addRouteForm.controls['pickup_lat_lng'].markAsTouched();\n }\n });\n\n this.addRouteForm.controls['delivery_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (this.addRouteForm.value.delivery_location && res !== this.addRouteForm.value.delivery_location) {\n this.addRouteForm.patchValue({ delivery_lat_lng: '' });\n this.addRouteForm.controls['delivery_lat_lng'].markAsTouched();\n }\n });\n }\n\n formInit() {\n this.addRouteForm = new FormGroup({\n route_name: new FormControl('', [Validators.required]),\n customer_name: new FormControl({ value: '', disabled: true }, [Validators.required]),\n customer_id: new FormControl(''),\n materials_id: new FormControl('', [Validators.required]),\n unit_id: new FormControl('', [Validators.required]),\n path: new FormControl('', [Validators.required]),\n pickup_location: new FormControl('', [Validators.required]),\n pickup_lat_lng: new FormControl('', [Validators.required]),\n delivery_location: new FormControl('', [Validators.required]),\n delivery_lat_lng: new FormControl('', [Validators.required]),\n estimated_distance: new FormControl('', [Validators.required]),\n estimated_time: new FormControl('', [Validators.required]),\n note: new FormControl('', [Validators.maxLength(2048)]),\n trucker_pay_estimate: new FormControl(null),\n customer_price_estimate: new FormControl(null),\n });\n }\n\n async patchFormValue(data?: Route) {\n this.addRouteForm.reset();\n this.addRouteForm.patchValue(data!);\n if (this.config.repository === 'customer') { \n this.addRouteForm.patchValue({\n customer_id: this.customerRepoDetails.customer.id,\n customer_name: this.customerRepoDetails.customer.name,\n })\n }\n this.routeId = data?.route_id;\n this.routeDetails = data ? { pickup_location: data.pickup_location, delivery_location: data.delivery_location } : null;\n this.addRouteForm.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe(res => {\n if (res) { if (this.preventInitialSave) this.preventInitialSave = false }\n });\n this.filterCustomerList();\n await true;\n }\n\n checkAndFetchRouteInformation(isinitial?: boolean) {\n if (this.addRouteForm.value?.delivery_lat_lng?.length > 0 && this.addRouteForm.value?.pickup_lat_lng?.length > 0 && this.addRouteForm.value.unit_id) {\n let unit = this.unitsList.find((x: any) => x.id === this.addRouteForm.value.unit_id);\n const param = {\n delivery_lat_lng: this.addRouteForm.value.delivery_lat_lng,\n pickup_lat_lng: this.addRouteForm.value.pickup_lat_lng,\n unit: unit?.type\n };\n this.utils.postdata('calculate/routes/estimation', param).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res && res['path']) {\n this.addRouteForm.patchValue({\n estimated_distance: res['dist'],\n estimated_time: res['time'],\n path: res['path'],\n trucker_pay_estimate: res['trucker_haul_cost'],\n customer_price_estimate: (+(+res['trucker_haul_cost'] / 0.80).toFixed(2))\n });\n let path = res['path'].split(';');\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\n res['path'] = path;\n const element: any = {\n type: 'FeatureCollection',\n features: [{ type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: res['path'] } }]\n }\n this.coolMapService.removeRouteAndMarker(1).then(() => {\n const unit = this.unitsList.find((x: any) => x.id === this.addRouteForm.value.unit_id);\n const materialDetails = this.materialsList.find((x: any) => x.sub_material_id === this.addRouteForm.value.materials_id);\n this.coolMapService.loadMapProperty(element, 1, unit?.type,\n {\n pickup_location: this.addRouteForm.get('pickup_location')?.value,\n delivery_location: this.addRouteForm.get('delivery_location')?.value,\n route_name: this.addRouteForm.get('route_name')?.value,\n materialLabel: materialDetails?.label,\n unit: unit?.type\n }).then((res) => { this.preventSave = true });\n });\n } else {\n this.coolMapService.removeRouteAndMarker(1);\n this.utils.openSnackBar(res['status'], 'error');\n }\n if (this.routeId && isinitial) this.preventInitialSave = true;\n });\n } else { this.coolMapService.removeRouteAndMarker(1) }\n }\n\n formateLatLong(latlong: string) { return latlong ? latlong.split(',').map(x => +x).reverse() : null }\n saveRoute() {\n if (this.addRouteForm.valid) {\n this.preventSave = false;\n const data = this.addRouteForm.getRawValue();\n const url = this.routeId ? this.utils.postdata('update/routes', data) : this.utils.postdata('add/routes', data)\n if (this.routeId) data['id'] = this.routeId;\n url.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\n if (res.success) {\n this.updateRouteList.emit(true);\n this.utils.openSnackBar(res.message, 'success');\n this.preventInitialSave = true;\n this.preventSave = true;\n if (!this.routeId) this.changeNav.next('Addroute');\n } else {\n this.utils.openSnackBar(res.message, 'error');\n this.preventSave = true;\n }\n }, (err) => { if (err) { this.preventSave = true; } });\n } else {\n this.addRouteForm.markAllAsTouched();\n }\n }\n deleteRoute() {\n this.preventSave = false;\n this.utils.postdata('delete/routes', { uuid: this.routeId }).subscribe(res => {\n if (res['data']['success']) {\n this.utils.openSnackBar(res['data']['message'], 'success');\n this.updateRouteList.emit(true);\n this.changeNav.next('Addroute');\n this.preventInitialSave = true;\n this.preventSave = true;\n } else {\n this.utils.openSnackBar('Somthing went wrong', 'error');\n this.preventSave = true;\n }\n }, (err) => { this.preventSave = true })\n }\n ngOnDestroy(): void {\n this.destroyer$.next(true);\n this.destroyer$.unsubscribe();\n }\n}\n","<div class=\"addroutebox\">\n <div class=\"routedetailbox\" *ngIf=\"enablePopUp\">\n <div class=\"closebtnroutedetail\">\n <mat-icon (click)=\"prevantPopupClose = false; enablePopUp = false;\">clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'routeCard', repository: config['repository']}\" [popupData]=\"popupDetails\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{popupDetails['created_by_name']}} on {{popupDetails['created_at']}}\n </small>\n <button class=\"editbtn\" (click)=\"editEvent()\">Edit</button>\n </div>\n </div>\n <div class=\"add_add_route_box\" cdkDrag [style.visibility]=\"!enableForm ? 'hidden' : 'visible'\">\n <div class=\"topheadingprt\">\n <h2> {{routeId? 'EDIT' : 'ADD'}} ROUTE </h2>\n <div class=\"buttonprt\">\n <button *ngIf=\"routeId\" class=\"delbtn\" (click)=\"openDialog()\">Delete</button>\n <button mat-raised-button type=\"submit\" class=\"closebtn\" (click)=\"changeNav.next('Addroute')\">Close</button>\n </div>\n </div>\n <form [formGroup]=\"addRouteForm\">\n <div class=\"route_form_area\">\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Route Name</mat-label>\n <input matInput formControlName=\"route_name\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\">\n <mat-error *ngIf=\"addRouteForm.controls['route_name'].hasError('required')\">\n Route Name is required\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Customer_name</mat-label>\n <input type=\"text\" placeholder=\"Customer Name\" matInput formControlName=\"customer_name\" [matAutocomplete]=\"auto\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let customer of customersList$ | async\" [value]=\"customer['customer_name']\">\n {{customer['customer_name']}}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"addRouteForm.controls['customer_name'].hasError('required')\">\n Customer name is required.\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Pickup</mat-label>\n <input type=\"text\" \n placeholder=\"Search...\" matInput #filterPickup\n formControlName=\"pickup_location\" \n (mousedown)=\"$event.stopPropagation()\">\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['pickup_lat_lng'].touched && addRouteForm.controls['pickup_lat_lng'].hasError('required')\">\n Please select pickup location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Delivery</mat-label>\n <input type=\"text\" \n placeholder=\"Search...\"\n matInput #filterDelivery\n formControlName=\"delivery_location\" \n (mousedown)=\"$event.stopPropagation()\">\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['delivery_lat_lng'].touched && addRouteForm.controls['delivery_lat_lng'].hasError('required')\">\n Please select delivery location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Notes</mat-label>\n <textarea style=\"height: 18px; resize: none;\" matInput name=\"\" id=\"\" cols=\"30\" rows=\"10\" formControlName=\"note\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\"></textarea>\n <mat-error *ngIf=\"addRouteForm.controls['note'].hasError('maxlength')\">\n Notes should be within 2048 characters.\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"col-6 d-flex\">\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Unit type</mat-label>\n <mat-select formControlName=\"unit_id\" (selectionChange)=\"checkAndFetchRouteInformation()\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let unit of unitsList\" [value]=\"unit?.id\"> {{unit?.type}} </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['unit_id'].hasError('required')\">\n Unit is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Material</mat-label>\n <mat-select formControlName=\"materials_id\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let material of materialsList\" [value]=\"config.repository === 'coolmap' ? material?.material_id : material?.sub_material_id\"> {{config.repository === 'coolmap' ? material?.material : material?.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['materials_id'].hasError('required')\">\n Material is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"col-6\">\n <app-estimation-display *ngIf=\"addRouteForm?.value?.pickup_lat_lng && addRouteForm?.value?.delivery_lat_lng\" [value]=\"addRouteForm['value']\"></app-estimation-display>\n </div>\n <div class=\"col-6\" *ngIf=\"addRouteForm['value']['trucker_pay_estimate'] && addRouteForm['value']['customer_price_estimate']\">\n <span *ngIf=\"config['repository'] !== 'customer'\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Trucker Pay Estimate - <b>{{'$'+ addRouteForm['value']['trucker_pay_estimate']}}</b>\n </span>\n <span class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Customer Price Estimate - <b>{{'$'+ addRouteForm['value']['customer_price_estimate']}}</b>\n </span>\n </div>\n <button mat-raised-button type=\"submit\" (click)=\"saveRoute()\" *ngIf=\"preventSave\"\n [disabled]=\"addRouteForm.invalid && preventSave || preventInitialSave\">{{routeId? 'Update' : 'Save'}}\n </button>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"!preventSave\"></mat-spinner>\n </div>\n </div>\n </form>\n </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MapComponent } from './component/map/map.component';\nimport { NavComponent } from './component/nav/nav.component';\n\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport { AddRouteNavComponent } from './component/nav/layout/add-route-nav/add-route-nav.component';\nimport { JobCodeNavComponent } from './component/nav/layout/job-code-nav/job-code-nav.component';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule, MatPseudoCheckboxModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport { RouteJobCodeListComponent } from './component/route-jobcode-list/route-jobcode-list.component';\nimport { ViewRouteListCardComponent } from './component/route-jobcode-list/view-route-list-card/view-route-list-card.component';\nimport { SmsCardDetailsOverviewComponent } from './component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component';\nimport { JobCodeListCardComponent } from './component/route-jobcode-list/job-code-list-card/job-code-list-card.component';\nimport { JobCodeComponent } from './component/job-code/job-code.component';\nimport { JobcodeStatusComponent } from './component/shared/jobcode-status/jobcode-status.component';\nimport { JobRouteListComponent } from './component/shared/job-route-list/job-route-list.component';\nimport { JobcodeOverviewComponent } from './component/shared/jobcode-overview/jobcode-overview.component';\nimport { DialogComponent } from './component/shared/dialog/dialog.component';\nimport { AddRouteComponent } from './component/add-route/add-route.component';\nimport { EstimationDisplayComponent } from './component/shared/estimation-display/estimation-display.component';\nimport { RouteInfoCardComponent } from './component/shared/route-info-card/route-info-card.component';\nimport { CoolmapConfigModel } from '@aggdirect/coolmap-services';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n\n\n@NgModule({\n declarations: [\n MapComponent,\n NavComponent,\n AddRouteNavComponent,\n JobCodeNavComponent,\n RouteJobCodeListComponent,\n ViewRouteListCardComponent,\n SmsCardDetailsOverviewComponent,\n JobCodeListCardComponent,\n JobCodeComponent,\n JobRouteListComponent,\n JobcodeStatusComponent,\n JobcodeOverviewComponent,\n DialogComponent,\n AddRouteComponent,\n EstimationDisplayComponent,\n RouteInfoCardComponent\n ],\n imports: [\n CommonModule,\n MatSnackBarModule,\n MatSidenavModule,\n DragDropModule,\n FormsModule,\n MatInputModule,\n MatSelectModule,\n MatIconModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatChipsModule,\n MatDialogModule,\n MatTooltipModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatPseudoCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n ScrollingModule\n ],\n exports: [\n MapComponent,\n NavComponent,\n AddRouteNavComponent,\n JobCodeNavComponent,\n RouteJobCodeListComponent,\n ViewRouteListCardComponent,\n SmsCardDetailsOverviewComponent,\n JobCodeListCardComponent,\n JobCodeComponent,\n JobRouteListComponent,\n JobcodeStatusComponent,\n JobcodeOverviewComponent,\n DialogComponent,\n AddRouteComponent\n ],\n // TODO: entryComponents is no longer supported. Find out if this breaks something\n // entryComponents: [\n // DialogComponent,\n // JobCodeComponent,\n // AddRouteComponent\n // ],\n providers: [\n ]\n})\n\nexport class CoolmapModule {\n public static forRoot(memberData: CoolmapConfigModel): ModuleWithProviders<CoolmapModule> {\n return {\n ngModule: CoolmapModule,\n providers: [{provide: 'memberData', useValue: memberData}]\n };\n }\n}\n","/*\n * Public API Surface of coolmap\n */\n\nexport * from './lib/coolmap.module';\nexport * from './lib/component/map/map.component';\nexport * from './lib/component/nav/nav.component';\nexport * from './lib/component/nav/layout/add-route-nav/add-route-nav.component';\nexport * from './lib/component/nav/layout/job-code-nav/job-code-nav.component';\n\nexport * from './lib/component/route-jobcode-list/route-jobcode-list.component';\nexport * from './lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component';\nexport * from './lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component';\nexport * from './lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component';\nexport * from './lib/component/job-code/job-code.component';\nexport * from './lib/component/add-route/add-route.component';\nexport * from './lib/component/shared/jobcode-status/jobcode-status.component';\nexport * from './lib/component/shared/job-route-list/job-route-list.component';\nexport * from './lib/component/shared/jobcode-overview/jobcode-overview.component';\nexport * from './lib/component/shared/dialog/dialog.component';\n\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1","i6","i7","i9.ViewRouteListCardComponent","i10.SmsCardDetailsOverviewComponent","i11.JobCodeListCardComponent","i8","i11.RouteJobCodeListComponent","i10","i11","i12.RouteJobCodeListComponent","i5","i6.JobRouteListComponent","i7.JobcodeStatusComponent","i8.JobcodeOverviewComponent","i9.RouteInfoCardComponent","i9","i12","i13","i14.EstimationDisplayComponent","i15.RouteInfoCardComponent"],"mappings":"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"}
|