Index: trip-planner-front/node_modules/.cache/babel-webpack/dc1db31b89fcb9a60acad946220957fd.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/dc1db31b89fcb9a60acad946220957fd.json	(revision 6a8023106281cf8cc9e4dc316984fdb52cdcf8e2)
+++ trip-planner-front/node_modules/.cache/babel-webpack/dc1db31b89fcb9a60acad946220957fd.json	(revision 6a8023106281cf8cc9e4dc316984fdb52cdcf8e2)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { FormControl } from '@angular/forms';\nimport { map, startWith, switchMap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../_services/city.service\";\nimport * as i2 from \"../_services/region.service\";\nimport * as i3 from \"../_services/companion.service\";\nimport * as i4 from \"../_services/cateogry.service\";\nimport * as i5 from \"../_services/location.service\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"@angular/material/form-field\";\nimport * as i8 from \"@angular/material/input\";\nimport * as i9 from \"@angular/forms\";\nimport * as i10 from \"@angular/material/autocomplete\";\nimport * as i11 from \"@angular/material/select\";\nimport * as i12 from \"@angular/material/chips\";\nimport * as i13 from \"@angular/material/button\";\nimport * as i14 from \"@angular/material/core\";\nimport * as i15 from \"@angular/material/icon\";\n\nfunction LocationsFormComponent_div_9_mat_option_8_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 16);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const city_r7 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", city_r7.id)(\"value\", city_r7.id);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", city_r7.name, \"\");\n  }\n}\n\nfunction LocationsFormComponent_div_9_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r9 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\");\n    i0.ɵɵelementStart(1, \"label\");\n    i0.ɵɵelementStart(2, \"h5\");\n    i0.ɵɵtext(3, \"Please select a city\");\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(4, \"mat-form-field\", 5);\n    i0.ɵɵelementStart(5, \"mat-label\");\n    i0.ɵɵtext(6, \"Please select a city\");\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(7, \"mat-select\", 15);\n    i0.ɵɵlistener(\"ngModelChange\", function LocationsFormComponent_div_9_Template_mat_select_ngModelChange_7_listener($event) {\n      i0.ɵɵrestoreView(_r9);\n      const ctx_r8 = i0.ɵɵnextContext();\n      return ctx_r8.cityId = $event;\n    });\n    i0.ɵɵtemplate(8, LocationsFormComponent_div_9_mat_option_8_Template, 2, 3, \"mat-option\", 9);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(7);\n    i0.ɵɵproperty(\"ngModel\", ctx_r0.cityId);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r0.cities);\n  }\n}\n\nfunction LocationsFormComponent_mat_option_16_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 16);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const option_r10 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", option_r10);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", option_r10, \" \");\n  }\n}\n\nfunction LocationsFormComponent_div_18_mat_option_8_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 16);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const region_r12 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", region_r12.id)(\"value\", region_r12.id);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", region_r12.name, \"\");\n  }\n}\n\nfunction LocationsFormComponent_div_18_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r14 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\");\n    i0.ɵɵelementStart(1, \"label\");\n    i0.ɵɵelementStart(2, \"h5\");\n    i0.ɵɵtext(3, \"Please select a region\");\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(4, \"mat-form-field\", 5);\n    i0.ɵɵelementStart(5, \"mat-label\");\n    i0.ɵɵtext(6, \"Please select a region\");\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(7, \"mat-select\", 17);\n    i0.ɵɵlistener(\"ngModelChange\", function LocationsFormComponent_div_18_Template_mat_select_ngModelChange_7_listener($event) {\n      i0.ɵɵrestoreView(_r14);\n      const ctx_r13 = i0.ɵɵnextContext();\n      return ctx_r13.regionId = $event;\n    });\n    i0.ɵɵtemplate(8, LocationsFormComponent_div_18_mat_option_8_Template, 2, 3, \"mat-option\", 9);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(7);\n    i0.ɵɵproperty(\"ngModel\", ctx_r3.regionId);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r3.regions);\n  }\n}\n\nfunction LocationsFormComponent_mat_option_25_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-option\", 16);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const companion_r15 = ctx.$implicit;\n    i0.ɵɵproperty(\"value\", companion_r15.id);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(companion_r15.type);\n  }\n}\n\nfunction LocationsFormComponent_mat_chip_35_mat_icon_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"mat-icon\");\n    i0.ɵɵtext(1, \"check\");\n    i0.ɵɵelementEnd();\n  }\n}\n\nfunction LocationsFormComponent_mat_chip_35_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r20 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"mat-chip\", 18, 19);\n    i0.ɵɵlistener(\"click\", function LocationsFormComponent_mat_chip_35_Template_mat_chip_click_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r20);\n      const category_r16 = restoredCtx.$implicit;\n\n      const _r17 = i0.ɵɵreference(1);\n\n      const ctx_r19 = i0.ɵɵnextContext();\n      return ctx_r19.toggleSelection(_r17, category_r16);\n    });\n    i0.ɵɵtemplate(2, LocationsFormComponent_mat_chip_35_mat_icon_2_Template, 2, 0, \"mat-icon\", 4);\n    i0.ɵɵtext(3);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const category_r16 = ctx.$implicit;\n\n    const _r17 = i0.ɵɵreference(1);\n\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngIf\", !_r17.selected);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", category_r16.name, \" \");\n  }\n}\n\nexport class LocationsFormComponent {\n  constructor(cityService, regionService, companionService, categoryService, locationService) {\n    this.cityService = cityService;\n    this.regionService = regionService;\n    this.companionService = companionService;\n    this.categoryService = categoryService;\n    this.locationService = locationService;\n    this.myControl = new FormControl();\n    this.disableSelect = new FormControl(false);\n    this.cityOption = false;\n    this.regionOption = false;\n    this.filteredOptions = new Observable();\n    this.cities = [];\n    this.regions = [];\n    this.companions = [];\n    this.categories = [];\n    this.chipsSeletion = [];\n    this.locationId = 0;\n    this.companionId = 0;\n    this.lengthOfStay = 1;\n    this.categoryIds = '';\n    this.regionId = 0;\n    this.cityId = 0;\n    this.value = 0;\n    this.max = 30;\n  }\n\n  ngOnInit() {\n    this.filteredOptions = this.myControl.valueChanges.pipe(startWith(''), switchMap(val => {\n      return this.filter(val || '');\n    }));\n    this.cityService.getAllCities().subscribe(data => {\n      this.cities = data;\n    });\n    this.regionService.getAllRegions().subscribe(data => {\n      this.regions = data;\n    });\n    this.categoryService.getAllCategories().subscribe(data => {\n      this.categories = data;\n    });\n    this.companionService.getAllCompanions().subscribe(data => {\n      this.companions = data;\n    });\n  }\n\n  filter(val) {\n    // call the service which makes the http-request\n    return this.cityService.getAllCities().pipe(map(response => response.filter(option => {\n      return option.name.toLowerCase().indexOf(val.toLowerCase()) === 0;\n    })));\n  }\n\n  toggleSelection(chip, category) {\n    chip.toggleSelected();\n\n    if (this.chipsSeletion.length > 0) {\n      if (this.chipsSeletion.indexOf(category.id) <= -1) {\n        this.chipsSeletion.push(category.id);\n      } else {\n        const index = this.chipsSeletion.indexOf(category.id);\n        this.chipsSeletion.splice(index, 1);\n      }\n    } else {\n      this.chipsSeletion.push(category.id);\n    }\n\n    console.log(this.chipsSeletion);\n  }\n\n  createMyPlanner() {\n    this.categoryIds = this.chipsSeletion.join(',');\n    console.log(this.categoryIds);\n\n    if (this.cityOption) {\n      this.locationService.getLocationsFromCity(this.cityId, this.companionId, this.lengthOfStay, this.categoryIds).subscribe(result => {\n        console.log(result);\n      });\n    } else if (this.regionOption) {\n      this.locationService.getLocationsFromRegion(this.regionId, this.companionId, this.lengthOfStay, this.categoryIds).subscribe(result => {\n        console.log(result);\n      });\n    }\n  }\n\n  chooseCityOption() {\n    this.cityOption = true;\n    this.regionOption = false;\n  }\n\n  chooseRegionOption() {\n    this.regionOption = true;\n    this.cityOption = false;\n  }\n\n  constraintMaxNumberDays() {\n    if (this.value > this.max) {\n      this.value = this.max;\n    }\n  }\n\n}\n\nLocationsFormComponent.ɵfac = function LocationsFormComponent_Factory(t) {\n  return new (t || LocationsFormComponent)(i0.ɵɵdirectiveInject(i1.CityService), i0.ɵɵdirectiveInject(i2.RegionService), i0.ɵɵdirectiveInject(i3.CompanionService), i0.ɵɵdirectiveInject(i4.CategoryService), i0.ɵɵdirectiveInject(i5.LocationService));\n};\n\nLocationsFormComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n  type: LocationsFormComponent,\n  selectors: [[\"app-locations-form\"]],\n  decls: 39,\n  vars: 11,\n  consts: [[\"href\", \"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\", \"rel\", \"stylesheet\", \"integrity\", \"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\", \"crossorigin\", \"anonymous\"], [1, \"example-form\"], [1, \"form-group\"], [1, \"btn\", 3, \"click\"], [4, \"ngIf\"], [\"appearance\", \"fill\", 1, \"example-full-width\"], [\"type\", \"text\", \"placeholder\", \"Pick one\", \"aria-label\", \"Number\", \"matInput\", \"\", 3, \"formControl\", \"matAutocomplete\"], [\"autoActiveFirstOption\", \"\"], [\"auto\", \"matAutocomplete\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"placeholder\", \"Please select a companion\", 3, \"ngModel\", \"ngModelChange\"], [\"matInput\", \"\", \"placeholder\", \"No. Days\", \"type\", \"number\", \"min\", \"1\", \"value\", \"0\", \"max\", \"30\", 3, \"constraintMaxNumberDays()\", \"ngModel\", \"ngModelChange\"], [\"selectable\", \"\", \"multiple\", \"\"], [\"selected\", \"\", 3, \"click\", 4, \"ngFor\", \"ngForOf\"], [\"mat-raised-button\", \"\", \"color\", \"primary\", 3, \"click\"], [\"placeholder\", \"Select city\", 3, \"ngModel\", \"ngModelChange\"], [3, \"value\"], [\"placeholder\", \"Select region\", 3, \"ngModel\", \"ngModelChange\"], [\"selected\", \"\", 3, \"click\"], [\"c\", \"matChip\"]],\n  template: function LocationsFormComponent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelement(0, \"link\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵelementStart(2, \"div\", 2);\n      i0.ɵɵelementStart(3, \"button\", 3);\n      i0.ɵɵlistener(\"click\", function LocationsFormComponent_Template_button_click_3_listener() {\n        return ctx.chooseCityOption();\n      });\n      i0.ɵɵtext(4, \" City \");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(5, \"button\", 3);\n      i0.ɵɵlistener(\"click\", function LocationsFormComponent_Template_button_click_5_listener() {\n        return ctx.chooseRegionOption();\n      });\n      i0.ɵɵtext(6, \" Region \");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(7, \"br\");\n      i0.ɵɵelement(8, \"br\");\n      i0.ɵɵtemplate(9, LocationsFormComponent_div_9_Template, 9, 2, \"div\", 4);\n      i0.ɵɵelementStart(10, \"mat-form-field\", 5);\n      i0.ɵɵelementStart(11, \"mat-label\");\n      i0.ɵɵtext(12, \"Number\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(13, \"input\", 6);\n      i0.ɵɵelementStart(14, \"mat-autocomplete\", 7, 8);\n      i0.ɵɵtemplate(16, LocationsFormComponent_mat_option_16_Template, 2, 2, \"mat-option\", 9);\n      i0.ɵɵpipe(17, \"async\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(18, LocationsFormComponent_div_18_Template, 9, 2, \"div\", 4);\n      i0.ɵɵelementStart(19, \"h5\");\n      i0.ɵɵtext(20, \"Who are you travelling with? \");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(21, \"mat-form-field\", 5);\n      i0.ɵɵelementStart(22, \"mat-label\");\n      i0.ɵɵtext(23, \"Please select a companion\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(24, \"mat-select\", 10);\n      i0.ɵɵlistener(\"ngModelChange\", function LocationsFormComponent_Template_mat_select_ngModelChange_24_listener($event) {\n        return ctx.companionId = $event;\n      });\n      i0.ɵɵtemplate(25, LocationsFormComponent_mat_option_25_Template, 2, 2, \"mat-option\", 9);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(26, \"h5\");\n      i0.ɵɵtext(27, \"How many days are you willing to stay ?\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(28, \"mat-form-field\", 5);\n      i0.ɵɵelementStart(29, \"mat-label\");\n      i0.ɵɵtext(30, \"Please select a number of days\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(31, \"input\", 11);\n      i0.ɵɵlistener(\"ngModelChange\", function LocationsFormComponent_Template_input_ngModelChange_31_listener($event) {\n        return ctx.lengthOfStay = $event;\n      });\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(32, \"h5\");\n      i0.ɵɵtext(33, \"What are your priorities to visit?\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(34, \"mat-chip-list\", 12);\n      i0.ɵɵtemplate(35, LocationsFormComponent_mat_chip_35_Template, 4, 2, \"mat-chip\", 13);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(36, \"br\");\n      i0.ɵɵelementStart(37, \"button\", 14);\n      i0.ɵɵlistener(\"click\", function LocationsFormComponent_Template_button_click_37_listener() {\n        return ctx.createMyPlanner();\n      });\n      i0.ɵɵtext(38, \"Create my planner\");\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      const _r1 = i0.ɵɵreference(15);\n\n      i0.ɵɵadvance(9);\n      i0.ɵɵproperty(\"ngIf\", ctx.cityOption);\n      i0.ɵɵadvance(4);\n      i0.ɵɵproperty(\"formControl\", ctx.myControl)(\"matAutocomplete\", _r1);\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngForOf\", i0.ɵɵpipeBind1(17, 9, ctx.filteredOptions));\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.regionOption);\n      i0.ɵɵadvance(6);\n      i0.ɵɵproperty(\"ngModel\", ctx.companionId);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", ctx.companions);\n      i0.ɵɵadvance(6);\n      i0.ɵɵproperty(\"ngModel\", ctx.lengthOfStay);\n      i0.ɵɵadvance(4);\n      i0.ɵɵproperty(\"ngForOf\", ctx.categories);\n    }\n  },\n  directives: [i6.NgIf, i7.MatFormField, i7.MatLabel, i8.MatInput, i9.DefaultValueAccessor, i10.MatAutocompleteTrigger, i9.NgControlStatus, i9.FormControlDirective, i10.MatAutocomplete, i6.NgForOf, i11.MatSelect, i9.NgModel, i9.MinValidator, i9.MaxValidator, i9.NumberValueAccessor, i12.MatChipList, i13.MatButton, i14.MatOption, i12.MatChip, i15.MatIcon],\n  pipes: [i6.AsyncPipe],\n  styles: [\".example-form[_ngcontent-%COMP%] {\\r\\n  min-width: 150px;\\r\\n  max-width: 380px;\\r\\n  width: 100%;\\r\\n}\\r\\n\\r\\n.example-full-width[_ngcontent-%COMP%] {\\r\\n  width: 100%;\\r\\n}\\r\\n\\r\\nmat-icon[_ngcontent-%COMP%] {\\r\\n  height: 20px;\\r\\n  width: 20px;\\r\\n  font-size: 20px;\\r\\n  margin-right: 5px;\\r\\n}\\r\\n\\r\\nbutton[_ngcontent-%COMP%]{\\r\\n  float: right;\\r\\n}\\r\\n\\r\\n.colorClass[_ngcontent-%COMP%]{\\r\\n  color:yellow;\\r\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2F0aW9ucy1mb3JtLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLFdBQVc7QUFDYjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUFFQTtFQUNFLFlBQVk7RUFDWixXQUFXO0VBQ1gsZUFBZTtFQUNmLGlCQUFpQjtBQUNuQjs7QUFDQTtFQUNFLFlBQVk7QUFDZDs7QUFFQTtFQUNFLFlBQVk7QUFDZCIsImZpbGUiOiJsb2NhdGlvbnMtZm9ybS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmV4YW1wbGUtZm9ybSB7XHJcbiAgbWluLXdpZHRoOiAxNTBweDtcclxuICBtYXgtd2lkdGg6IDM4MHB4O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uZXhhbXBsZS1mdWxsLXdpZHRoIHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxubWF0LWljb24ge1xyXG4gIGhlaWdodDogMjBweDtcclxuICB3aWR0aDogMjBweDtcclxuICBmb250LXNpemU6IDIwcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuYnV0dG9ue1xyXG4gIGZsb2F0OiByaWdodDtcclxufVxyXG5cclxuLmNvbG9yQ2xhc3N7XHJcbiAgY29sb3I6eWVsbG93O1xyXG59Il19 */\"]\n});","map":{"version":3,"sources":["C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front\\src\\app\\locations-form\\locations-form.component.ts","C:\\Users\\DELL\\Desktop\\bachelor-thesis\\trip-planner-front\\src\\app\\locations-form\\locations-form.component.html"],"names":[],"mappings":"AACA,SAAS,WAAT,QAA4B,gBAA5B;AACA,SAAQ,GAAR,EAAa,SAAb,EAAwB,SAAxB,QAAwC,gBAAxC;AACA,SAAkB,UAAlB,QAAmC,MAAnC;;;;;;;;;;;;;;;;;;;;ACkCQ,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA;AAA6E,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAa,IAAA,EAAA,CAAA,YAAA;;;;;AAA9E,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAiB,OAAjB,EAAiB,OAAA,CAAA,EAAjB;AAAiE,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,IAAA,EAAA,EAAA;;;;;;;;AALnF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA;AACE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA;AAAO,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA;AAAI,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,sBAAA;AAAoB,IAAA,EAAA,CAAA,YAAA;AAAK,IAAA,EAAA,CAAA,YAAA;AACpC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA;AACE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA;AAAW,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,sBAAA;AAAoB,IAAA,EAAA,CAAA,YAAA;AAC/B,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA;AAAY,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,yEAAA,CAAA,MAAA,EAAA;AAAA,MAAA,EAAA,CAAA,aAAA,CAAA,GAAA;AAAA,YAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA;AAAA,aAAA,MAAA,CAAA,MAAA,GAAA,MAAA;AAAA,KAAA;AACV,IAAA,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA;AACF,IAAA,EAAA,CAAA,YAAA;AACF,IAAA,EAAA,CAAA,YAAA;AACF,IAAA,EAAA,CAAA,YAAA;;;;;AAJgB,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,MAAA;AACqC,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,MAAA;;;;;;AAcjD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA;AACE,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AACF,IAAA,EAAA,CAAA,YAAA;;;;;AAF2D,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA;AACzD,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,UAAA,EAAA,GAAA;;;;;;AAUA,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA;AAAoF,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAe,IAAA,EAAA,CAAA,YAAA;;;;;AAAvF,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAmB,OAAnB,EAAmB,UAAA,CAAA,EAAnB;AAAwE,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,UAAA,CAAA,IAAA,EAAA,EAAA;;;;;;;;AAL1F,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA;AACE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA;AAAO,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA;AAAI,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,wBAAA;AAAsB,IAAA,EAAA,CAAA,YAAA;AAAK,IAAA,EAAA,CAAA,YAAA;AACtC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA;AACE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA;AAAW,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,wBAAA;AAAsB,IAAA,EAAA,CAAA,YAAA;AACjC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA;AAAY,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,0EAAA,CAAA,MAAA,EAAA;AAAA,MAAA,EAAA,CAAA,aAAA,CAAA,IAAA;AAAA,YAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA;AAAA,aAAA,OAAA,CAAA,QAAA,GAAA,MAAA;AAAA,KAAA;AACV,IAAA,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA;AACF,IAAA,EAAA,CAAA,YAAA;AACF,IAAA,EAAA,CAAA,YAAA;AACF,IAAA,EAAA,CAAA,YAAA;;;;;AAJgB,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA;AACyC,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA;;;;;;AASrD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA;AAAwE,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAkB,IAAA,EAAA,CAAA,YAAA;;;;;AAA9E,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA;AAA4D,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,IAAA;;;;;;AAc5E,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA;AAA+B,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA;AAAK,IAAA,EAAA,CAAA,YAAA;;;;;;;;AAFlC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,EAAA,EAAA;AACA,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qEAAA,GAAA;AAAA,YAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA;AAAA,YAAA,YAAA,GAAA,WAAA,CAAA,SAAA;;AAAA,YAAA,IAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA;;AAAA,YAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA;AAAA,aAAA,OAAA,CAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA,KAAA;AACF,IAAA,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA;AACA,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AACA,IAAA,EAAA,CAAA,YAAA;;;;;;;;AAFW,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,QAAA;AACX,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,YAAA,CAAA,IAAA,EAAA,GAAA;;;;AD/DF,OAAM,MAAO,sBAAP,CAA6B;AAqBjC,EAAA,WAAA,CAAoB,WAApB,EAAuD,aAAvD,EACoB,gBADpB,EACiE,eADjE,EAEoB,eAFpB,EAEoD;AAFhC,SAAA,WAAA,GAAA,WAAA;AAAmC,SAAA,aAAA,GAAA,aAAA;AACnC,SAAA,gBAAA,GAAA,gBAAA;AAA6C,SAAA,eAAA,GAAA,eAAA;AAC7C,SAAA,eAAA,GAAA,eAAA;AArBpB,SAAA,SAAA,GAAY,IAAI,WAAJ,EAAZ;AAMA,SAAA,aAAA,GAAgB,IAAI,WAAJ,CAAgB,KAAhB,CAAhB;AAQA,SAAA,UAAA,GAAsB,KAAtB;AACA,SAAA,YAAA,GAAwB,KAAxB;AAOE,SAAK,eAAL,GAAuB,IAAI,UAAJ,EAAvB;AACA,SAAK,MAAL,GAAc,EAAd;AACA,SAAK,OAAL,GAAe,EAAf;AACA,SAAK,UAAL,GAAkB,EAAlB;AACA,SAAK,UAAL,GAAkB,EAAlB;AACA,SAAK,aAAL,GAAqB,EAArB;AACA,SAAK,UAAL,GAAkB,CAAlB;AACA,SAAK,WAAL,GAAmB,CAAnB;AACA,SAAK,YAAL,GAAoB,CAApB;AACA,SAAK,WAAL,GAAmB,EAAnB;AACA,SAAK,QAAL,GAAgB,CAAhB;AACA,SAAK,MAAL,GAAc,CAAd;AACA,SAAK,KAAL,GAAa,CAAb;AACA,SAAK,GAAL,GAAW,EAAX;AACD;;AAED,EAAA,QAAQ,GAAA;AACN,SAAK,eAAL,GAAuB,KAAK,SAAL,CAAe,YAAf,CACtB,IADsB,CAErB,SAAS,CAAC,EAAD,CAFY,EAGrB,SAAS,CAAC,GAAG,IAAG;AACd,aAAO,KAAK,MAAL,CAAY,GAAG,IAAI,EAAnB,CAAP;AACD,KAFQ,CAHY,CAAvB;AAQA,SAAK,WAAL,CAAiB,YAAjB,GAAgC,SAAhC,CACE,IAAI,IAAG;AACL,WAAK,MAAL,GAAc,IAAd;AACD,KAHH;AAMA,SAAK,aAAL,CAAmB,aAAnB,GAAmC,SAAnC,CACE,IAAI,IAAG;AACL,WAAK,OAAL,GAAe,IAAf;AACD,KAHH;AAMA,SAAK,eAAL,CAAqB,gBAArB,GAAwC,SAAxC,CACE,IAAI,IAAG;AACL,WAAK,UAAL,GAAkB,IAAlB;AACD,KAHH;AAMA,SAAK,gBAAL,CAAsB,gBAAtB,GAAyC,SAAzC,CACE,IAAI,IAAG;AACL,WAAK,UAAL,GAAkB,IAAlB;AACD,KAHH;AAKD;;AAED,EAAA,MAAM,CAAC,GAAD,EAAY;AAClB;AACE,WAAO,KAAK,WAAL,CAAiB,YAAjB,GACN,IADM,CAEP,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAT,CAAgB,MAAM,IAAG;AACvC,aAAO,MAAM,CAAC,IAAP,CAAY,WAAZ,GAA0B,OAA1B,CAAkC,GAAG,CAAC,WAAJ,EAAlC,MAAyD,CAAhE;AACD,KAFe,CAAb,CAFI,CAAP;AAOF;;AAED,EAAA,eAAe,CAAC,IAAD,EAAgB,QAAhB,EAAkC;AAChD,IAAA,IAAI,CAAC,cAAL;;AACA,QAAG,KAAK,aAAL,CAAmB,MAAnB,GAA4B,CAA/B,EAAiC;AAC/B,UAAG,KAAK,aAAL,CAAmB,OAAnB,CAA2B,QAAQ,CAAC,EAApC,KAA2C,CAAC,CAA/C,EAAiD;AAC/C,aAAK,aAAL,CAAmB,IAAnB,CAAwB,QAAQ,CAAC,EAAjC;AACD,OAFD,MAEK;AACH,cAAM,KAAK,GAAG,KAAK,aAAL,CAAmB,OAAnB,CAA2B,QAAQ,CAAC,EAApC,CAAd;AACA,aAAK,aAAL,CAAmB,MAAnB,CAA0B,KAA1B,EAAiC,CAAjC;AACD;AACF,KAPD,MAOK;AACH,WAAK,aAAL,CAAmB,IAAnB,CAAwB,QAAQ,CAAC,EAAjC;AACD;;AACD,IAAA,OAAO,CAAC,GAAR,CAAY,KAAK,aAAjB;AACA;;AAGD,EAAA,eAAe,GAAA;AACb,SAAK,WAAL,GAAmB,KAAK,aAAL,CAAmB,IAAnB,CAAwB,GAAxB,CAAnB;AACA,IAAA,OAAO,CAAC,GAAR,CAAY,KAAK,WAAjB;;AAEA,QAAG,KAAK,UAAR,EAAmB;AAClB,WAAK,eAAL,CAAqB,oBAArB,CAA0C,KAAK,MAA/C,EAAuD,KAAK,WAA5D,EAAyE,KAAK,YAA9E,EAA4F,KAAK,WAAjG,EAA8G,SAA9G,CACE,MAAM,IAAG;AACP,QAAA,OAAO,CAAC,GAAR,CAAY,MAAZ;AACD,OAHH;AAKA,KAND,MAMM,IAAG,KAAK,YAAR,EAAqB;AAE1B,WAAK,eAAL,CAAqB,sBAArB,CAA4C,KAAK,QAAjD,EAA2D,KAAK,WAAhE,EAA6E,KAAK,YAAlF,EAAgG,KAAK,WAArG,EAAkH,SAAlH,CACE,MAAM,IAAG;AACP,QAAA,OAAO,CAAC,GAAR,CAAY,MAAZ;AACD,OAHH;AAKA;AAGF;;AACD,EAAA,gBAAgB,GAAA;AACd,SAAK,UAAL,GAAkB,IAAlB;AACA,SAAK,YAAL,GAAoB,KAApB;AACD;;AACA,EAAA,kBAAkB,GAAA;AAChB,SAAK,YAAL,GAAoB,IAApB;AACA,SAAK,UAAL,GAAkB,KAAlB;AACD;;AAED,EAAA,uBAAuB,GAAA;AACpB,QAAG,KAAK,KAAL,GAAa,KAAK,GAArB,EAAyB;AACvB,WAAK,KAAL,GAAa,KAAK,GAAlB;AACD;AACH;;AAvIgC;;;mBAAtB,sB,EAAsB,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,C,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,aAAA,C,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,C,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,eAAA,C,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,eAAA,C;AAAA,C;;;QAAtB,sB;AAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,C;AAAA,EAAA,KAAA,EAAA,E;AAAA,EAAA,IAAA,EAAA,E;AAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,yEAAA,EAAA,KAAA,EAAA,YAAA,EAAA,WAAA,EAAA,yEAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,aAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,GAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,CAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,CAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,GAAA,EAAA,SAAA,CAAA,C;AAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA;AAAA,QAAA,EAAA,GAAA,CAAA,EAAA;ACvBnC,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA;AAEA,MAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA;AAEE,MAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA;AACE,MAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA;AAAoB,MAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA;AAAA,eAAS,GAAA,CAAA,gBAAA,EAAT;AAA2B,OAA3B;AAClB,MAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,QAAA;AACF,MAAA,EAAA,CAAA,YAAA;AACA,MAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA;AAAoB,MAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA;AAAA,eAAS,GAAA,CAAA,kBAAA,EAAT;AAA6B,OAA7B;AAClB,MAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,UAAA;AACF,MAAA,EAAA,CAAA,YAAA;AACF,MAAA,EAAA,CAAA,YAAA;AACA,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA;AACA,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA;AAmBA,MAAA,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA;AAUA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,CAAA;AACE,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,WAAA;AAAW,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA;AAAM,MAAA,EAAA,CAAA,YAAA;AACjB,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA;AAMA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA;AACE,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA;;AAGF,MAAA,EAAA,CAAA,YAAA;AACF,MAAA,EAAA,CAAA,YAAA;AAEA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA;AAUA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA;AAAI,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,+BAAA;AAA8B,MAAA,EAAA,CAAA,YAAA;AAClC,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,CAAA;AACE,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,WAAA;AAAW,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,2BAAA;AAAyB,MAAA,EAAA,CAAA,YAAA;AACpC,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,YAAA,EAAA,EAAA;AAAY,MAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA;AAAA,eAAA,GAAA,CAAA,WAAA,GAAA,MAAA;AAAA,OAAA;AACV,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA;AACF,MAAA,EAAA,CAAA,YAAA;AACF,MAAA,EAAA,CAAA,YAAA;AAEA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA;AAAI,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,yCAAA;AAAuC,MAAA,EAAA,CAAA,YAAA;AAC3C,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,CAAA;AACE,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,WAAA;AAAW,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gCAAA;AAA8B,MAAA,EAAA,CAAA,YAAA;AACzC,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA;AAA6G,MAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA;AAAA,eAAA,GAAA,CAAA,YAAA,GAAA,MAAA;AAAA,OAAA;AAA7G,MAAA,EAAA,CAAA,YAAA;AACF,MAAA,EAAA,CAAA,YAAA;AAEC,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA;AAAI,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,oCAAA;AAAkC,MAAA,EAAA,CAAA,YAAA;AACvC,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,eAAA,EAAA,EAAA;AACE,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA;AAKF,MAAA,EAAA,CAAA,YAAA;AACA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,IAAA;AACA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA;AAA0C,MAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wDAAA,GAAA;AAAA,eAAS,GAAA,CAAA,eAAA,EAAT;AAA0B,OAA1B;AAA4B,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,mBAAA;AAAiB,MAAA,EAAA,CAAA,YAAA;AAEzF,MAAA,EAAA,CAAA,YAAA;;;;;;AA5DQ,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA;AAgBG,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,GAAA,CAAA,SAAA,EAAyB,iBAAzB,EAAyB,GAAzB;AAG0B,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,CAAA,eAAA,CAAA;AAM7B,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA;AAaQ,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA;AAC+C,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,UAAA;AAOkD,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA;AAKxD,MAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AAAA,MAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,UAAA","sourcesContent":["import { Component, Injectable, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {map, startWith, switchMap} from 'rxjs/operators';\nimport {forkJoin, Observable} from 'rxjs';\nimport { CityService } from '../_services/city.service';\nimport { City } from '../_models/city';\nimport { Country } from '../_models/country';\nimport { CountryService } from '../_services/country.service';\nimport { Companion } from '../_models/companion';\nimport { CompanionService } from '../_services/companion.service';\nimport { Category } from '../_models/category';\nimport { CategoryService } from '../_services/cateogry.service';\nimport {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';\nimport { MatChip } from '@angular/material/chips';\nimport { LocationService } from '../_services/location.service';\nimport { Region } from '../_models/region';\nimport { RegionService } from '../_services/region.service';\n\n@Component({\n  selector: 'app-locations-form',\n  templateUrl: './locations-form.component.html',\n  styleUrls: ['./locations-form.component.css']\n})\nexport class LocationsFormComponent implements OnInit {\n\n  myControl = new FormControl();\n  cities: City[];\n  regions: Region[];\n  companions: Companion[];\n  categories: Category[];\n  filteredOptions: Observable<City[]>;\n  disableSelect = new FormControl(false);\n  chipsSeletion: number[];\n  categoryIds: string;\n  locationId: number;\n  regionId: number;\n  cityId: number;\n  companionId: number;\n  lengthOfStay: number;\n  cityOption: boolean = false;\n  regionOption: boolean = false;\n  value:number;\n  max: number;\n\n  constructor(private cityService : CityService, private regionService: RegionService,\n              private companionService : CompanionService, private categoryService : CategoryService,\n              private locationService: LocationService){\n    this.filteredOptions = new Observable<City[]>();\n    this.cities = [];\n    this.regions = [];\n    this.companions = [];\n    this.categories = [];\n    this.chipsSeletion = [];\n    this.locationId = 0;\n    this.companionId = 0;\n    this.lengthOfStay = 1;\n    this.categoryIds = '';\n    this.regionId = 0;\n    this.cityId = 0;\n    this.value = 0;\n    this.max = 30;\n  }\n  \n  ngOnInit() :void {\n    this.filteredOptions = this.myControl.valueChanges\n    .pipe(\n      startWith(''),\n      switchMap(val => {\n        return this.filter(val || '')\n      })       \n    );\n\n    this.cityService.getAllCities().subscribe(\n      data => {\n        this.cities = data;\n      }\n    );\n\n    this.regionService.getAllRegions().subscribe(\n      data => {\n        this.regions = data;\n      }\n    );\n\n    this.categoryService.getAllCategories().subscribe(\n      data => {\n        this.categories = data;\n      }\n    );\n\n    this.companionService.getAllCompanions().subscribe(\n      data => {\n        this.companions = data;\n      }\n    )\n  }\n  \n  filter(val: string): Observable<City[]> {\n  // call the service which makes the http-request\n    return this.cityService.getAllCities()\n    .pipe(\n    map(response => response.filter(option => { \n      return option.name.toLowerCase().indexOf(val.toLowerCase()) === 0\n    }))\n  )\n  \n }  \n\n toggleSelection(chip: MatChip, category: Category){\n  chip.toggleSelected();\n  if(this.chipsSeletion.length > 0){\n    if(this.chipsSeletion.indexOf(category.id) <= -1){\n      this.chipsSeletion.push(category.id);\n    }else{\n      const index = this.chipsSeletion.indexOf(category.id);\n      this.chipsSeletion.splice(index, 1);\n    }\n  }else{\n    this.chipsSeletion.push(category.id);\n  }\n  console.log(this.chipsSeletion);\n }\n\n\n createMyPlanner(){\n   this.categoryIds = this.chipsSeletion.join(',');\n   console.log(this.categoryIds);\n   \n   if(this.cityOption){\n    this.locationService.getLocationsFromCity(this.cityId, this.companionId, this.lengthOfStay, this.categoryIds).subscribe(\n      result => {\n        console.log(result);\n      }\n    );\n   }else if(this.regionOption){\n \n    this.locationService.getLocationsFromRegion(this.regionId, this.companionId, this.lengthOfStay, this.categoryIds).subscribe(\n      result => {\n        console.log(result);\n      }\n    );\n   }\n   \n  \n }\n chooseCityOption(){\n   this.cityOption = true;\n   this.regionOption = false;\n }\n  chooseRegionOption() {\n    this.regionOption = true;\n    this.cityOption = false;\n  }\n\n  constraintMaxNumberDays(){\n     if(this.value > this.max){\n       this.value = this.max;\n     }\n  }\n}\n","<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x\" crossorigin=\"anonymous\">\n\n<div class=\"example-form\">\n\n  <div class=\"form-group\">\n    <button class=\"btn\" (click)=\"chooseCityOption()\" >\n      City\n    </button>\n    <button class=\"btn\" (click)=\"chooseRegionOption()\">\n      Region\n    </button>\n  </div>\n  <br>\n  <br>\n  <!--\n  <mat-form-field class=\"example-full-width\" appearance=\"fill\">\n    <mat-label>Please select a place</mat-label>\n    <input type=\"text\"\n           placeholder=\"Pick one\"\n           aria-label=\"Place\"\n           matInput\n           [formControl]=\"myControl\"\n           [matAutocomplete]=\"auto\">\n    <mat-autocomplete autoActiveFirstOption  #auto=\"matAutocomplete\">\n      <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.name\">\n        {{option.name}}\n      </mat-option>\n    </mat-autocomplete>\n  </mat-form-field>\n  -->\n\n\n  <div *ngIf=\"cityOption\">\n    <label><h5>Please select a city</h5></label>\n    <mat-form-field appearance=\"fill\" class=\"example-full-width\">\n      <mat-label>Please select a city</mat-label>\n      <mat-select [(ngModel)]=\"cityId\" placeholder=\"Select city\">\n        <mat-option [value]=\"city.id\" *ngFor=\"let city of cities\" [value]=\"city.id\"> {{city.name}}</mat-option>\n      </mat-select>\n    </mat-form-field>\n  </div>\n\n  <mat-form-field class=\"example-full-width\" appearance=\"fill\">\n    <mat-label>Number</mat-label>\n    <input type=\"text\"\n           placeholder=\"Pick one\"\n           aria-label=\"Number\"\n           matInput\n           [formControl]=\"myControl\"\n           [matAutocomplete]=\"auto\">\n    <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n      <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\n        {{option}}\n      </mat-option>\n    </mat-autocomplete>\n  </mat-form-field>\n\n  <div *ngIf=\"regionOption\">\n    <label><h5>Please select a region</h5></label>\n    <mat-form-field appearance=\"fill\" class=\"example-full-width\">\n      <mat-label>Please select a region</mat-label>\n      <mat-select [(ngModel)]=\"regionId\" placeholder=\"Select region\">\n        <mat-option [value]=\"region.id\" *ngFor=\"let region of regions\" [value]=\"region.id\"> {{region.name}}</mat-option>\n      </mat-select>\n    </mat-form-field>\n  </div>\n\n  <h5>Who are you travelling with?  </h5>\n  <mat-form-field appearance=\"fill\" class=\"example-full-width\">\n    <mat-label>Please select a companion</mat-label>\n    <mat-select [(ngModel)]=\"companionId\" placeholder=\"Please select a companion\">\n      <mat-option [value]=\"companion.id\" *ngFor=\"let companion of companions\">{{companion.type}}</mat-option>\n    </mat-select>\n  </mat-form-field>\n\n  <h5>How many days are you willing to stay ?</h5>\n  <mat-form-field class=\"example-full-width\" appearance=\"fill\">\n    <mat-label>Please select a number of days</mat-label>\n    <input matInput placeholder=\"No. Days\"  type=\"number\" min=\"1\" value=\"0\" max=\"30\" [constraintMaxNumberDays()] [(ngModel)]=\"lengthOfStay\">\n  </mat-form-field>\n\n   <h5>What are your priorities to visit?</h5> \n  <mat-chip-list  selectable multiple>\n    <mat-chip #c=\"matChip\" selected *ngFor=\"let category of categories\" \n    (click)=\"toggleSelection(c, category)\">\n  <mat-icon *ngIf=\"!c.selected\" >check</mat-icon>\n  {{category.name}}\n  </mat-chip>\n  </mat-chip-list>\n  <br>\n  <button mat-raised-button color=\"primary\" (click)=\"createMyPlanner()\">Create my planner</button>\n\n</div>\n  "],"sourceRoot":""},"metadata":{},"sourceType":"module"}
