barsa-sap-ui 2.2.32 → 2.2.34

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.
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { FieldBaseComponent, BarsaApi } from 'barsa-novin-ray-core';
2
+ import { FieldBaseComponent } from 'barsa-novin-ray-core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@fundamental-ngx/core/button";
5
5
  import * as i2 from "@fundamental-ngx/core/form";
@@ -8,7 +8,7 @@ export class CaptchaFieldComponent extends FieldBaseComponent {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.now = new Date().toString();
11
- this.capId = BarsaApi.LoginFormData.CaptchaId;
11
+ this.capId = '-';
12
12
  }
13
13
  onValueChange(e) {
14
14
  this.value = e.target.value;
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25
25
  type: Component,
26
26
  args: [{ selector: 'bsu-captcha-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<input\r\n fd-form-control\r\n [placeholder]=\"Setting.NullText || ''\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n type=\"text\"\r\n [value]=\"!value ? '' : value\"\r\n [id]=\"id\"\r\n (input)=\"onValueChange($event)\"\r\n/>\r\n<div id=\"captchaCommand\">\r\n <img [src]=\"'/api/auth/captcha?capId=' + capId + '&t=' + now\" />\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"'refresh'\"\r\n aria-label=\"refresh\"\r\n title=\"captcha\"\r\n (click)=\"onRefresh()\"\r\n ></button>\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;gap:.2rem}#captchaCommand{flex-grow:1;display:flex;width:100%;align-items:center;justify-content:start}img{flex-grow:1;max-width:170px;height:40px;width:auto}input{font-size:1rem}@media (max-width: 599px){img{max-width:140px}}\n"] }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGNoYS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9jYXB0Y2hhLWZpZWxkL2NhcHRjaGEtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvY2FwdGNoYS1maWVsZC9jYXB0Y2hhLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQVNwRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQWtCO0lBUDdEOztRQVFJLFFBQUcsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLFVBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztLQVM1QztJQVJHLGFBQWEsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFNBQVM7UUFDTCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQVZRLHFCQUFxQjttR0FBckIscUJBQXFCLGdGQ1hsQyw4cUJBcUJBOzs0RkRWYSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEZpZWxkQmFzZUNvbXBvbmVudCwgQmFyc2FBcGkgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWNhcHRjaGEtZmllbGQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhcHRjaGEtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FwdGNoYS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FwdGNoYUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IHtcclxuICAgIG5vdzogc3RyaW5nID0gbmV3IERhdGUoKS50b1N0cmluZygpO1xyXG4gICAgY2FwSWQgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkNhcHRjaGFJZDtcclxuICAgIG9uVmFsdWVDaGFuZ2UoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBvblJlZnJlc2goKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ub3cgPSBuZXcgRGF0ZSgpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxufVxyXG4iLCI8aW5wdXRcclxuICAgIGZkLWZvcm0tY29udHJvbFxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIlNldHRpbmcuTnVsbFRleHQgfHwgJydcIlxyXG4gICAgW2F0dHIucmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgIFthdHRyLmRpc2FibGVkXT1cIihkaXNhYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsXCJcclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIFt2YWx1ZV09XCIhdmFsdWUgPyAnJyA6IHZhbHVlXCJcclxuICAgIFtpZF09XCJpZFwiXHJcbiAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuLz5cclxuPGRpdiBpZD1cImNhcHRjaGFDb21tYW5kXCI+XHJcbiAgICA8aW1nIFtzcmNdPVwiJy9hcGkvYXV0aC9jYXB0Y2hhP2NhcElkPScgKyBjYXBJZCArICcmdD0nICsgbm93XCIgLz5cclxuICAgIDxidXR0b25cclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgIFtnbHlwaF09XCIncmVmcmVzaCdcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZyZXNoXCJcclxuICAgICAgICB0aXRsZT1cImNhcHRjaGFcIlxyXG4gICAgICAgIChjbGljayk9XCJvblJlZnJlc2goKVwiXHJcbiAgICA+PC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGNoYS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9jYXB0Y2hhLWZpZWxkL2NhcHRjaGEtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvY2FwdGNoYS1maWVsZC9jYXB0Y2hhLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBUzFELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFBa0I7SUFQN0Q7O1FBUUksUUFBRyxHQUFXLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEMsVUFBSyxHQUFHLEdBQUcsQ0FBQztLQVNmO0lBUkcsYUFBYSxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsU0FBUztRQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBVlEscUJBQXFCO21HQUFyQixxQkFBcUIsZ0ZDWGxDLDhxQkFxQkE7OzRGRFZhLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRmllbGRCYXNlQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS1jYXB0Y2hhLWZpZWxkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXB0Y2hhLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NhcHRjaGEtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcHRjaGFGaWVsZENvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZUNvbXBvbmVudCB7XHJcbiAgICBub3c6IHN0cmluZyA9IG5ldyBEYXRlKCkudG9TdHJpbmcoKTtcclxuICAgIGNhcElkID0gJy0nO1xyXG4gICAgb25WYWx1ZUNoYW5nZShlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICAgIG9uUmVmcmVzaCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5vdyA9IG5ldyBEYXRlKCkudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxpbnB1dFxyXG4gICAgZmQtZm9ybS1jb250cm9sXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiU2V0dGluZy5OdWxsVGV4dCB8fCAnJ1wiXHJcbiAgICBbYXR0ci5yZWFkb25seV09XCIocmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxyXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwiKGRpc2FibGUkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxyXG4gICAgdHlwZT1cInRleHRcIlxyXG4gICAgW3ZhbHVlXT1cIiF2YWx1ZSA/ICcnIDogdmFsdWVcIlxyXG4gICAgW2lkXT1cImlkXCJcclxuICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4vPlxyXG48ZGl2IGlkPVwiY2FwdGNoYUNvbW1hbmRcIj5cclxuICAgIDxpbWcgW3NyY109XCInL2FwaS9hdXRoL2NhcHRjaGE/Y2FwSWQ9JyArIGNhcElkICsgJyZ0PScgKyBub3dcIiAvPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgW2dseXBoXT1cIidyZWZyZXNoJ1wiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnJlc2hcIlxyXG4gICAgICAgIHRpdGxlPVwiY2FwdGNoYVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uUmVmcmVzaCgpXCJcclxuICAgID48L2J1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -99,6 +99,9 @@ export class FormDialogComponent extends BaseComponent {
99
99
  if (viewHieght) {
100
100
  height = smallDevice ? '100%' : `${viewHieght + 100}px`;
101
101
  }
102
+ if (viewWidth) {
103
+ width = smallDevice ? '100%' : `${viewWidth}px`;
104
+ }
102
105
  const modalSetting = BarsaApi.Common.Util.TryGetValue(this.formPanelCtrlr, 'Setting.View.CustomUi.Parameters.ModalSetting', null);
103
106
  let setting = {
104
107
  escKeyCloseable: false,
@@ -168,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
168
171
  type: ViewChild,
169
172
  args: ['dialog', { read: TemplateRef, static: true }]
170
173
  }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBd0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQ0gsUUFBUSxFQUlSLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBVzlCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBdUNsRCxZQUNZLGNBQTZCLEVBQzdCLFlBQTBCLEVBQzFCLGNBQTZCO1FBRXJDLEtBQUssRUFBRSxDQUFDO1FBSkEsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFyQ3pDLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBWW5CLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUtuQixjQUFTLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFTeEIsYUFBUSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLDJCQUFzQixHQUFRLElBQUksQ0FBQztR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akIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbmZpZywgRGlhbG9nUmVmLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgRGlhbG9nUGFyYW1zLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBDb250YWluZXJTZXJ2aWNlLFxyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIEZvcm1CYXNlQ29tcG9uZW50LFxyXG4gICAgaXNGaXJlZm94LFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtZm9ybS1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb250YWluZXJTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1EaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgZGlhbG9nVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xyXG4gICAgZm9ybUNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEZvcm1Db21wb25lbnQ+O1xyXG4gICAgY2FwdGlvbiA9ICcnO1xyXG4gICAgZnVsbHNjcmVlbiA9IGZhbHNlO1xyXG4gICAgZGlhbG9nT3BlbmVkOiBib29sZWFuO1xyXG4gICAgZGlhbG9nUmVmOiBEaWFsb2dSZWY7XHJcbiAgICBpbkRpYWxvZzogYW55O1xyXG4gICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9JZDogc3RyaW5nO1xyXG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nO1xyXG4gICAgICAgIHJlcG9ydElkOiBzdHJpbmc7XHJcbiAgICAgICAgaW5EaWFsb2c6IGJvb2xlYW47XHJcbiAgICB9O1xyXG4gICAgcGFyZW50Q29udGFpbmVyOiBhbnk7XHJcbiAgICBkZXZpY2VTaXplOiBzdHJpbmc7XHJcbiAgICBpc05vbmVQZXJzaXN0YW5jZSA9IGZhbHNlO1xyXG4gICAgc2hvd1NhdmVCdXR0b24gPSB0cnVlO1xyXG4gICAgc2hvd1Rvb2xiYXIgPSB0cnVlO1xyXG4gICAgc2hvd0Zvb3RlcjogYm9vbGVhbjtcclxuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgICBjYW5Nb3ZlOiBib29sZWFuO1xyXG4gICAgY2FuUmVzaXplOiBib29sZWFuO1xyXG4gICAgaXNGaXJlZm94ID0gaXNGaXJlZm94KCk7XHJcbiAgICBmdWxsc2NyZWVuRGVmYXVsdDogYm9vbGVhbjtcclxuICAgIGV4dGVuZFRvb2xiYXJJdGVtcyQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgd29ya2Zsb3dCdXR0b25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTwncnRsJyB8ICdsdHInPjtcclxuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBfZm9ybVVpQ29tcG9uZW50OiBGb3JtQmFzZUNvbXBvbmVudDtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICBpc1dvcmtmbG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgd29ya2Zsb3dCdXR0b25zT25Gb290ZXIgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkV29ya2Zsb3dCdXR0b246IGFueSA9IG51bGw7XHJcbiAgICBmb3JtVWk6IEZvcm1CYXNlQ29tcG9uZW50O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1BhcmFtczogRGlhbG9nUGFyYW1zLFxyXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJC5zdWJzY3JpYmUoKGRldmljZVNpemUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXZpY2VTaXplID0gZGV2aWNlU2l6ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsciA9IHRoaXMuZGlhbG9nUGFyYW1zLmNvbnRleHQuZm9ybXBhbmVsQ3RybHI7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnU2V0dGluZy5WaWV3LkN1c3RvbVVpLlBhcmFtZXRlcnMnLCBudWxsKTtcclxuICAgICAgICB0aGlzLnRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuSGVhZGVyTGF5b3V0LlRpdGxlJywgbnVsbCk7XHJcbiAgICAgICAgY29uc3QgbW9JZCA9IHRoaXMuZGlhbG9nUGFyYW1zLmNvbnRleHQuaWQ7XHJcbiAgICAgICAgY29uc3QgdHlwZURlZklkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC50eWlkO1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydElkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5yZXBpZDtcclxuICAgICAgICB0aGlzLmluRGlhbG9nID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5pbkRpYWxvZztcclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW4gPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LmZ1bGxzY3JlZW47XHJcbiAgICAgICAgdGhpcy5jYW5GdWxsc2NyZWVuID0gcGFyYW1ldGVycz8uQ2FuRnVsbHNjcmVlbjtcclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5EZWZhdWx0ID0gcGFyYW1ldGVycz8uRnVsbHNjcmVlbkRlZmF1bHQ7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnNPbkZvb3RlciA9IHBhcmFtZXRlcnM/LldvcmtmbG93QnV0dG9uc09uRm9vdGVyO1xyXG4gICAgICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5EZWZhdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuTW92ZSA9IHBhcmFtZXRlcnM/LkNhbk1vdmU7XHJcbiAgICAgICAgdGhpcy5jYW5SZXNpemUgPSBwYXJhbWV0ZXJzPy5DYW5SZXNpemU7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMgPSB7IG1vSWQsIHR5cGVEZWZJZCwgcmVwb3J0SWQsIGluRGlhbG9nOiB0cnVlIH07XHJcbiAgICAgICAgdGhpcy5fc2V0Q2FwdGlvbihmb3JtUGFuZWxDdHJscik7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGZvcm1QYW5lbEN0cmxyO1xyXG4gICAgfVxyXG4gICAgZ2V0IEFkYXB0ZXIoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJsci5BZGFwdGVyO1xyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSB0aGlzLmZvcm1QYW5lbEN0cmxyO1xyXG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd0Zvcm0gPSBmb3JtUGFuZWxDdHJscj8uU2V0dGluZz8uV29ya2Zsb3c7XHJcbiAgICAgICAgdGhpcy5zaG93U2F2ZUJ1dHRvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICBmb3JtUGFuZWxDdHJscixcclxuICAgICAgICAgICAgJ1NldHRpbmcuVmlldy5Gb3JtU2V0dGluZ3MuU2hvd1NhdmVCdXR0b24nXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNob3dUb29sYmFyID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuRm9ybVNldHRpbmdzLlNob3dUb29sYmFyJyk7XHJcbiAgICAgICAgdGhpcy5pc05vbmVQZXJzaXN0YW5jZSA9IGZvcm1QYW5lbEN0cmxyPy5TZXR0aW5nPy5WaWV3Py5Jc05vbmVQZXJzaXN0YW5jZTtcclxuICAgICAgICB0aGlzLnNob3dGb290ZXIgPSB0aGlzLmlzTm9uZVBlcnNpc3RhbmNlXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93U2F2ZUJ1dHRvbiAhPT0gZmFsc2UgJiYgdGhpcy5zaG93VG9vbGJhciAhPT0gZmFsc2VcclxuICAgICAgICAgICAgOiB0aGlzLnNob3dTYXZlQnV0dG9uO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaG93Rm9vdGVyID09IHR5cGVvZiBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvb3RlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xyXG4gICAgfVxyXG4gICAgb25Ub29sYmFyQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Zvcm1VaUNvbXBvbmVudC5vblRvb2xiYXJDbGljayhlKTtcclxuICAgIH1cclxuICAgIG9uV29ya2Zsb3dCdXR0b25TZWxlY3RlZDtcclxuICAgIG9uRm9ybVVpQ29tcG9uZW50UmVhZHkodWlDb21wb25lbnQ6IEZvcm1CYXNlQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZm9ybVVpQ29tcG9uZW50ID0gdWlDb21wb25lbnQ7XHJcbiAgICAgICAgdGhpcy5leHRlbmRUb29sYmFySXRlbXMkID0gdWlDb21wb25lbnQuZXh0ZW5kVG9vbGJhckl0ZW1zJDtcclxuICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9ucyQgPSB1aUNvbXBvbmVudC53b3JrZmxvd0J1dHRvbnMkO1xyXG4gICAgICAgIHRoaXMucnRsJCA9IHVpQ29tcG9uZW50LnJ0bCQ7XHJcbiAgICAgICAgdGhpcy5kaXJWYWx1ZSQgPSB1aUNvbXBvbmVudC5kaXJWYWx1ZSQ7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHVpQ29tcG9uZW50LmRldmljZVNpemUkO1xyXG4gICAgICAgIHRoaXMuZm9ybVVpID0gdWlDb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgICBvcGVuRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNtYWxsRGV2aWNlID0gdGhpcy5kZXZpY2VTaXplID09PSAncycgfHwgdGhpcy5kZXZpY2VTaXplID09PSAnbSc7XHJcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgICBsZXQgd2lkdGggPSBzbWFsbERldmljZSA/ICcxMDAlJyA6ICczMHZ3JztcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiAnYXV0byc7XHJcbiAgICAgICAgaWYgKHdpbmRvd1dpZHRoIDwgMTQ0MCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9ICc4MHN2dyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh3aW5kb3dXaWR0aCA8IDkwMCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9ICcxMDBzdncnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgdmlld1dpZHRoID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5mb3JtUGFuZWxDdHJsciwgJ1NldHRpbmcuVmlldy5NaW5TaXplLndpZHRoJywgbnVsbCk7XHJcbiAgICAgICAgY29uc3Qgdmlld0hpZWdodCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuTWluU2l6ZS5oZWlnaHQnLCBudWxsKTtcclxuICAgICAgICBjb25zdCBtaW5XaWR0aCA9IHNtYWxsRGV2aWNlID8gJzEwMCUnIDogdmlld1dpZHRoID8gdmlld1dpZHRoICsgJ3B4JyA6ICdhdXRvJztcclxuICAgICAgICBjb25zdCBtaW5IZWlnaHQgPSBzbWFsbERldmljZSA/ICcxMDAlJyA6IHZpZXdIaWVnaHQgPyB2aWV3SGllZ2h0ICsgJ3B4JyA6ICdhdXRvJztcclxuICAgICAgICBpZiAodmlld0hpZWdodCkge1xyXG4gICAgICAgICAgICBoZWlnaHQgPSBzbWFsbERldmljZSA/ICcxMDAlJyA6IGAke3ZpZXdIaWVnaHQgKyAxMDB9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2RhbFNldHRpbmcgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJscixcclxuICAgICAgICAgICAgJ1NldHRpbmcuVmlldy5DdXN0b21VaS5QYXJhbWV0ZXJzLk1vZGFsU2V0dGluZycsXHJcbiAgICAgICAgICAgIG51bGxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBsZXQgc2V0dGluZzogRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgYmFja2Ryb3BDbGlja0Nsb3NlYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1vYmlsZTogc21hbGxEZXZpY2UsXHJcbiAgICAgICAgICAgIHdpZHRoLFxyXG4gICAgICAgICAgICBoZWlnaHQsXHJcbiAgICAgICAgICAgIC8vIGJvZHlNaW5IZWlnaHQ6IG1pbkhlaWdodCxcclxuICAgICAgICAgICAgbWluSGVpZ2h0LFxyXG4gICAgICAgICAgICBtaW5XaWR0aCxcclxuICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRoaXMuY2FuTW92ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0aGlzLmNhblJlc2l6ZSxcclxuICAgICAgICAgICAgZGF0YTogeyBjYXB0aW9uOiB0aGlzLmNhcHRpb24sIGNhbkZ1bGxzY3JlZW46IHRoaXMuY2FuRnVsbHNjcmVlbiwgY2FuTW92ZTogdGhpcy5jYW5Nb3ZlIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChtb2RhbFNldHRpbmcpIHtcclxuICAgICAgICAgICAgc2V0dGluZyA9IHsgLi4uc2V0dGluZywgLi4ubW9kYWxTZXR0aW5nIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nVGVtcGxhdGVSZWYsIHNldHRpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLkFkYXB0ZXI7XHJcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnQ2FuY2VsJyB9KTtcclxuICAgICAgICB0aGlzLl9jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgb25TYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLkFkYXB0ZXI7XHJcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnU2F2ZUFuZENsb3NlJyB9KTtcclxuICAgIH1cclxuICAgIG9uT2soKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYWRhcHRlciA9IHRoaXMuQWRhcHRlcjtcclxuICAgICAgICBhZGFwdGVyLmZpcmVFdmVudCgnVG9vbENsaWNrJywgYWRhcHRlciwgeyBLZXk6ICdPaycgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb3JtQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1BhcmFtcy5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgLy8gQElucHV0KCkgU2hvd0Zvcm1QYW5lbENvbnRyb2wgPSAoZm9ybXBhbmVsQ3RybHIpID0+IHt9O1xyXG4gICAgLy8gLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIC8vIEBJbnB1dCgpIEZvcmNlQ2xvc2VDaGlsZCA9ICgpID0+IHt9O1xyXG4gICAgLy8gLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIC8vIEBJbnB1dCgpIFJlZnJlc2hGb3JtUGFuZWxDb250cm9sID0gKGZvcm1wYW5lbEN0cmxyKSA9PiB7fTtcclxuICAgIHByaXZhdGUgX2Nsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2UoKTtcclxuICAgICAgICBpZiAodGhpcy5BZGFwdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQWRhcHRlci5Db250cm9sLmZpcmVFdmVudCgnUmVxdWVzdEZvckNsb3NlJywgdGhpcy5BZGFwdGVyLkNvbnRyb2wsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZGlhbG9nUGFyYW1zLmNsb3NlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5kaWFsb2dPcGVuZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zZXRDYXB0aW9uKGZvcm1QYW5lbEN0cmxyOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0eXBlRGVmTmFtZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnTW8uJFR5cGVEZWZOYW1lJywgJycpO1xyXG4gICAgICAgIGNvbnN0IG1vQ2FwdGlvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnTW8uJENhcHRpb24nLCAnJyk7XHJcbiAgICAgICAgdGhpcy5jYXB0aW9uID0gdHlwZURlZk5hbWUgKyAnOicgKyBtb0NhcHRpb247XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2c+XHJcbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiAjZGlhbG9nVHBsUmVmPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgxIGZkLXRpdGxlIHN0eWxlPVwibWF4LXdpZHRoOiAxNXJlbVwiPnt7IHRpdGxlIHx8IGRpYWxvZ0NvbmZpZy5kYXRhLmNhcHRpb24gfX08L2gxPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1jZW50ZXIgc3R5bGU9XCJmbGV4OiAxXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgICAgICA8YnN1LWZvcm0tdG9vbGJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1iYXItcmlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZFRvb2xiYXJJdGVtcyRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOmZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJXb3JrZmxvd0luTW9iaWxlOiB3b3JrZmxvd0J1dHRvbnNPbkZvb3RlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlyVmFsdWVdPVwiKGRpclZhbHVlJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9vbGJhckNsaWNrKT1cIm9uVG9vbGJhckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZm9ybVRvb2xiYXJcclxuICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlhbG9nQ29uZmlnLmRhdGEuY2FuRnVsbHNjcmVlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cImZ1bGxzY3JlZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZnVsbHNjcmVlbiA/ICdleGl0ZnVsbHNjcmVlbicgOiAncmVzaXplJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5EaWFsb2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxvZ109XCJkaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnVsbHNjcmVlbl09XCJmdWxsc2NyZWVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW5DaGFuZ2VkKT1cImZ1bGxzY3JlZW4gPSAkZXZlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlhbG9nQ29tcG9uZW50XT1cImRpYWxvZ1RwbFJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgYXJpYUxhYmVsPVwiY2xvc2VcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgZmRrVGVtcGxhdGU9XCJzdWJoZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJleHRlbmRUb29sYmFySXRlbXMkIHwgYXN5bmMgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOmZhbHNlIGFzIHRvb2xiYXJJdGVtc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgY2xhc3M9XCIhdHctanVzdGlmeS1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJzdS1mb3JtLXRvb2xiYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvbnNdPVwidG9vbGJhckl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXJWYWx1ZV09XCIoZGlyVmFsdWUkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvb2xiYXJDbGljayk9XCJvblRvb2xiYXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb3JtVG9vbGJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxyXG5cclxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XHJcbiAgICAgICAgICAgIDxibnJjLWZvcm1cclxuICAgICAgICAgICAgICAgIFtmb3JtUGFuZWxDdHJsXT1cImZvcm1QYW5lbEN0cmxyXCJcclxuICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcclxuICAgICAgICAgICAgICAgIChmb3JtQ2xvc2UpPVwib25Gb3JtQ2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICAodWlDb21wb25lbnQpPVwib25Gb3JtVWlDb21wb25lbnRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvYm5yYy1mb3JtPlxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXIgW3N0eWxlLmRpc3BsYXldPVwiIXNob3dGb290ZXIgJiYgIWlzV29ya2Zsb3dGb3JtICYmICF3b3JrZmxvd0J1dHRvbnNPbkZvb3RlciA/ICdub25lJyA6IG51bGxcIj5cclxuICAgICAgICAgICAgQGlmIChpc01vYmlsZSB8fCB3b3JrZmxvd0J1dHRvbnNPbkZvb3RlciApIHsgQGlmKHdvcmtmbG93QnV0dG9ucyQgfCBhc3luYyA7YXMgd29ya2Zsb3dCdXR0b25zKXtcclxuICAgICAgICAgICAgPGJzdS1sYXlvdXQtYWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgW2NhblNlbmRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgW2J1dHRvbnNdPVwiW11cIlxyXG4gICAgICAgICAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgIFtsYW5kc2NhcGVdPVwiKGZvcm1VaT8ubGFuZHNjYXBlJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3RhbmRhbG9uZV09XCIoZm9ybVVpPy5zdGFuZGFsb25lJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zXT1cIndvcmtmbG93QnV0dG9uc1wiXHJcbiAgICAgICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zQ29tYm9Nb2RlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbcnRsXT1cIihydGwkIHwgYXN5bmMpID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICh0b29sQ2xpY2spPVwiZm9ybVVpPy5vblRvb2xiYXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICh3b3JrZmxvd0Nob2ljZVNlbGVjdCk9XCJmb3JtVWk/Lm9uV29ya2Zsb3dDaG9pY2VDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2JzdS1sYXlvdXQtYWN0aW9ucz5cclxuICAgICAgICAgICAgfSB9IEBmb3IgKGJ0biBvZiAoZXh0ZW5kVG9vbGJhckl0ZW1zJCB8IGFzeW5jIHwgdGxiQnV0dG9uczogJ2luRm9vdGVyJzp0cnVlKSA7IHRyYWNrIGJ0bi5JZCkgeyBAaWYgKCEoYnRuXHJcbiAgICAgICAgICAgID09PSAnLScgfHwgYnRuLnRleHQgPT09ICctJykgJiYgKChidG4uaXNCdWlsdGluICYmIGJ0bi5pbkZvb3RlcikgfHwgYnRuLmlzV29ya2Zsb3cpKSB7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYnRuLkRhdGE/LkN1c3RvbVVpPy5TZWxlY3RvciA/IGR5bmFtaWNCdG5UZW1wbGF0ZSA6IGJ0blRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBidG4gfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J0blRlbXBsYXRlIGxldC1idG4+XHJcbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtZGlhbG9nLWRlY2lzaXZlLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cImJ0bi5pc1dvcmtmbG93ID8gJ2F0dGVudGlvbicgOiBidG4uZGVzaWduXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImJ0bi5uZXdJY29uID8gYnRuLm5ld0ljb24gOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bi5oYW5kbGVyKGJ0biwgZm9ybVBhbmVsQ3RybHI/LkFkYXB0ZXI/LkNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkeW5hbWljQnRuVGVtcGxhdGUgbGV0LWJ0bj5cclxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8Ym5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiYnRuLkRhdGEuQ3VzdG9tVWlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJidG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNFbmFibGVdPVwiYnRuLkNvbW1hbmQ/Ll9pc0VuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG5DbGljayk9XCJidG4uaGFuZGxlcihidG4sIGZvcm1QYW5lbEN0cmxyPy5BZGFwdGVyPy5Db250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICB9IH0gQGlmICghaXNOb25lUGVyc2lzdGFuY2UgJiYgc2hvd1NhdmVCdXR0b24gIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtaW5pdGlhbC1mb2N1c1xyXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NhbmNlbCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XHJcbiAgICA8L2ZkLWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZm9ybS1kaWFsb2cvZm9ybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBd0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQ0gsUUFBUSxFQUlSLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBVzlCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBdUNsRCxZQUNZLGNBQTZCLEVBQzdCLFlBQTBCLEVBQzFCLGNBQTZCO1FBRXJDLEtBQUssRUFBRSxDQUFDO1FBSkEsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFyQ3pDLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBWW5CLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUtuQixjQUFTLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFTeEIsYUFBUSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLDJCQUFzQixHQUFRLElBQUksQ0FBQztR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QyxzeE1BNEhBOzs0RkRyR2EsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNJLGlCQUFpQixhQUdoQixDQUFDLGdCQUFnQixDQUFDLG1CQUNaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzt5SUFJakIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbmZpZywgRGlhbG9nUmVmLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgRGlhbG9nUGFyYW1zLFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBDb250YWluZXJTZXJ2aWNlLFxyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIEZvcm1CYXNlQ29tcG9uZW50LFxyXG4gICAgaXNGaXJlZm94LFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtZm9ybS1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb250YWluZXJTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1EaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgZGlhbG9nVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBmb3JtUGFuZWxDdHJscjogYW55O1xyXG4gICAgZm9ybUNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEZvcm1Db21wb25lbnQ+O1xyXG4gICAgY2FwdGlvbiA9ICcnO1xyXG4gICAgZnVsbHNjcmVlbiA9IGZhbHNlO1xyXG4gICAgZGlhbG9nT3BlbmVkOiBib29sZWFuO1xyXG4gICAgZGlhbG9nUmVmOiBEaWFsb2dSZWY7XHJcbiAgICBpbkRpYWxvZzogYW55O1xyXG4gICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9JZDogc3RyaW5nO1xyXG4gICAgICAgIHR5cGVEZWZJZDogc3RyaW5nO1xyXG4gICAgICAgIHJlcG9ydElkOiBzdHJpbmc7XHJcbiAgICAgICAgaW5EaWFsb2c6IGJvb2xlYW47XHJcbiAgICB9O1xyXG4gICAgcGFyZW50Q29udGFpbmVyOiBhbnk7XHJcbiAgICBkZXZpY2VTaXplOiBzdHJpbmc7XHJcbiAgICBpc05vbmVQZXJzaXN0YW5jZSA9IGZhbHNlO1xyXG4gICAgc2hvd1NhdmVCdXR0b24gPSB0cnVlO1xyXG4gICAgc2hvd1Rvb2xiYXIgPSB0cnVlO1xyXG4gICAgc2hvd0Zvb3RlcjogYm9vbGVhbjtcclxuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgICBjYW5Nb3ZlOiBib29sZWFuO1xyXG4gICAgY2FuUmVzaXplOiBib29sZWFuO1xyXG4gICAgaXNGaXJlZm94ID0gaXNGaXJlZm94KCk7XHJcbiAgICBmdWxsc2NyZWVuRGVmYXVsdDogYm9vbGVhbjtcclxuICAgIGV4dGVuZFRvb2xiYXJJdGVtcyQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgd29ya2Zsb3dCdXR0b25zJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTwncnRsJyB8ICdsdHInPjtcclxuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBfZm9ybVVpQ29tcG9uZW50OiBGb3JtQmFzZUNvbXBvbmVudDtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICBpc1dvcmtmbG93Rm9ybSA9IGZhbHNlO1xyXG4gICAgd29ya2Zsb3dCdXR0b25zT25Gb290ZXIgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkV29ya2Zsb3dCdXR0b246IGFueSA9IG51bGw7XHJcbiAgICBmb3JtVWk6IEZvcm1CYXNlQ29tcG9uZW50O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGRpYWxvZ1BhcmFtczogRGlhbG9nUGFyYW1zLFxyXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJC5zdWJzY3JpYmUoKGRldmljZVNpemUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZXZpY2VTaXplID0gZGV2aWNlU2l6ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBmb3JtUGFuZWxDdHJsciA9IHRoaXMuZGlhbG9nUGFyYW1zLmNvbnRleHQuZm9ybXBhbmVsQ3RybHI7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnU2V0dGluZy5WaWV3LkN1c3RvbVVpLlBhcmFtZXRlcnMnLCBudWxsKTtcclxuICAgICAgICB0aGlzLnRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuSGVhZGVyTGF5b3V0LlRpdGxlJywgbnVsbCk7XHJcbiAgICAgICAgY29uc3QgbW9JZCA9IHRoaXMuZGlhbG9nUGFyYW1zLmNvbnRleHQuaWQ7XHJcbiAgICAgICAgY29uc3QgdHlwZURlZklkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC50eWlkO1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydElkID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5yZXBpZDtcclxuICAgICAgICB0aGlzLmluRGlhbG9nID0gdGhpcy5kaWFsb2dQYXJhbXMuY29udGV4dC5pbkRpYWxvZztcclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW4gPSB0aGlzLmRpYWxvZ1BhcmFtcy5jb250ZXh0LmZ1bGxzY3JlZW47XHJcbiAgICAgICAgdGhpcy5jYW5GdWxsc2NyZWVuID0gcGFyYW1ldGVycz8uQ2FuRnVsbHNjcmVlbjtcclxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW5EZWZhdWx0ID0gcGFyYW1ldGVycz8uRnVsbHNjcmVlbkRlZmF1bHQ7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnNPbkZvb3RlciA9IHBhcmFtZXRlcnM/LldvcmtmbG93QnV0dG9uc09uRm9vdGVyO1xyXG4gICAgICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5EZWZhdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuTW92ZSA9IHBhcmFtZXRlcnM/LkNhbk1vdmU7XHJcbiAgICAgICAgdGhpcy5jYW5SZXNpemUgPSBwYXJhbWV0ZXJzPy5DYW5SZXNpemU7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMgPSB7IG1vSWQsIHR5cGVEZWZJZCwgcmVwb3J0SWQsIGluRGlhbG9nOiB0cnVlIH07XHJcbiAgICAgICAgdGhpcy5fc2V0Q2FwdGlvbihmb3JtUGFuZWxDdHJscik7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJsciA9IGZvcm1QYW5lbEN0cmxyO1xyXG4gICAgfVxyXG4gICAgZ2V0IEFkYXB0ZXIoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtUGFuZWxDdHJsci5BZGFwdGVyO1xyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSB0aGlzLmZvcm1QYW5lbEN0cmxyO1xyXG4gICAgICAgIHRoaXMuaXNXb3JrZmxvd0Zvcm0gPSBmb3JtUGFuZWxDdHJscj8uU2V0dGluZz8uV29ya2Zsb3c7XHJcbiAgICAgICAgdGhpcy5zaG93U2F2ZUJ1dHRvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICBmb3JtUGFuZWxDdHJscixcclxuICAgICAgICAgICAgJ1NldHRpbmcuVmlldy5Gb3JtU2V0dGluZ3MuU2hvd1NhdmVCdXR0b24nXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNob3dUb29sYmFyID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuRm9ybVNldHRpbmdzLlNob3dUb29sYmFyJyk7XHJcbiAgICAgICAgdGhpcy5pc05vbmVQZXJzaXN0YW5jZSA9IGZvcm1QYW5lbEN0cmxyPy5TZXR0aW5nPy5WaWV3Py5Jc05vbmVQZXJzaXN0YW5jZTtcclxuICAgICAgICB0aGlzLnNob3dGb290ZXIgPSB0aGlzLmlzTm9uZVBlcnNpc3RhbmNlXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93U2F2ZUJ1dHRvbiAhPT0gZmFsc2UgJiYgdGhpcy5zaG93VG9vbGJhciAhPT0gZmFsc2VcclxuICAgICAgICAgICAgOiB0aGlzLnNob3dTYXZlQnV0dG9uO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaG93Rm9vdGVyID09IHR5cGVvZiBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvb3RlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xyXG4gICAgfVxyXG4gICAgb25Ub29sYmFyQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Zvcm1VaUNvbXBvbmVudC5vblRvb2xiYXJDbGljayhlKTtcclxuICAgIH1cclxuICAgIG9uV29ya2Zsb3dCdXR0b25TZWxlY3RlZDtcclxuICAgIG9uRm9ybVVpQ29tcG9uZW50UmVhZHkodWlDb21wb25lbnQ6IEZvcm1CYXNlQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZm9ybVVpQ29tcG9uZW50ID0gdWlDb21wb25lbnQ7XHJcbiAgICAgICAgdGhpcy5leHRlbmRUb29sYmFySXRlbXMkID0gdWlDb21wb25lbnQuZXh0ZW5kVG9vbGJhckl0ZW1zJDtcclxuICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9ucyQgPSB1aUNvbXBvbmVudC53b3JrZmxvd0J1dHRvbnMkO1xyXG4gICAgICAgIHRoaXMucnRsJCA9IHVpQ29tcG9uZW50LnJ0bCQ7XHJcbiAgICAgICAgdGhpcy5kaXJWYWx1ZSQgPSB1aUNvbXBvbmVudC5kaXJWYWx1ZSQ7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHVpQ29tcG9uZW50LmRldmljZVNpemUkO1xyXG4gICAgICAgIHRoaXMuZm9ybVVpID0gdWlDb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgICBvcGVuRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNtYWxsRGV2aWNlID0gdGhpcy5kZXZpY2VTaXplID09PSAncycgfHwgdGhpcy5kZXZpY2VTaXplID09PSAnbSc7XHJcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgICBsZXQgd2lkdGggPSBzbWFsbERldmljZSA/ICcxMDAlJyA6ICczMHZ3JztcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiAnYXV0byc7XHJcbiAgICAgICAgaWYgKHdpbmRvd1dpZHRoIDwgMTQ0MCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9ICc4MHN2dyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh3aW5kb3dXaWR0aCA8IDkwMCkge1xyXG4gICAgICAgICAgICB3aWR0aCA9ICcxMDBzdncnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgdmlld1dpZHRoID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5mb3JtUGFuZWxDdHJsciwgJ1NldHRpbmcuVmlldy5NaW5TaXplLndpZHRoJywgbnVsbCk7XHJcbiAgICAgICAgY29uc3Qgdmlld0hpZWdodCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuZm9ybVBhbmVsQ3RybHIsICdTZXR0aW5nLlZpZXcuTWluU2l6ZS5oZWlnaHQnLCBudWxsKTtcclxuICAgICAgICBjb25zdCBtaW5XaWR0aCA9IHNtYWxsRGV2aWNlID8gJzEwMCUnIDogdmlld1dpZHRoID8gdmlld1dpZHRoICsgJ3B4JyA6ICdhdXRvJztcclxuICAgICAgICBjb25zdCBtaW5IZWlnaHQgPSBzbWFsbERldmljZSA/ICcxMDAlJyA6IHZpZXdIaWVnaHQgPyB2aWV3SGllZ2h0ICsgJ3B4JyA6ICdhdXRvJztcclxuICAgICAgICBpZiAodmlld0hpZWdodCkge1xyXG4gICAgICAgICAgICBoZWlnaHQgPSBzbWFsbERldmljZSA/ICcxMDAlJyA6IGAke3ZpZXdIaWVnaHQgKyAxMDB9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmlld1dpZHRoKSB7XHJcbiAgICAgICAgICAgIHdpZHRoID0gc21hbGxEZXZpY2UgPyAnMTAwJScgOiBgJHt2aWV3V2lkdGh9cHhgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtb2RhbFNldHRpbmcgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFuZWxDdHJscixcclxuICAgICAgICAgICAgJ1NldHRpbmcuVmlldy5DdXN0b21VaS5QYXJhbWV0ZXJzLk1vZGFsU2V0dGluZycsXHJcbiAgICAgICAgICAgIG51bGxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBsZXQgc2V0dGluZzogRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgYmFja2Ryb3BDbGlja0Nsb3NlYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1vYmlsZTogc21hbGxEZXZpY2UsXHJcbiAgICAgICAgICAgIHdpZHRoLFxyXG4gICAgICAgICAgICBoZWlnaHQsXHJcbiAgICAgICAgICAgIC8vIGJvZHlNaW5IZWlnaHQ6IG1pbkhlaWdodCxcclxuICAgICAgICAgICAgbWluSGVpZ2h0LFxyXG4gICAgICAgICAgICBtaW5XaWR0aCxcclxuICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRoaXMuY2FuTW92ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0aGlzLmNhblJlc2l6ZSxcclxuICAgICAgICAgICAgZGF0YTogeyBjYXB0aW9uOiB0aGlzLmNhcHRpb24sIGNhbkZ1bGxzY3JlZW46IHRoaXMuY2FuRnVsbHNjcmVlbiwgY2FuTW92ZTogdGhpcy5jYW5Nb3ZlIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChtb2RhbFNldHRpbmcpIHtcclxuICAgICAgICAgICAgc2V0dGluZyA9IHsgLi4uc2V0dGluZywgLi4ubW9kYWxTZXR0aW5nIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nVGVtcGxhdGVSZWYsIHNldHRpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLkFkYXB0ZXI7XHJcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnQ2FuY2VsJyB9KTtcclxuICAgICAgICB0aGlzLl9jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgb25TYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLkFkYXB0ZXI7XHJcbiAgICAgICAgYWRhcHRlci5maXJlRXZlbnQoJ1Rvb2xDbGljaycsIGFkYXB0ZXIsIHsgS2V5OiAnU2F2ZUFuZENsb3NlJyB9KTtcclxuICAgIH1cclxuICAgIG9uT2soKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYWRhcHRlciA9IHRoaXMuQWRhcHRlcjtcclxuICAgICAgICBhZGFwdGVyLmZpcmVFdmVudCgnVG9vbENsaWNrJywgYWRhcHRlciwgeyBLZXk6ICdPaycgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb3JtQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1BhcmFtcy5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nT3BlbmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgLy8gQElucHV0KCkgU2hvd0Zvcm1QYW5lbENvbnRyb2wgPSAoZm9ybXBhbmVsQ3RybHIpID0+IHt9O1xyXG4gICAgLy8gLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIC8vIEBJbnB1dCgpIEZvcmNlQ2xvc2VDaGlsZCA9ICgpID0+IHt9O1xyXG4gICAgLy8gLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIC8vIEBJbnB1dCgpIFJlZnJlc2hGb3JtUGFuZWxDb250cm9sID0gKGZvcm1wYW5lbEN0cmxyKSA9PiB7fTtcclxuICAgIHByaXZhdGUgX2Nsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIHRoaXMuZGlhbG9nUmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2UoKTtcclxuICAgICAgICBpZiAodGhpcy5BZGFwdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQWRhcHRlci5Db250cm9sLmZpcmVFdmVudCgnUmVxdWVzdEZvckNsb3NlJywgdGhpcy5BZGFwdGVyLkNvbnRyb2wsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZGlhbG9nUGFyYW1zLmNsb3NlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5kaWFsb2dPcGVuZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zZXRDYXB0aW9uKGZvcm1QYW5lbEN0cmxyOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0eXBlRGVmTmFtZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnTW8uJFR5cGVEZWZOYW1lJywgJycpO1xyXG4gICAgICAgIGNvbnN0IG1vQ2FwdGlvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGZvcm1QYW5lbEN0cmxyLCAnTW8uJENhcHRpb24nLCAnJyk7XHJcbiAgICAgICAgdGhpcy5jYXB0aW9uID0gdHlwZURlZk5hbWUgKyAnOicgKyBtb0NhcHRpb247XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2c+XHJcbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiAjZGlhbG9nVHBsUmVmPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgxIGZkLXRpdGxlIHN0eWxlPVwibWF4LXdpZHRoOiAxNXJlbVwiPnt7IHRpdGxlIHx8IGRpYWxvZ0NvbmZpZy5kYXRhLmNhcHRpb24gfX08L2gxPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1jZW50ZXIgc3R5bGU9XCJmbGV4OiAxXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgICAgICA8YnN1LWZvcm0tdG9vbGJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1iYXItcmlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZFRvb2xiYXJJdGVtcyRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOmZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJXb3JrZmxvd0luTW9iaWxlOiB3b3JrZmxvd0J1dHRvbnNPbkZvb3RlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlyVmFsdWVdPVwiKGRpclZhbHVlJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9vbGJhckNsaWNrKT1cIm9uVG9vbGJhckNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZm9ybVRvb2xiYXJcclxuICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlhbG9nQ29uZmlnLmRhdGEuY2FuRnVsbHNjcmVlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cImZ1bGxzY3JlZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZnVsbHNjcmVlbiA/ICdleGl0ZnVsbHNjcmVlbicgOiAncmVzaXplJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5EaWFsb2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxvZ109XCJkaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnVsbHNjcmVlbl09XCJmdWxsc2NyZWVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW5DaGFuZ2VkKT1cImZ1bGxzY3JlZW4gPSAkZXZlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlhbG9nQ29tcG9uZW50XT1cImRpYWxvZ1RwbFJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgYXJpYUxhYmVsPVwiY2xvc2VcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgZmRrVGVtcGxhdGU9XCJzdWJoZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJleHRlbmRUb29sYmFySXRlbXMkIHwgYXN5bmMgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOmZhbHNlIGFzIHRvb2xiYXJJdGVtc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgY2xhc3M9XCIhdHctanVzdGlmeS1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJzdS1mb3JtLXRvb2xiYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvbnNdPVwidG9vbGJhckl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXJWYWx1ZV09XCIoZGlyVmFsdWUkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvb2xiYXJDbGljayk9XCJvblRvb2xiYXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb3JtVG9vbGJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxyXG5cclxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XHJcbiAgICAgICAgICAgIDxibnJjLWZvcm1cclxuICAgICAgICAgICAgICAgIFtmb3JtUGFuZWxDdHJsXT1cImZvcm1QYW5lbEN0cmxyXCJcclxuICAgICAgICAgICAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcclxuICAgICAgICAgICAgICAgIChmb3JtQ2xvc2UpPVwib25Gb3JtQ2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICAodWlDb21wb25lbnQpPVwib25Gb3JtVWlDb21wb25lbnRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvYm5yYy1mb3JtPlxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXIgW3N0eWxlLmRpc3BsYXldPVwiIXNob3dGb290ZXIgJiYgIWlzV29ya2Zsb3dGb3JtICYmICF3b3JrZmxvd0J1dHRvbnNPbkZvb3RlciA/ICdub25lJyA6IG51bGxcIj5cclxuICAgICAgICAgICAgQGlmIChpc01vYmlsZSB8fCB3b3JrZmxvd0J1dHRvbnNPbkZvb3RlciApIHsgQGlmKHdvcmtmbG93QnV0dG9ucyQgfCBhc3luYyA7YXMgd29ya2Zsb3dCdXR0b25zKXtcclxuICAgICAgICAgICAgPGJzdS1sYXlvdXQtYWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgW2NhblNlbmRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgW2J1dHRvbnNdPVwiW11cIlxyXG4gICAgICAgICAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgIFtsYW5kc2NhcGVdPVwiKGZvcm1VaT8ubGFuZHNjYXBlJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3RhbmRhbG9uZV09XCIoZm9ybVVpPy5zdGFuZGFsb25lJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zXT1cIndvcmtmbG93QnV0dG9uc1wiXHJcbiAgICAgICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zQ29tYm9Nb2RlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbcnRsXT1cIihydGwkIHwgYXN5bmMpID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICh0b29sQ2xpY2spPVwiZm9ybVVpPy5vblRvb2xiYXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICh3b3JrZmxvd0Nob2ljZVNlbGVjdCk9XCJmb3JtVWk/Lm9uV29ya2Zsb3dDaG9pY2VDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2JzdS1sYXlvdXQtYWN0aW9ucz5cclxuICAgICAgICAgICAgfSB9IEBmb3IgKGJ0biBvZiAoZXh0ZW5kVG9vbGJhckl0ZW1zJCB8IGFzeW5jIHwgdGxiQnV0dG9uczogJ2luRm9vdGVyJzp0cnVlKSA7IHRyYWNrIGJ0bi5JZCkgeyBAaWYgKCEoYnRuXHJcbiAgICAgICAgICAgID09PSAnLScgfHwgYnRuLnRleHQgPT09ICctJykgJiYgKChidG4uaXNCdWlsdGluICYmIGJ0bi5pbkZvb3RlcikgfHwgYnRuLmlzV29ya2Zsb3cpKSB7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYnRuLkRhdGE/LkN1c3RvbVVpPy5TZWxlY3RvciA/IGR5bmFtaWNCdG5UZW1wbGF0ZSA6IGJ0blRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBidG4gfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J0blRlbXBsYXRlIGxldC1idG4+XHJcbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtZGlhbG9nLWRlY2lzaXZlLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cImJ0bi5pc1dvcmtmbG93ID8gJ2F0dGVudGlvbicgOiBidG4uZGVzaWduXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImJ0bi5uZXdJY29uID8gYnRuLm5ld0ljb24gOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bi5oYW5kbGVyKGJ0biwgZm9ybVBhbmVsQ3RybHI/LkFkYXB0ZXI/LkNvbnRyb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkeW5hbWljQnRuVGVtcGxhdGUgbGV0LWJ0bj5cclxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8Ym5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiYnRuLkRhdGEuQ3VzdG9tVWlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJidG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNFbmFibGVdPVwiYnRuLkNvbW1hbmQ/Ll9pc0VuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG5DbGljayk9XCJidG4uaGFuZGxlcihidG4sIGZvcm1QYW5lbEN0cmxyPy5BZGFwdGVyPy5Db250cm9sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICB9IH0gQGlmICghaXNOb25lUGVyc2lzdGFuY2UgJiYgc2hvd1NhdmVCdXR0b24gIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtaW5pdGlhbC1mb2N1c1xyXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NhbmNlbCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XHJcbiAgICA8L2ZkLWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -22,8 +22,6 @@ export class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBas
22
22
  constructor() {
23
23
  super(...arguments);
24
24
  this.mobile = false;
25
- this.fruits = ['Apple', 'Pineapple', 'Banana', 'Kiwi', 'Strawberry'];
26
- this.searchTermOne = '';
27
25
  this.dropDownValuesSource = new BehaviorSubject([]);
28
26
  this.dropDownValues$ = this.dropDownValuesSource.asObservable().pipe(map((moList) => {
29
27
  const t = moList.filter((c) => this.value.find((d) => d.Id === c.Id) === undefined);
@@ -40,7 +38,6 @@ export class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBas
40
38
  this.rtl = BarsaApi.LoginFormData.IsRtl;
41
39
  this.showUlvSource = new Subject();
42
40
  this._setWidth = false;
43
- this.x = false;
44
41
  this.displayFunc = (id) => {
45
42
  const allItems = [...this.value, ...this.dropDownValuesSource.getValue()];
46
43
  const existInValue = allItems.find((c) => c.Id === id);
@@ -127,7 +124,7 @@ export class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBas
127
124
  m._addOnButtonClicked = () => {
128
125
  this._handleAddonButtonClicked();
129
126
  };
130
- m.filterFn = (dropdownValues, searchTerm) => dropdownValues;
127
+ // m.filterFn = (dropdownValues, searchTerm) => dropdownValues;
131
128
  m._onCheckboxClick = function (option, event, index, isListItem = false) {
132
129
  const toggledSelection = !m._selectionModel.isSelected(option.id);
133
130
  m._rangeSelector.onRangeElementToggled(index, event);
@@ -187,7 +184,6 @@ export class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBas
187
184
  this.context.fireEvent('TriggerClick', this.context);
188
185
  }
189
186
  onSelectedChange(arr) {
190
- return;
191
187
  this._selectedChanged(arr);
192
188
  }
193
189
  onRemoveSelected(mo) {
@@ -221,7 +217,6 @@ export class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBas
221
217
  return item.Id;
222
218
  }
223
219
  _setValue(value) {
224
- return;
225
220
  this.originalMoList = [...value];
226
221
  this._setIdsOMoByValue();
227
222
  super._setValue(value);
@@ -406,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
406
401
  }], GetSelectionData: [{
407
402
  type: Input
408
403
  }] } });
409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLWxpbmVhci1saXN0LWNvbnRhaW5lci13aXRoLWJ1dHRvbi91aS1saW5lYXItbGlzdC1jb250YWluZXItd2l0aC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uL3VpLWxpbmVhci1saXN0LWNvbnRhaW5lci13aXRoLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBYSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQW9DLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWV6RSxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsNEJBQTRCO0lBUDFGOztRQXNCSSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsV0FBTSxHQUFHLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVks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QUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHaEQsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRWhDLEtBQUs7c0JBQWpCLEtBQUs7Z0JBK0NOLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU3pDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZN0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFrSjlCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlVW50aWwsIHRhcCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiwgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IEJhcnNhQXBpLCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBSZXBvcnRNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5cclxuaW50ZXJmYWNlIExpbmVhckl0ZW1NbyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgRGF0YTogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIElkOiBzdHJpbmc7XHJcbiAgICBUZXh0OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1saW5lYXItbGlzdC1jb250YWluZXItd2l0aC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUxpbmVhckxpc3RDb250YWluZXJXaXRoQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKE11bHRpSW5wdXRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBtdWx0aUlucHV0Q29tcG9uZW50OiBNdWx0aUlucHV0Q29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gICAgZGlhbG9nQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQElucHV0KCkgc2V0IFVsdlVpKHZhbDogeyBTZXR0aW5nOiBSZXBvcnRNb2RlbCB9KSB7XHJcbiAgICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb0xpc3QgPSB2YWwuU2V0dGluZy5EYXRhLk1vRGF0YUxpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UubmV4dChtb0xpc3QpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLm5leHQobW9MaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fdWx2VWkgPSB2YWw7XHJcbiAgICB9XHJcbiAgICBtb2JpbGUgPSBmYWxzZTtcclxuICAgIGZydWl0cyA9IFsnQXBwbGUnLCAnUGluZWFwcGxlJywgJ0JhbmFuYScsICdLaXdpJywgJ1N0cmF3YmVycnknXTtcclxuICAgIHNlYXJjaFRlcm1PbmUgPSAnJztcclxuICAgIGRyb3BEb3duVmFsdWVzU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcclxuICAgIGRyb3BEb3duVmFsdWVzJCA9IHRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgICBtYXAoKG1vTGlzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0ID0gbW9MaXN0LmZpbHRlcigoYykgPT4gdGhpcy52YWx1ZS5maW5kKChkKSA9PiBkLklkID09PSBjLklkKSA9PT0gdW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFwKFxyXG4gICAgICAgICAgICAobW9MaXN0KSA9PlxyXG4gICAgICAgICAgICAgICAgKHRoaXMuZmlyc3RJdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICRDYXB0aW9uOiBtb0xpc3RbMF0/LiRDYXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIElkOiBtb0xpc3RbMF0/LklkLFxyXG4gICAgICAgICAgICAgICAgICAgIFRleHQ6IG1vTGlzdFswXT8uJENhcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgRGF0YTogbW9MaXN0WzBdXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKChtb2xpc3QpID0+IG1vbGlzdC5tYXAoKGMpID0+IGMuSWQpKVxyXG4gICAgKTtcclxuICAgIHNlbGVjdGVkOiBhbnlbXTtcclxuICAgIHJlcG9ydCA9IG51bGw7XHJcbiAgICB0ZXJtID0gJyc7XHJcbiAgICB0ZXJtU291cmNlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgb3JpZ2luYWxNb0xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcclxuICAgIHZhbHVlOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XHJcbiAgICBydGwgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsO1xyXG4gICAgZGlhbG9nUmVmOiBEaWFsb2dSZWY7XHJcbiAgICBkaWFsb2dPcGVuOiBib29sZWFuO1xyXG4gICAgZmlyc3RJdGVtOiBMaW5lYXJJdGVtTW87XHJcbiAgICBpZHNPZk1vOiBzdHJpbmdbXTtcclxuICAgIHBhcmFtZXRlcnM6IFVpTGluZWFyTGlzdENvbnRhaW5lclNldHRpbmc7XHJcbiAgICBwcml2YXRlIHNob3dVbHZTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfdWx2VWk6IHsgW2tleTogc3RyaW5nXTogYW55OyBTZXR0aW5nOiBSZXBvcnRNb2RlbCB9O1xyXG4gICAgcHJpdmF0ZSBfdHJpZ2dlckNsaWNrZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIF9zZXRXaWR0aCA9IGZhbHNlO1xyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBvbktleUVudGVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnRlcm0pIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLmdldFZhbHVlKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpcmVDb250ZXh0RXZlbnQoJ1JlcXVlc3RDb21tYW5kJywgdGhpcy5jb250ZXh0LCAnTmV3Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBvbktleURvd24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRlcm0gJiYgdGhpcy5oaWRkZW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdSZXF1ZXN0RmlsdGVyMicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50O1xyXG4gICAgICAgICAgICBpZiAoZG9jLmFjdGl2ZUVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucygnZmQtdG9rZW4nKSAmJiB0aGlzLm11bHRpSW5wdXRDb21wb25lbnQ/Lmxpc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlJbnB1dENvbXBvbmVudC5saXN0Q29tcG9uZW50LnNldEl0ZW1BY3RpdmUoMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVzYycsIFsnJGV2ZW50J10pXHJcbiAgICBvbktleUVzYygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEcm9wRG93bk9wZW5TdGF0ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNob3dVbHZTb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vcGVuVWx2KCkpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5yZXBvcnQgPSB0aGlzLlNldHRpbmcuUmVwb3J0O1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxNb0xpc3QgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICAgICAgdGhpcy50ZXJtU291cmNlXHJcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgICAgICAgdGFwKCh0ZXJtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXJtID0gdGVybTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRlcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wRG93blZhbHVlc1NvdXJjZS5uZXh0KFtdKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdSZXF1ZXN0RmlsdGVyJywgdGVybSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50LnNlbGVjdGVkID0gdGhpcy5vcmlnaW5hbE1vTGlzdDtcclxuICAgICAgICB0aGlzLl9zZXRJZHNPTW9CeVZhbHVlKCk7XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IG9sZEhhbmxkZSA9IHRoaXMubXVsdGlJbnB1dENvbXBvbmVudC5fYWRkT25CdXR0b25DbGlja2VkO1xyXG4gICAgICAgIGNvbnN0IG0gPSB0aGlzLm11bHRpSW5wdXRDb21wb25lbnQgYXMgYW55O1xyXG4gICAgICAgIG0uX2FkZE9uQnV0dG9uQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlQWRkb25CdXR0b25DbGlja2VkKCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBtLmZpbHRlckZuID0gKGRyb3Bkb3duVmFsdWVzLCBzZWFyY2hUZXJtKSA9PiBkcm9wZG93blZhbHVlcztcclxuICAgICAgICBtLl9vbkNoZWNrYm94Q2xpY2sgPSBmdW5jdGlvbiAob3B0aW9uLCBldmVudCwgaW5kZXgsIGlzTGlzdEl0ZW0gPSBmYWxzZSkge1xyXG4gICAgICAgICAgICBjb25zdCB0b2dnbGVkU2VsZWN0aW9uID0gIW0uX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uLmlkKTtcclxuICAgICAgICAgICAgbS5fcmFuZ2VTZWxlY3Rvci5vblJhbmdlRWxlbWVudFRvZ2dsZWQoaW5kZXgsIGV2ZW50KTtcclxuICAgICAgICAgICAgY29uc3Qgc3ViID0gbS5fdmlld01vZGVsJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgodm0pID0+IHtcclxuICAgICAgICAgICAgICAgIG0uX3JhbmdlU2VsZWN0b3IuYXBwbHlWYWx1ZVRvRWFjaEluUmFuZ2UoKGlkeCkgPT5cclxuICAgICAgICAgICAgICAgICAgICBtLl9oYW5kbGVTZWxlY3QodG9nZ2xlZFNlbGVjdGlvbiwgdm0uZGlzcGxheWVkT3B0aW9uc1tpZHhdLCBmYWxzZSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBtLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbS5fc3Vic2NyaXB0aW9ucy5hZGQoc3ViKTtcclxuICAgICAgICAgICAgaWYgKGlzTGlzdEl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIC8vIG0ub3BlbkNoYW5nZUhhbmRsZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBtLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgY2hlY2tib3ggc28gZXZlbnQgZG9lc24ndCByZWFjaCB0aGUgbGlzdCBpdGVtXHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0uYmluZChtKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS53aW5kb3dSZXNpemUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcmVzaXplVG9rZW5pemVyKCcxMDAlJyk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplVG9rZW5pemVyKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25WaXNpYmlsaXR5Q2hhbmdlKGUpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZSA9PT0gJ1Zpc2libGUnICYmICF0aGlzLl9zZXRXaWR0aCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRXaWR0aCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZVRva2VuaXplcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9yZXNpemVUb2tlbml6ZXIod2lkdGg6IHN0cmluZyA9ICcnKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHggPSBlbERvbS5xdWVyeVNlbGVjdG9yKCdmZC10b2tlbml6ZXInKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoIXdpZHRoICYmIHgpIHtcclxuICAgICAgICAgICAgY29uc3Qgd3ggPSB4LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICAgICAgICBpZiAoIXd4KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2lkdGggPSBgJHt3eH1weGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh4LCAnd2lkdGgnLCBgJHt3aWR0aH1gKTtcclxuICAgIH1cclxuICAgIHZhbHVlRm4oZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZTtcclxuICAgIH1cclxuICAgIHggPSBmYWxzZTtcclxuICAgIG9uU2VhcmNoVGVybUNoYW5nZSh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRlcm1Tb3VyY2UubmV4dCh0ZXJtKTtcclxuICAgIH1cclxuICAgIG9uT3BlblJlcG9ydCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMucmVwb3J0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVybVNvdXJjZS5uZXh0KCcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnVHJpZ2dlckNsaWNrJywgdGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICAgIG9uU2VsZWN0ZWRDaGFuZ2UoYXJyOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZENoYW5nZWQoYXJyKTtcclxuICAgIH1cclxuICAgIG9uUmVtb3ZlU2VsZWN0ZWQobW8pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZW1vdmVGcm9tU2VsZWN0ZWQobW8pO1xyXG4gICAgICAgIHRoaXMuX3VsdlVpLnZpZXdlckNvbnRyb2wuRGVTZWxlY3RSZWNvcmRzKFttb10pO1xyXG4gICAgICAgIC8vIHRoaXMuX3VsdlVpLnZpZXdlckNvbnRyb2wuZmlyZUV2ZW50KCdyb3dkZXNlbGVjdCcsIHRoaXMuX3VsdlVpLnZpZXdlckNvbnRyb2wsIC0xLCBtbyk7XHJcbiAgICB9XHJcbiAgICBvbkRpc21pc3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY2xvc2VEaWFsb2coKTtcclxuICAgIH1cclxuICAgIG9uT2soKTogdm9pZCB7XHJcbiAgICAgICAgLy8gdGhpcy5fc2VsZWN0ZWRDaGFuZ2VkKHRoaXMuZGlhbG9nUmVmLmRhdGEuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgdGhpcy5fY2xvc2VEaWFsb2coKTtcclxuICAgIH1cclxuICAgIG9uQ2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGF0YS51bHZVaS52aWV3ZXJDb250cm9sLkNsZWFyQWxsU2VsZWN0ZWQoKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kYXRhLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfaGFuZGxlQWRkb25CdXR0b25DbGlja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnM/LkV4ZWN1dGVBZGRvbkJ1dHRvbikge1xyXG4gICAgICAgICAgICB0aGlzLl9leGVjdXRlQ29tbWFuZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25PcGVuUmVwb3J0KCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2V4ZWN1dGVDb21tYW5kKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHsgQWRkb25CdXR0b25Db21tYW5kIH0gPSB0aGlzLnBhcmFtZXRlcnM7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnQWRkb25CdXR0b25DbGlja2VkJywgdGhpcy5jb250ZXh0LCBBZGRvbkJ1dHRvbkNvbW1hbmQpO1xyXG4gICAgfVxyXG4gICAgX3RyYWNrQnlTZWxlY3RlZEZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogbnVtYmVyIHwgc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5JZDtcclxuICAgIH1cclxuICAgIGRpc3BsYXlGdW5jID0gKGlkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFsbEl0ZW1zID0gWy4uLnRoaXMudmFsdWUsIC4uLnRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UuZ2V0VmFsdWUoKV07XHJcbiAgICAgICAgY29uc3QgZXhpc3RJblZhbHVlID0gYWxsSXRlbXMuZmluZCgoYykgPT4gYy5JZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChleGlzdEluVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGV4aXN0SW5WYWx1ZS5UZXh0ID8/IGV4aXN0SW5WYWx1ZS4kQ2FwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfTtcclxuICAgIF9zZXRWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxNb0xpc3QgPSBbLi4udmFsdWVdO1xyXG4gICAgICAgIHRoaXMuX3NldElkc09Nb0J5VmFsdWUoKTtcclxuICAgICAgICBzdXBlci5fc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIEdldFRleHRJdGVtVmFsdWUgPSAoKSA9PiB0aGlzLnRlcm07XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgc2hvdyA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLl9vcGVuVWx2KCk7XHJcbiAgICB9O1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIGhpZGUgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRHJvcERvd25PcGVuU3RhdGUoZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBASW5wdXQoKSBoaWRkZW4gPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlJbnB1dENvbXBvbmVudCAmJiAhdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50Lm9wZW4gJiYgIXRoaXMuZGlhbG9nT3BlbjtcclxuICAgIH07XHJcbiAgICBASW5wdXQoKSBHZXRTZWxlY3Rpb25EYXRhID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRDb21wb25lbnQuc2VsZWN0ZWQ7XHJcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIH07XHJcbiAgICBwcml2YXRlIF9zZXRJZHNPTW9CeVZhbHVlKCkge1xyXG4gICAgICAgIHRoaXMuaWRzT2ZNbyA9IHRoaXMub3JpZ2luYWxNb0xpc3QubWFwKChjKSA9PiBjLklkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEcm9wRG93bk9wZW5TdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aUlucHV0Q29tcG9uZW50ICYmIHRoaXMubXVsdGlJbnB1dENvbXBvbmVudC5vcGVuICE9PSB2YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50Lm9wZW4gPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfb3BlblVsdigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5yZXBvcnQgJiYgIXRoaXMudGVybSAmJiB0aGlzLl90cmlnZ2VyQ2xpY2tlZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dPcGVuIHx8ICF0aGlzLl91bHZVaSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHZpZXc6IGFueSA9IHRoaXMuX3VsdlVpLlNldHRpbmcuVmlldztcclxuICAgICAgICAgICAgdmlldy5Jc0NoZWNrTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGRldmljZVNpemUgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemU7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhcmdlU2NyZWVuID0gZGV2aWNlU2l6ZSA9PT0gJ2wnIHx8IGRldmljZVNpemUgPT09ICd4bCc7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICB1bHZVaTogdGhpcy5fdWx2VWksXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuX2JiYlBpcGUudHJhbnNmb3JtKCdTZWxlY3QnKSxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOiBbLi4udGhpcy5vcmlnaW5hbE1vTGlzdF1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlc2NLZXlDbG9zZWFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZGlhbG9nUGFuZWxDbGFzczogYHVsdi1zZWxlY3Rpb24tZm9ybS1kaWFsb2cgJHtkZXZpY2VTaXplID8gJ3Vsdi1zZWxlY3Rpb24tZm9ybS1kaWFsb2ctbW9iaWxlJyA6ICcnfWBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGxhcmdlU2NyZWVuKSB7XHJcbiAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcud2lkdGggPSAnNjB2dyc7XHJcbiAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gJzYwdmgnO1xyXG4gICAgICAgICAgICAgICAgZGlhbG9nQ29uZmlnLm1pbldpZHRoID0gJzYwMCc7XHJcbiAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcubWluSGVpZ2h0ID0gJzM2MCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcubW9iaWxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5mdWxsU2NyZWVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fdWx2VWk/LlNldHRpbmc/LkV4dHJhPy5EZWZhdWx0Q29tbWFuZHNBY2Nlc3M/LlZpZXcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VsdlVpLlNldHRpbmcuRXh0cmEuRGVmYXVsdENvbW1hbmRzQWNjZXNzLlZpZXcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBkYXRhU2V0dGluZyA9IHRoaXMuX3VsdlVpLlNldHRpbmcuRGF0YTtcclxuICAgICAgICAgICAgaWYgKGxhcmdlU2NyZWVuICYmIGRhdGFTZXR0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YVNldHRpbmcuUGFnaW5nPy5IYXNQYWdpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gJzEwMHZoJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nQ29uZmlnLmhlaWdodCA9IGRhdGFTZXR0aW5nLk1vRGF0YUxpc3QubGVuZ3RoID4gMTAgPyAnMTAwdmgnIDogJzYwdmgnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmRpYWxvZ0NvbnRhaW5lciwgZGlhbG9nQ29uZmlnKTtcclxuICAgICAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ0Nsb3NlKHRoaXMuZGlhbG9nUmVmLmRhdGEuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3VsdlVpLiRSZWdpc3RlckV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91bHZVaS4kUmVnaXN0ZXJFdmVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLm9uKHtcclxuICAgICAgICAgICAgICAgICAgICBhZnRlcnJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLnJlYWR5VG9TZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kYXRhLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdWx2VWkudmlld2VyQ29udHJvbC5DbGVhckFsbFNlbGVjdGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VsdlVpLnZpZXdlckNvbnRyb2wuc2VsZWN0UmVjb3Jkcyh0aGlzLm9yaWdpbmFsTW9MaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGF0YS5zZWxlY3RlZEl0ZW1zID0gWy4uLnRoaXMub3JpZ2luYWxNb0xpc3RdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcm93U2VsZWN0QWxsOiAoY29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LlNldHRpbmcuRGF0YS5Nb0RhdGFMaXN0LmZvckVhY2goKG1vKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRNb1RvU2VsZWN0ZWQobW8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJvd0Rlc2VsZWN0QWxsOiAoY29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LlNldHRpbmcuRGF0YS5Nb0RhdGFMaXN0LmZvckVhY2goKG1vKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tU2VsZWN0ZWQobW8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJvd3NlbGVjdDogKHNlbmRlciwgaW5kZXgsIG1vKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKHRoaXMub3JpZ2luYWxNb0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDZgtio2YQg2KfYsiDYsdmG2K/YsSDYtNiv2YYg2KfbjNmGINin2KrZgdin2YIg2YXbjCDYp9mB2KrYp9ivXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZE1vVG9TZWxlY3RlZChtbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcm93ZGVzZWxlY3Q6IChzZW5kZXIsIGluZGV4LCBtbykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tU2VsZWN0ZWQobW8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmID0gZGlhbG9nUmVmO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURyb3BEb3duT3BlblN0YXRlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX2Nsb3NlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyaWdnZXJDbGlja2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2FkZE1vVG9TZWxlY3RlZChtbzogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFtbykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kaWFsb2dSZWYuZGF0YS5zZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIGlmICghc2VsZWN0ZWQuZmluZCgoYykgPT4gYy5JZCA9PT0gbW8uSWQpKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgSWQ6IG1vLklkLFxyXG4gICAgICAgICAgICAgICAgVGV4dDogbW8uJENhcHRpb24sXHJcbiAgICAgICAgICAgICAgICBEYXRhOiBtbyxcclxuICAgICAgICAgICAgICAgICRDYXB0aW9uOiBtby4kQ2FwdGlvblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9yZW1vdmVGcm9tU2VsZWN0ZWQobW86IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kaWFsb2dSZWYuZGF0YS5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gYy5JZCAhPT0gbW8uSWQpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRhdGEuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nQ2xvc2UobW9MaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLm5leHQobW9MaXN0KTtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZENoYW5nZWQobW9MaXN0Lm1hcCgoYykgPT4gYy5JZCkpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRDaGFuZ2VkKGFycjogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkZWxldGVkSXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGFkZGVkSXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gWy4uLnRoaXMudmFsdWVdO1xyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKG1vKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTW8gPSBhcnIuZmluZCgobW9JZCkgPT4gbW9JZCA9PT0gbW8uSWQpO1xyXG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkTW8pIHtcclxuICAgICAgICAgICAgICAgIG1vLkRhdGEuJElzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlZEl0ZW1zLnB1c2gobW8uRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBhcnIuZm9yRWFjaCgobW9JZCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZE1vID0gdGhpcy5vcmlnaW5hbE1vTGlzdC5maW5kKChjKSA9PiBjLklkID09PSBtb0lkKTtcclxuICAgICAgICAgICAgaWYgKCFzZWxlY3RlZE1vKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtbzIgPSB0aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLmdldFZhbHVlKCkuZmluZCgoYykgPT4gYy5JZCA9PT0gbW9JZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobW8yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW8yLiRJc0NoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkSXRlbXMucHVzaChtbzIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGRlbGV0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnUmVxdWVzdENvbW1hbmQnLCB0aGlzLmNvbnRleHQsICdEZWxldGUnLCBkZWxldGVkSXRlbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWRkZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnUmVxdWVzdENvbW1hbmQnLCB0aGlzLmNvbnRleHQsICdBZGQnLCBhZGRlZEl0ZW1zKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5fdWx2VWkudmlld2VyQ29udHJvbC5maXJlRXZlbnQoJ3Jvd2NsaWNrJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgVWlMaW5lYXJMaXN0Q29udGFpbmVyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgRXhlY3V0ZUFkZG9uQnV0dG9uOiBib29sZWFuO1xyXG4gICAgQWRkb25CdXR0b25Db21tYW5kOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG59XHJcbiIsIjxmZC1tdWx0aS1pbnB1dFxyXG4gICAgW2lucHV0SWRdPVwiaWRcIlxyXG4gICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcclxuICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC4xXCJcclxuICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQpXCJcclxuICAgIFtjbGFzcy5jb250cm9sLXJlYWRvbmx5XT1cIihyZWFkb25seSQgfCBhc3luYykgPT09IHRydWVcIlxyXG4gICAgW2Ryb3Bkb3duVmFsdWVzXT1cIihkcm9wRG93blZhbHVlcyQgfCBhc3luYykhIVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiU2V0dGluZy5Db250cm9sRmllbGRDYXB0aW9uVHJhbnNsYXRlZCB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICBbZGlzcGxheUZuXT1cImRpc3BsYXlGdW5jXCJcclxuICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcclxuICAgIFtkaXNwbGF5QWRkb25CdXR0b25dPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSAhPT0gdHJ1ZVwiXHJcbiAgICBbYWxsb3dOZXdUb2tlbnNdPVwiZmFsc2VcIlxyXG4gICAgW2luY2x1ZGVzXT1cInRydWVcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJpZHNPZk1vXCJcclxuICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZSQgfCBhc3luYykgPT09IHRydWVcIlxyXG4gICAgW3ZhbHVlRm5dPVwidmFsdWVGblwiXHJcbiAgICAoc2VhcmNoVGVybUNoYW5nZSk9XCJvblNlYXJjaFRlcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwib25TZWxlY3RlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgIChhZGRPbkJ1dHRvbkNsaWNrZWQpPVwiX2hhbmRsZUFkZG9uQnV0dG9uQ2xpY2tlZCgpXCJcclxuPjwvZmQtbXVsdGktaW5wdXQ+XHJcblxyXG48IS0tIDxidXR0b25cclxuKm5nSWY9XCJyZXBvcnRcIlxyXG5mZC1idXR0b25cclxuW2F0dHIucnRsXT1cInJ0bFwiXHJcblthcmlhLWxhYmVsXT1cIidBZHZhbmNlZCcgfCBiYmJUcmFuc2xhdGVcIlxyXG5nbHlwaD1cInZhbHVlLWhlbHBcIlxyXG5bZGlzYWJsZWRdPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSEhXCJcclxuKGNsaWNrKT1cIm9uT3BlblJlcG9ydCgpXCJcclxuPjwvYnV0dG9uPiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjY29udGFpbmVyPlxyXG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCIgI2RpYWxvZ1RwbD5cclxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGlkPVwiZmQtZGlhbG9nLWhlYWRlci0zXCIgZmQtdGl0bGU+e3sgZGlhbG9nLmRhdGEudGl0bGUgfX08L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlhbG9nQ29uZmlnLmhlaWdodCAhPT0gJzEwMHZoJykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cImZ1bGxzY3JlZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZGlhbG9nLmRhdGEuZnVsbHNjcmVlbiA/ICdleGl0ZnVsbHNjcmVlbicgOiAncmVzaXplJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5EaWFsb2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Z1bGxzY3JlZW5dPVwiZGlhbG9nLmRhdGEuZnVsbHNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuQ2hhbmdlZCk9XCJkaWFsb2cuZGF0YS5mdWxsc2NyZWVuID0gJGV2ZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxvZ109XCJkaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlhbG9nQ29tcG9uZW50XT1cImRpYWxvZ1RwbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgYXJpYUxhYmVsPVwiY2xvc2VcIiBnbHlwaD1cImRlY2xpbmVcIiAoY2xpY2spPVwib25EaXNtaXNzKClcIj48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPCEtLSA8aDMgZmQtdGl0bGU+e3sgZGlhbG9nLmRhdGEudGl0bGUgfX08L2gzPlxyXG4gICAgICA8YnV0dG9uIGZkLWRpYWxvZy1jbG9zZS1idXR0b24+PC9idXR0b24+IC0tPlxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cclxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XHJcbiAgICAgICAgICAgIEBpZiAoZGlhbG9nLmRhdGEudWx2VWk7IGFzIHVsdlVpKSB7XHJcbiAgICAgICAgICAgIDxic3UtdWktdWx2LW1haW4tdWkgW2NvbnRleHRdPVwidWx2VWlcIiBjbGFzcz1cImxpbmVhci1saXN0LXNlbGVjdGlvblwiPjwvYnN1LXVpLXVsdi1tYWluLXVpPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XHJcblxyXG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyIGNsYXNzPVwidWx2U2VsZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWx2LXNlbGVjdGlvbi1mb3JtLWRpYWxvZ19fcm93IHVsdi1zZWxlY3Rpb24tZm9ybS1kaWFsb2dfX3NlbGVjdGlvbi1yb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIidTZWxlY3RlZEl0ZW1zQW5kQ29uZGl0aW9ucycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNSBmZC10aXRsZSBjbGFzcz1cInNlbGVjdGVkLWFuZC1jb25kaXRpb24tdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgJ1NlbGVjdGVkSXRlbXNBbmRDb25kaXRpb25zJyB8IGJiYlRyYW5zbGF0ZSB9fSA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBkaWFsb2cuZGF0YS5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggfHwgMCB9fSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWx2LXNlbGVjdGlvbi1mb3JtLWRpYWxvZ19fdG9rZW5zLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVsdi1zZWxlY3Rpb24tZm9ybS1kaWFsb2dfX3Rva2Vuc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaWFsb2cuZGF0YS5zZWxlY3RlZEl0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiIHN0eWxlPVwib3ZlcmZsb3cteTphdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWxlY3RlZCBpdGVtcyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICggaXRlbSBvZiBkaWFsb2cuZGF0YS5zZWxlY3RlZEl0ZW1zOyB0cmFjayBfdHJhY2tCeVNlbGVjdGVkRm4oc2VsZWN0ZWRJbmRleCwgaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5kZXggPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtdG9rZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImhpZ2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19fc2VsZWN0aW9uLXRva2VuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJvblJlbW92ZVNlbGVjdGVkKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGl0ZW0uVGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1bHYtc2VsZWN0aW9uLWZvcm0tZGlhbG9nX190b2tlbnMtY2xlYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImRlY2xpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiJ0NsZWFyJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1iYXJfX3JpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zdWNjZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPSycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uT2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcy1kaWFsb2dcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtZGlhbG9nLWRlY2lzaXZlLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NhbmNlbCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRpc21pc3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxyXG4gICAgPC9mZC1kaWFsb2c+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLWxpbmVhci1saXN0LWNvbnRhaW5lci13aXRoLWJ1dHRvbi91aS1saW5lYXItbGlzdC1jb250YWluZXItd2l0aC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uL3VpLWxpbmVhci1saXN0LWNvbnRhaW5lci13aXRoLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBYSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQW9DLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWV6RSxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsNEJBQTRCO0lBUDFGOztRQXNCSSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLG9CQUFlLEdBQUcs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WUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZN0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkErSTlCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlVW50aWwsIHRhcCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiwgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IEJhcnNhQXBpLCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBSZXBvcnRNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5cclxuaW50ZXJmYWNlIExpbmVhckl0ZW1NbyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgRGF0YTogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIElkOiBzdHJpbmc7XHJcbiAgICBUZXh0OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1saW5lYXItbGlzdC1jb250YWluZXItd2l0aC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktbGluZWFyLWxpc3QtY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUxpbmVhckxpc3RDb250YWluZXJXaXRoQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKE11bHRpSW5wdXRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBtdWx0aUlucHV0Q29tcG9uZW50OiBNdWx0aUlucHV0Q29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gICAgZGlhbG9nQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQElucHV0KCkgc2V0IFVsdlVpKHZhbDogeyBTZXR0aW5nOiBSZXBvcnRNb2RlbCB9KSB7XHJcbiAgICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgICAgICBjb25zdCBtb0xpc3QgPSB2YWwuU2V0dGluZy5EYXRhLk1vRGF0YUxpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UubmV4dChtb0xpc3QpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLm5leHQobW9MaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fdWx2VWkgPSB2YWw7XHJcbiAgICB9XHJcbiAgICBtb2JpbGUgPSBmYWxzZTsgICAgICAgIFxyXG4gICAgZHJvcERvd25WYWx1ZXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oW10pO1xyXG4gICAgZHJvcERvd25WYWx1ZXMkID0gdGhpcy5kcm9wRG93blZhbHVlc1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICAgIG1hcCgobW9MaXN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHQgPSBtb0xpc3QuZmlsdGVyKChjKSA9PiB0aGlzLnZhbHVlLmZpbmQoKGQpID0+IGQuSWQgPT09IGMuSWQpID09PSB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdDtcclxuICAgICAgICB9KSxcclxuICAgICAgICB0YXAoXHJcbiAgICAgICAgICAgIChtb0xpc3QpID0+XHJcbiAgICAgICAgICAgICAgICAodGhpcy5maXJzdEl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJENhcHRpb246IG1vTGlzdFswXT8uJENhcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgSWQ6IG1vTGlzdFswXT8uSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgVGV4dDogbW9MaXN0WzBdPy4kQ2FwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBEYXRhOiBtb0xpc3RbMF1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKSxcclxuICAgICAgICBtYXAoKG1vbGlzdCkgPT4gbW9saXN0Lm1hcCgoYykgPT4gYy5JZCkpXHJcbiAgICApO1xyXG4gICAgc2VsZWN0ZWQ6IGFueVtdO1xyXG4gICAgcmVwb3J0ID0gbnVsbDtcclxuICAgIHRlcm0gPSAnJztcclxuICAgIHRlcm1Tb3VyY2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBvcmlnaW5hbE1vTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xyXG4gICAgdmFsdWU6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcclxuICAgIHJ0bCA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNSdGw7XHJcbiAgICBkaWFsb2dSZWY6IERpYWxvZ1JlZjtcclxuICAgIGRpYWxvZ09wZW46IGJvb2xlYW47XHJcbiAgICBmaXJzdEl0ZW06IExpbmVhckl0ZW1NbztcclxuICAgIGlkc09mTW86IHN0cmluZ1tdO1xyXG4gICAgcGFyYW1ldGVyczogVWlMaW5lYXJMaXN0Q29udGFpbmVyU2V0dGluZztcclxuICAgIHByaXZhdGUgc2hvd1VsdlNvdXJjZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF91bHZVaTogeyBba2V5OiBzdHJpbmddOiBhbnk7IFNldHRpbmc6IFJlcG9ydE1vZGVsIH07XHJcbiAgICBwcml2YXRlIF90cmlnZ2VyQ2xpY2tlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX3NldFdpZHRoID0gZmFsc2U7XHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcclxuICAgIG9uS2V5RW50ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudGVybSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UuZ2V0VmFsdWUoKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnUmVxdWVzdENvbW1hbmQnLCB0aGlzLmNvbnRleHQsICdOZXcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnXSlcclxuICAgIG9uS2V5RG93bigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMudGVybSAmJiB0aGlzLmhpZGRlbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1JlcXVlc3RGaWx0ZXIyJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZG9jID0gZG9jdW1lbnQ7XHJcbiAgICAgICAgICAgIGlmIChkb2MuYWN0aXZlRWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdmZC10b2tlbicpICYmIHRoaXMubXVsdGlJbnB1dENvbXBvbmVudD8ubGlzdENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50Lmxpc3RDb21wb25lbnQuc2V0SXRlbUFjdGl2ZSgwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjJywgWyckZXZlbnQnXSlcclxuICAgIG9uS2V5RXNjKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZURyb3BEb3duT3BlblN0YXRlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd1VsdlNvdXJjZVxyXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX29wZW5VbHYoKSk7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLnJlcG9ydCA9IHRoaXMuU2V0dGluZy5SZXBvcnQ7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbE1vTGlzdCA9IFsuLi50aGlzLnZhbHVlXTtcclxuICAgICAgICB0aGlzLnRlcm1Tb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgICAgICAgICB0YXAoKHRlcm0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlcm0gPSB0ZXJtO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGVybSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLm5leHQoW10pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ1JlcXVlc3RGaWx0ZXInLCB0ZXJtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgICAgICAvLyB0aGlzLm11bHRpSW5wdXRDb21wb25lbnQuc2VsZWN0ZWQgPSB0aGlzLm9yaWdpbmFsTW9MaXN0O1xyXG4gICAgICAgIHRoaXMuX3NldElkc09Nb0J5VmFsdWUoKTtcclxuXHJcbiAgICAgICAgLy8gY29uc3Qgb2xkSGFubGRlID0gdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50Ll9hZGRPbkJ1dHRvbkNsaWNrZWQ7XHJcbiAgICAgICAgY29uc3QgbSA9IHRoaXMubXVsdGlJbnB1dENvbXBvbmVudCBhcyBhbnk7XHJcbiAgICAgICAgbS5fYWRkT25CdXR0b25DbGlja2VkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVBZGRvbkJ1dHRvbkNsaWNrZWQoKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIG0uZmlsdGVyRm4gPSAoZHJvcGRvd25WYWx1ZXMsIHNlYXJjaFRlcm0pID0+IGRyb3Bkb3duVmFsdWVzO1xyXG4gICAgICAgIG0uX29uQ2hlY2tib3hDbGljayA9IGZ1bmN0aW9uIChvcHRpb24sIGV2ZW50LCBpbmRleCwgaXNMaXN0SXRlbSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZWRTZWxlY3Rpb24gPSAhbS5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24uaWQpO1xyXG4gICAgICAgICAgICBtLl9yYW5nZVNlbGVjdG9yLm9uUmFuZ2VFbGVtZW50VG9nZ2xlZChpbmRleCwgZXZlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWIgPSBtLl92aWV3TW9kZWwkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCh2bSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbS5fcmFuZ2VTZWxlY3Rvci5hcHBseVZhbHVlVG9FYWNoSW5SYW5nZSgoaWR4KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIG0uX2hhbmRsZVNlbGVjdCh0b2dnbGVkU2VsZWN0aW9uLCB2bS5kaXNwbGF5ZWRPcHRpb25zW2lkeF0sIGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIG0uX2NoYW5nZURldFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtLl9zdWJzY3JpcHRpb25zLmFkZChzdWIpO1xyXG4gICAgICAgICAgICBpZiAoaXNMaXN0SXRlbSkge1xyXG4gICAgICAgICAgICAgICAgLy8gbS5vcGVuQ2hhbmdlSGFuZGxlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIG0uc2VhcmNoSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGVja2JveCBzbyBldmVudCBkb2Vzbid0IHJlYWNoIHRoZSBsaXN0IGl0ZW1cclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKG0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLndpbmRvd1Jlc2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNpemVUb2tlbml6ZXIoJzEwMCUnKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNpemVUb2tlbml6ZXIoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBvblZpc2liaWxpdHlDaGFuZ2UoZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScgJiYgIXRoaXMuX3NldFdpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldFdpZHRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fcmVzaXplVG9rZW5pemVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX3Jlc2l6ZVRva2VuaXplcih3aWR0aDogc3RyaW5nID0gJycpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlbERvbSA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgeCA9IGVsRG9tLnF1ZXJ5U2VsZWN0b3IoJ2ZkLXRva2VuaXplcicpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmICghd2lkdGggJiYgeCkge1xyXG4gICAgICAgICAgICBjb25zdCB3eCA9IHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgICAgICAgIGlmICghd3gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aWR0aCA9IGAke3d4fXB4YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHgsICd3aWR0aCcsIGAke3dpZHRofWApO1xyXG4gICAgfVxyXG4gICAgdmFsdWVGbihlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBlO1xyXG4gICAgfSAgICBcclxuICAgIG9uU2VhcmNoVGVybUNoYW5nZSh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRlcm1Tb3VyY2UubmV4dCh0ZXJtKTtcclxuICAgIH1cclxuICAgIG9uT3BlblJlcG9ydCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90cmlnZ2VyQ2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMucmVwb3J0KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVybVNvdXJjZS5uZXh0KCcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnVHJpZ2dlckNsaWNrJywgdGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICAgIG9uU2VsZWN0ZWRDaGFuZ2UoYXJyOiBzdHJpbmdbXSk6IHZvaWQgeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDaGFuZ2VkKGFycik7XHJcbiAgICB9XHJcbiAgICBvblJlbW92ZVNlbGVjdGVkKG1vKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbVNlbGVjdGVkKG1vKTtcclxuICAgICAgICB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLkRlU2VsZWN0UmVjb3JkcyhbbW9dKTtcclxuICAgICAgICAvLyB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLmZpcmVFdmVudCgncm93ZGVzZWxlY3QnLCB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLCAtMSwgbW8pO1xyXG4gICAgfVxyXG4gICAgb25EaXNtaXNzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgICBvbk9rKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIHRoaXMuX3NlbGVjdGVkQ2hhbmdlZCh0aGlzLmRpYWxvZ1JlZi5kYXRhLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgICBvbkNsZWFyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRhdGEudWx2VWkudmlld2VyQ29udHJvbC5DbGVhckFsbFNlbGVjdGVkKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGF0YS5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2hhbmRsZUFkZG9uQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzPy5FeGVjdXRlQWRkb25CdXR0b24pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZUNvbW1hbmQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uT3BlblJlcG9ydCgpO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9leGVjdXRlQ29tbWFuZCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IEFkZG9uQnV0dG9uQ29tbWFuZCB9ID0gdGhpcy5wYXJhbWV0ZXJzO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ0FkZG9uQnV0dG9uQ2xpY2tlZCcsIHRoaXMuY29udGV4dCwgQWRkb25CdXR0b25Db21tYW5kKTtcclxuICAgIH1cclxuICAgIF90cmFja0J5U2VsZWN0ZWRGbihfaW5kZXg6IG51bWJlciwgaXRlbTogTWV0YW9iamVjdERhdGFNb2RlbCk6IG51bWJlciB8IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uSWQ7XHJcbiAgICB9XHJcbiAgICBkaXNwbGF5RnVuYyA9IChpZDogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgICAgICBjb25zdCBhbGxJdGVtcyA9IFsuLi50aGlzLnZhbHVlLCAuLi50aGlzLmRyb3BEb3duVmFsdWVzU291cmNlLmdldFZhbHVlKCldO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0SW5WYWx1ZSA9IGFsbEl0ZW1zLmZpbmQoKGMpID0+IGMuSWQgPT09IGlkKTtcclxuICAgICAgICBpZiAoZXhpc3RJblZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBleGlzdEluVmFsdWUuVGV4dCA/PyBleGlzdEluVmFsdWUuJENhcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH07XHJcbiAgICBfc2V0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQgeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbE1vTGlzdCA9IFsuLi52YWx1ZV07XHJcbiAgICAgICAgdGhpcy5fc2V0SWRzT01vQnlWYWx1ZSgpO1xyXG4gICAgICAgIHN1cGVyLl9zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgR2V0VGV4dEl0ZW1WYWx1ZSA9ICgpID0+IHRoaXMudGVybTtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICBASW5wdXQoKSBzaG93ID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX29wZW5VbHYoKTtcclxuICAgIH07XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQElucHV0KCkgaGlkZSA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2VEcm9wRG93bk9wZW5TdGF0ZShmYWxzZSk7XHJcbiAgICB9O1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIGhpZGRlbiA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50ICYmICF0aGlzLm11bHRpSW5wdXRDb21wb25lbnQub3BlbiAmJiAhdGhpcy5kaWFsb2dPcGVuO1xyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIEdldFNlbGVjdGlvbkRhdGEgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlJbnB1dENvbXBvbmVudC5zZWxlY3RlZDtcclxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgfTtcclxuICAgIHByaXZhdGUgX3NldElkc09Nb0J5VmFsdWUoKSB7XHJcbiAgICAgICAgdGhpcy5pZHNPZk1vID0gdGhpcy5vcmlnaW5hbE1vTGlzdC5tYXAoKGMpID0+IGMuSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2NoYW5nZURyb3BEb3duT3BlblN0YXRlKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpSW5wdXRDb21wb25lbnQgJiYgdGhpcy5tdWx0aUlucHV0Q29tcG9uZW50Lm9wZW4gIT09IHZhbCkge1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpSW5wdXRDb21wb25lbnQub3BlbiA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9vcGVuVWx2KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnJlcG9ydCAmJiAhdGhpcy50ZXJtICYmIHRoaXMuX3RyaWdnZXJDbGlja2VkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ09wZW4gfHwgIXRoaXMuX3VsdlVpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgdmlldzogYW55ID0gdGhpcy5fdWx2VWkuU2V0dGluZy5WaWV3O1xyXG4gICAgICAgICAgICB2aWV3LklzQ2hlY2tMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgZGV2aWNlU2l6ZSA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZTtcclxuICAgICAgICAgICAgY29uc3QgbGFyZ2VTY3JlZW4gPSBkZXZpY2VTaXplID09PSAnbCcgfHwgZGV2aWNlU2l6ZSA9PT0gJ3hsJztcclxuICAgICAgICAgICAgY29uc3QgZGlhbG9nQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHVsdlVpOiB0aGlzLl91bHZVaSxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fYmJiUGlwZS50cmFuc2Zvcm0oJ1NlbGVjdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IFsuLi50aGlzLm9yaWdpbmFsTW9MaXN0XVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVzY0tleUNsb3NlYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBkaWFsb2dQYW5lbENsYXNzOiBgdWx2LXNlbGVjdGlvbi1mb3JtLWRpYWxvZyAke2RldmljZVNpemUgPyAndWx2LXNlbGVjdGlvbi1mb3JtLWRpYWxvZy1tb2JpbGUnIDogJyd9YFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAobGFyZ2VTY3JlZW4pIHtcclxuICAgICAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICc2MHZ3JztcclxuICAgICAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5oZWlnaHQgPSAnNjB2aCc7XHJcbiAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcubWluV2lkdGggPSAnNjAwJztcclxuICAgICAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5taW5IZWlnaHQgPSAnMzYwJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5tb2JpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZGlhbG9nQ29uZmlnLmZ1bGxTY3JlZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl91bHZVaT8uU2V0dGluZz8uRXh0cmE/LkRlZmF1bHRDb21tYW5kc0FjY2Vzcz8uVmlldykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdWx2VWkuU2V0dGluZy5FeHRyYS5EZWZhdWx0Q29tbWFuZHNBY2Nlc3MuVmlldyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTZXR0aW5nID0gdGhpcy5fdWx2VWkuU2V0dGluZy5EYXRhO1xyXG4gICAgICAgICAgICBpZiAobGFyZ2VTY3JlZW4gJiYgZGF0YVNldHRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhU2V0dGluZy5QYWdpbmc/Lkhhc1BhZ2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ0NvbmZpZy5oZWlnaHQgPSAnMTAwdmgnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gZGF0YVNldHRpbmcuTW9EYXRhTGlzdC5sZW5ndGggPiAxMCA/ICcxMDB2aCcgOiAnNjB2aCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuZGlhbG9nQ29udGFpbmVyLCBkaWFsb2dDb25maWcpO1xyXG4gICAgICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nQ2xvc2UodGhpcy5kaWFsb2dSZWYuZGF0YS5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fdWx2VWkuJFJlZ2lzdGVyRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VsdlVpLiRSZWdpc3RlckV2ZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VsdlVpLnZpZXdlckNvbnRyb2wub24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGFmdGVycmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VsdlVpLnZpZXdlckNvbnRyb2wucmVhZHlUb1NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmRhdGEuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLkNsZWFyQWxsU2VsZWN0ZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdWx2VWkudmlld2VyQ29udHJvbC5zZWxlY3RSZWNvcmRzKHRoaXMub3JpZ2luYWxNb0xpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kYXRhLnNlbGVjdGVkSXRlbXMgPSBbLi4udGhpcy5vcmlnaW5hbE1vTGlzdF07XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByb3dTZWxlY3RBbGw6IChjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuU2V0dGluZy5EYXRhLk1vRGF0YUxpc3QuZm9yRWFjaCgobW8pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZE1vVG9TZWxlY3RlZChtbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcm93RGVzZWxlY3RBbGw6IChjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuU2V0dGluZy5EYXRhLk1vRGF0YUxpc3QuZm9yRWFjaCgobW8pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21TZWxlY3RlZChtbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcm93c2VsZWN0OiAoc2VuZGVyLCBpbmRleCwgbW8pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAodGhpcy5vcmlnaW5hbE1vTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vINmC2KjZhCDYp9iyINix2YbYr9ixINi02K/ZhiDYp9uM2YYg2KfYqtmB2KfZgiDZhduMINin2YHYqtin2K9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkTW9Ub1NlbGVjdGVkKG1vKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByb3dkZXNlbGVjdDogKHNlbmRlciwgaW5kZXgsIG1vKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21TZWxlY3RlZChtbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSBkaWFsb2dSZWY7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRHJvcERvd25PcGVuU3RhdGUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfY2xvc2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckNsaWNrZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ09wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfYWRkTW9Ub1NlbGVjdGVkKG1vOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIW1vKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmRpYWxvZ1JlZi5kYXRhLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZC5maW5kKChjKSA9PiBjLklkID09PSBtby5JZCkpIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBJZDogbW8uSWQsXHJcbiAgICAgICAgICAgICAgICBUZXh0OiBtby4kQ2FwdGlvbixcclxuICAgICAgICAgICAgICAgIERhdGE6IG1vLFxyXG4gICAgICAgICAgICAgICAgJENhcHRpb246IG1vLiRDYXB0aW9uXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3JlbW92ZUZyb21TZWxlY3RlZChtbzogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmRpYWxvZ1JlZi5kYXRhLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjLklkICE9PSBtby5JZCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGF0YS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9kaWFsb2dDbG9zZShtb0xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UubmV4dChtb0xpc3QpO1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ2hhbmdlZChtb0xpc3QubWFwKChjKSA9PiBjLklkKSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZENoYW5nZWQoYXJyOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWRJdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gW107XHJcbiAgICAgICAgY29uc3QgYWRkZWRJdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gW107XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgobW8pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRNbyA9IGFyci5maW5kKChtb0lkKSA9PiBtb0lkID09PSBtby5JZCk7XHJcbiAgICAgICAgICAgIGlmICghc2VsZWN0ZWRNbykge1xyXG4gICAgICAgICAgICAgICAgbW8uRGF0YS4kSXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkZWxldGVkSXRlbXMucHVzaChtby5EYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGFyci5mb3JFYWNoKChtb0lkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTW8gPSB0aGlzLm9yaWdpbmFsTW9MaXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IG1vSWQpO1xyXG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkTW8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vMiA9IHRoaXMuZHJvcERvd25WYWx1ZXNTb3VyY2UuZ2V0VmFsdWUoKS5maW5kKChjKSA9PiBjLklkID09PSBtb0lkKTtcclxuICAgICAgICAgICAgICAgIGlmIChtbzIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtbzIuJElzQ2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkZWRJdGVtcy5wdXNoKG1vMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoZGVsZXRlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdSZXF1ZXN0Q29tbWFuZCcsIHRoaXMuY29udGV4dCwgJ0RlbGV0ZScsIGRlbGV0ZWRJdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhZGRlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5maXJlQ29udGV4dEV2ZW50KCdSZXF1ZXN0Q29tbWFuZCcsIHRoaXMuY29udGV4dCwgJ0FkZCcsIGFkZGVkSXRlbXMpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl91bHZVaS52aWV3ZXJDb250cm9sLmZpcmVFdmVudCgncm93Y2xpY2snKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBVaUxpbmVhckxpc3RDb250YWluZXJTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XHJcbiAgICBFeGVjdXRlQWRkb25CdXR0b246IGJvb2xlYW47XHJcbiAgICBBZGRvbkJ1dHRvbkNvbW1hbmQ6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbn1cclxuIiwiPGZkLW11bHRpLWlucHV0XHJcbiAgICBbaW5wdXRJZF09XCJpZFwiXHJcbiAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxyXG4gICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudClcIlxyXG4gICAgW2NsYXNzLmNvbnRyb2wtcmVhZG9ubHldPVwiKHJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICBbZHJvcGRvd25WYWx1ZXNdPVwiKGRyb3BEb3duVmFsdWVzJCB8IGFzeW5jKSEhXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJTZXR0aW5nLkNvbnRyb2xGaWVsZENhcHRpb25UcmFuc2xhdGVkIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgIFtkaXNwbGF5Rm5dPVwiZGlzcGxheUZ1bmNcIlxyXG4gICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgW2Rpc3BsYXlBZGRvbkJ1dHRvbl09XCIoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpICE9PSB0cnVlXCJcclxuICAgIFthbGxvd05ld1Rva2Vuc109XCJmYWxzZVwiXHJcbiAgICBbaW5jbHVkZXNdPVwidHJ1ZVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cImlkc09mTW9cIlxyXG4gICAgW2Rpc2FibGVkXT1cIihkaXNhYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbiAgICBbdmFsdWVGbl09XCJ2YWx1ZUZuXCJcclxuICAgIChzZWFyY2hUZXJtQ2hhbmdlKT1cIm9uU2VhcmNoVGVybUNoYW5nZSgkZXZlbnQpXCJcclxuICAgIChzZWxlY3RlZENoYW5nZSk9XCJvblNlbGVjdGVkQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJfaGFuZGxlQWRkb25CdXR0b25DbGlja2VkKClcIlxyXG4+PC9mZC1tdWx0aS1pbnB1dD5cclxuXHJcbjwhLS0gPGJ1dHRvblxyXG4qbmdJZj1cInJlcG9ydFwiXHJcbmZkLWJ1dHRvblxyXG5bYXR0ci5ydGxdPVwicnRsXCJcclxuW2FyaWEtbGFiZWxdPVwiJ0FkdmFuY2VkJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbmdseXBoPVwidmFsdWUtaGVscFwiXHJcbltkaXNhYmxlZF09XCIoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpISFcIlxyXG4oY2xpY2spPVwib25PcGVuUmVwb3J0KClcIlxyXG4+PC9idXR0b24+IC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNjb250YWluZXI+XHJcbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIiAjZGlhbG9nVHBsPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDEgaWQ9XCJmZC1kaWFsb2ctaGVhZGVyLTNcIiBmZC10aXRsZT57eyBkaWFsb2cuZGF0YS50aXRsZSB9fTwvaDE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChkaWFsb2dDb25maWcuaGVpZ2h0ICE9PSAnMTAwdmgnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiZnVsbHNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJkaWFsb2cuZGF0YS5mdWxsc2NyZWVuID8gJ2V4aXRmdWxsc2NyZWVuJyA6ICdyZXNpemUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbkRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnVsbHNjcmVlbl09XCJkaWFsb2cuZGF0YS5mdWxsc2NyZWVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW5DaGFuZ2VkKT1cImRpYWxvZy5kYXRhLmZ1bGxzY3JlZW4gPSAkZXZlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlhbG9nXT1cImRpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaWFsb2dDb21wb25lbnRdPVwiZGlhbG9nVHBsXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBhcmlhTGFiZWw9XCJjbG9zZVwiIGdseXBoPVwiZGVjbGluZVwiIChjbGljayk9XCJvbkRpc21pc3MoKVwiPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8IS0tIDxoMyBmZC10aXRsZT57eyBkaWFsb2cuZGF0YS50aXRsZSB9fTwvaDM+XHJcbiAgICAgIDxidXR0b24gZmQtZGlhbG9nLWNsb3NlLWJ1dHRvbj48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxyXG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cclxuICAgICAgICAgICAgQGlmIChkaWFsb2cuZGF0YS51bHZVaTsgYXMgdWx2VWkpIHtcclxuICAgICAgICAgICAgPGJzdS11aS11bHYtbWFpbi11aSBbY29udGV4dF09XCJ1bHZVaVwiIGNsYXNzPVwibGluZWFyLWxpc3Qtc2VsZWN0aW9uXCI+PC9ic3UtdWktdWx2LW1haW4tdWk+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cclxuXHJcbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXIgY2xhc3M9XCJ1bHZTZWxlY3Rpb25cIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1bHYtc2VsZWN0aW9uLWZvcm0tZGlhbG9nX19yb3cgdWx2LXNlbGVjdGlvbi1mb3JtLWRpYWxvZ19fc2VsZWN0aW9uLXJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiJ1NlbGVjdGVkSXRlbXNBbmRDb25kaXRpb25zJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg1IGZkLXRpdGxlIGNsYXNzPVwic2VsZWN0ZWQtYW5kLWNvbmRpdGlvbi10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyAnU2VsZWN0ZWRJdGVtc0FuZENvbmRpdGlvbnMnIHwgYmJiVHJhbnNsYXRlIH19IDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGRpYWxvZy5kYXRhLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCB8fCAwIH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bHYtc2VsZWN0aW9uLWZvcm0tZGlhbG9nX190b2tlbnMtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWx2LXNlbGVjdGlvbi1mb3JtLWRpYWxvZ19fdG9rZW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRpYWxvZy5kYXRhLnNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b29sYmFyIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgc3R5bGU9XCJvdmVyZmxvdy15OmF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIGl0ZW1zIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKCBpdGVtIG9mIGRpYWxvZy5kYXRhLnNlbGVjdGVkSXRlbXM7IHRyYWNrIF90cmFja0J5U2VsZWN0ZWRGbihzZWxlY3RlZEluZGV4LCBpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC10b2tlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwiaGlnaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19zZWxlY3Rpb24tdG9rZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cIm9uUmVtb3ZlU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgaXRlbS5UZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC10b2tlbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVsdi1zZWxlY3Rpb24tZm9ybS1kaWFsb2dfX3Rva2Vucy1jbGVhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCInQ2xlYXInIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XHJcbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWJhcl9fcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXN1Y2Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09LJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PaygpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzLWRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1kaWFsb2ctZGVjaXNpdmUtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ2FuY2VsJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGlzbWlzcygpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XHJcbiAgICA8L2ZkLWRpYWxvZz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -9218,8 +9218,6 @@ class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBaseCompon
9218
9218
  constructor() {
9219
9219
  super(...arguments);
9220
9220
  this.mobile = false;
9221
- this.fruits = ['Apple', 'Pineapple', 'Banana', 'Kiwi', 'Strawberry'];
9222
- this.searchTermOne = '';
9223
9221
  this.dropDownValuesSource = new BehaviorSubject([]);
9224
9222
  this.dropDownValues$ = this.dropDownValuesSource.asObservable().pipe(map((moList) => {
9225
9223
  const t = moList.filter((c) => this.value.find((d) => d.Id === c.Id) === undefined);
@@ -9236,7 +9234,6 @@ class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBaseCompon
9236
9234
  this.rtl = BarsaApi.LoginFormData.IsRtl;
9237
9235
  this.showUlvSource = new Subject();
9238
9236
  this._setWidth = false;
9239
- this.x = false;
9240
9237
  this.displayFunc = (id) => {
9241
9238
  const allItems = [...this.value, ...this.dropDownValuesSource.getValue()];
9242
9239
  const existInValue = allItems.find((c) => c.Id === id);
@@ -9323,7 +9320,7 @@ class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBaseCompon
9323
9320
  m._addOnButtonClicked = () => {
9324
9321
  this._handleAddonButtonClicked();
9325
9322
  };
9326
- m.filterFn = (dropdownValues, searchTerm) => dropdownValues;
9323
+ // m.filterFn = (dropdownValues, searchTerm) => dropdownValues;
9327
9324
  m._onCheckboxClick = function (option, event, index, isListItem = false) {
9328
9325
  const toggledSelection = !m._selectionModel.isSelected(option.id);
9329
9326
  m._rangeSelector.onRangeElementToggled(index, event);
@@ -9383,7 +9380,6 @@ class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBaseCompon
9383
9380
  this.context.fireEvent('TriggerClick', this.context);
9384
9381
  }
9385
9382
  onSelectedChange(arr) {
9386
- return;
9387
9383
  this._selectedChanged(arr);
9388
9384
  }
9389
9385
  onRemoveSelected(mo) {
@@ -9417,7 +9413,6 @@ class UiLinearListContainerWithButtonComponent extends DeviceInfoFieldBaseCompon
9417
9413
  return item.Id;
9418
9414
  }
9419
9415
  _setValue(value) {
9420
- return;
9421
9416
  this.originalMoList = [...value];
9422
9417
  this._setIdsOMoByValue();
9423
9418
  super._setValue(value);
@@ -9781,7 +9776,7 @@ class CaptchaFieldComponent extends FieldBaseComponent {
9781
9776
  constructor() {
9782
9777
  super(...arguments);
9783
9778
  this.now = new Date().toString();
9784
- this.capId = BarsaApi.LoginFormData.CaptchaId;
9779
+ this.capId = '-';
9785
9780
  }
9786
9781
  onValueChange(e) {
9787
9782
  this.value = e.target.value;
@@ -11423,6 +11418,9 @@ class FormDialogComponent extends BaseComponent {
11423
11418
  if (viewHieght) {
11424
11419
  height = smallDevice ? '100%' : `${viewHieght + 100}px`;
11425
11420
  }
11421
+ if (viewWidth) {
11422
+ width = smallDevice ? '100%' : `${viewWidth}px`;
11423
+ }
11426
11424
  const modalSetting = BarsaApi.Common.Util.TryGetValue(this.formPanelCtrlr, 'Setting.View.CustomUi.Parameters.ModalSetting', null);
11427
11425
  let setting = {
11428
11426
  escKeyCloseable: false,