@tiba-spark/client-shared-lib 25.4.0-353 → 25.4.0-355

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.
@@ -479,4 +479,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
479
479
  ]
480
480
  }]
481
481
  }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { selectedDevice$: [], deviceStatus$: [] } });
482
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXN0YXR1cy1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvY29tcG9uZW50cy9kZXZpY2UvZGV2aWNlLXN0YXR1cy9kZXZpY2Utc3RhdHVzLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxN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K0dBM2dCVSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwwR0FSMUIsRUFBRSwyREFLVixZQUFZLGlCQUhGLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs7QUFTbEM7SUFEQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO2tFQUNEO0FBR3ZDO0lBREMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO2dFQUNIOzRGQU5oQyx5QkFBeUI7a0JBVnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtpQkFDRjs2RUFJQyxlQUFlLE1BR2YsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhcHBNb2R1bGVBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi9hbmltYXRpb25zL3JvdXRlci10cmFuc2l0aW9uLmFuaW1hdGlvbic7XG5pbXBvcnQgeyBDb21BZ2dyZWdhdGVkU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvYWdncmVnYXRlZC1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBCaWxsRGlzcGVuc2VyU3RhdHVzVGV4dCB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2JpbGwtZGlzcGVuc2VyLmVudW0nO1xuaW1wb3J0IHsgQmlsbFZhbGlkYXRvclN0YXR1c1RleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9iaWxsLXZhbGlkYXRvci5lbnVtJztcbmltcG9ydCB7IEJ1dHRvblN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2J1dHRvbi5lbnVtJztcbmltcG9ydCB7IEJpbGxUeXBlVGV4dCwgQ2Fzc2V0dGVTdGF0dXNUZXh0IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY2Fzc2V0dGUuZW51bSc7XG5pbXBvcnQgeyBEZXZpY2VBY3Rpdml0eU1vZGUsIERldmljZUFjdGl2aXR5TW9kZVRleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kZXZpY2UtYWN0aXZpdHktbW9kZS5lbnVtJztcbmltcG9ydCB7IERldmljZUxvb3AgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kZXZpY2UtbG9vcC5lbnVtJztcbmltcG9ydCB7IERldmljZVByaW50ZXJTdGF0dXNUZXh0IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvZGV2aWNlLXByaW50ZXIuZW51bSc7XG5pbXBvcnQgeyBEaXBTd2l0Y2hTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kaXAtc3dpdGNoLmVudW0nO1xuaW1wb3J0IHsgRG9vclNlbnNvclN0YXR1cywgRG9vclN0YXR1c1RleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kb29yLmVudW0nO1xuaW1wb3J0IHsgQ29pblN0YXR1c1RleHQsIEhvcHBlclN0YXR1c1RleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9ob3BwZXIuZW51bSc7XG5pbXBvcnQgeyBJY29uc0hlbHBlciB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2ljb24uZW51bSc7XG5pbXBvcnQgeyBMYW5lUmVjb2duaXRpb25Nb2RlVHlwZVRleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9sYW5lLXJlY29nbml0aW9uLW1vZGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IExhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVUZXh0IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvbGFuZS1yZWNvZ25pdGlvbi1zdGF0dXMtdHlwZS5lbnVtJztcbmltcG9ydCB7IExvb3BTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9sb29wLmVudW0nO1xuaW1wb3J0IHsgUmVsYXlTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9yZWxheS5lbnVtJztcbmltcG9ydCB7IFN3YWxsb3dVbml0U3RhdHVzVGV4dCB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3N3YWxsb3ctdW5pdC5lbnVtJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUnO1xuaW1wb3J0IHsgRGVjaW1hbFRvQW1vdW50UGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2RlY2ltYWwtdG8tYW1vdW50LnBpcGUnO1xuaW1wb3J0IHsgRGVjaW1hbFRvQ3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZGVjaW1hbC10by1jdXJyZW5jeS5waXBlJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZWRTdGF0dXMsIEJhcnJpZXJEdG8sIEJhcnJpZXJTdGF0ZSwgQmlsbERpc3BlbnNlckR0bywgQmlsbERpc3BlbnNlclN0YXR1cywgQmlsbER0bywgQmlsbFR5cGUsIEJpbGxWYWxpZGF0b3JEdG8sXG4gIEJpbGxWYWxpZGF0b3JTdGF0dXMsIENhc3NldHRlRHRvLCBDYXNzZXR0ZVN0YXR1cywgQ29pbkR0bywgQ29pbkluTGFuZUR0bywgQ29pblN0YXR1cywgRGV2aWNlRHRvLCBEZXZpY2VQcmludGVyU3RhdHVzLFxuICBEZXZpY2VTdGF0dXNEdG8sIERvb3JTdGF0dXMsIEhvcHBlckR0bywgSG9wcGVyU3RhdHVzLCBMYW5lUmVjb2duaXRpb25Nb2RlVHlwZSwgTGFuZVJlY29nbml0aW9uU3RhdHVzVHlwZSwgU3dhbGxvd1VuaXREdG8sIFN3YWxsb3dVbml0U3RhdHVzLCBTd2FsbG93VW5pdFR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS1wcm94eS9ycGMtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS1kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc0RldmljZUFjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjdGl2ZS1kZXZpY2Utc3RhdHVzLnV0aWwnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGV2aWNlSXRlbVN0YXR1c2VzIH0gZnJvbSAnLi9kZXZpY2UtaXRlbS1zdGF0dXMudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0Yi1kZXZpY2UtYmFzZS1zdGF0dXNdJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW2FwcE1vZHVsZUFuaW1hdGlvbigpXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VTdGF0dXNCYXNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFNlbGVjdChQYXJrTWFuYWdlclN0YXRlLnNlbGVjdGVkRGV2aWNlKVxuICBzZWxlY3RlZERldmljZSQ6IE9ic2VydmFibGU8RGV2aWNlRHRvPjtcblxuICBAU2VsZWN0KFBhcmtNYW5hZ2VyU3RhdGUuc2VsZWN0ZWREZXZpY2VTdGF0dXMpXG4gIGRldmljZVN0YXR1cyQ6IE9ic2VydmFibGU8RGV2aWNlU3RhdHVzRHRvPjtcblxuICBEZXZpY2VMb29wID0gRGV2aWNlTG9vcDtcbiAgSWNvbnNIZWxwZXIgPSBJY29uc0hlbHBlcjtcblxuICBkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bztcbiAgc2VsZWN0ZWREZXZpY2U6IERldmljZUR0bztcbiAgZGVjaW1hbFRvQ3VycmVuY3lQaXBlOiBEZWNpbWFsVG9DdXJyZW5jeVBpcGU7XG4gIGRlY2ltYWxUb0Ftb3VudFBpcGU6IERlY2ltYWxUb0Ftb3VudFBpcGU7XG4gIGlzU2VsZWN0ZWREZXZpY2VNQ0Nvbm5lY3RlZDogYm9vbGVhbjtcbiAgYWN0aXZlU3RhdHVzOiBib29sZWFuO1xuICBpc1N0YXR1c1N1cHBvcnRlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNNdWx0aVBhcms6IGJvb2xlYW47XG4gIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2U7XG4gIHB1YmxpYyBhcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZTtcbiAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHB1YmxpYyBzdG9yZTogU3RvcmU7XG4gIHB1YmxpYyBkZXZpY2VTZXJ2aWNlOiBCYXNlRGV2aWNlU2VydmljZTtcbiAgcHVibGljIHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zOiB7XG4gICAgc2VjdGlvbjE6IERldmljZUl0ZW1TdGF0dXNlc1tdLFxuICAgIHNlY3Rpb24yOiBEZXZpY2VJdGVtU3RhdHVzZXNbXSxcbiAgICBzZWN0aW9uMzogRGV2aWNlSXRlbVN0YXR1c2VzW10sXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50cmFuc2xhdGUgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLmFwcFNldHRpbmdzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcFNldHRpbmdzU2VydmljZSk7XG4gICAgdGhpcy5jZHIgPSB0aGlzLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgdGhpcy5zdG9yZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFN0b3JlKTtcbiAgICB0aGlzLmRldmljZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChCYXNlRGV2aWNlU2VydmljZSk7XG4gICAgdGhpcy5kZWNpbWFsVG9DdXJyZW5jeVBpcGUgPSBuZXcgRGVjaW1hbFRvQ3VycmVuY3lQaXBlKCk7XG4gICAgdGhpcy5kZWNpbWFsVG9BbW91bnRQaXBlID0gbmV3IERlY2ltYWxUb0Ftb3VudFBpcGUoKTtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpO1xuICAgIHRoaXMuZGV2aWNlU3RhdHVzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmU6IGFueSwgY3VycjogYW55KSA9PiBKU09OLnN0cmluZ2lmeShwcmUpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKSksXG4gICAgKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuc2VsZWN0ZWREZXZpY2UpO1xuICAgICAgdGhpcy5kZXZpY2VTdGF0dXMgPSByZXM7XG4gICAgICB0aGlzLnNhbml0aXplQ29pbnNEYXRhKCk7XG4gICAgICB0aGlzLmFjdGl2ZVN0YXR1cyA9IGlzRGV2aWNlQWN0aXZlKHRoaXMuc2VsZWN0ZWREZXZpY2UpXG4gICAgICB0aGlzLnpvbmVOYW1lID0gdGhpcy5zZWxlY3RlZERldmljZT8uem9uZT8ubmFtZTtcbiAgICAgIHRoaXMuaXNTZWxlY3RlZERldmljZU1DQ29ubmVjdGVkID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW3RoaXMuc2VsZWN0ZWREZXZpY2U/LnBhcmtJRF0/LmlzTWFpbkNvbnRyb2xsZXJDb25uZWN0ZWQ7XG4gICAgICB0aGlzLmlzU3RhdHVzU3VwcG9ydGVkID0gdGhpcy5kZXZpY2VTZXJ2aWNlLmlzU3RhdHVzU3VwcG9ydGVkKHJlcz8udHlwZSk7XG5cbiAgICAgIGNvbnN0IGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucyA9IHtcbiAgICAgICAgc2VjdGlvbjE6IFtdLFxuICAgICAgICBzZWN0aW9uMjogW10sXG4gICAgICAgIHNlY3Rpb24zOiBbXSxcbiAgICAgIH07XG5cbiAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMS5wdXNoKHtcbiAgICAgICAga2V5OiB0aGlzLkwuY29tLFxuICAgICAgICBzdGF0dXNJY29uOiB0aGlzLmdldENvbVN0YXR1c0ljb24ocmVzKSxcbiAgICAgICAgdGV4dDogdGhpcy5nZXRUcmFuc2xhdGVkQ29tU3RhdHVzVGV4dChyZXMsIGZhbHNlKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZ2V0ZERldmljZUNvbVN0YXR1c1ZhbHVlKHJlcylcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5kaXNwbGF5SXNQcm9wRXhpc3RzKHJlcywgJ2Rvb3JDb250cm9sbGVyQ29ubmVjdGVkJykpIHtcbiAgICAgICAgZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zLnNlY3Rpb24xLnB1c2goe1xuICAgICAgICAgIGtleTogdGhpcy5MLmludGVybmFsX2NvbSxcbiAgICAgICAgICBzdGF0dXNJY29uOiB0aGlzLmdldEludGVybmFsQ29tU3RhdHVzTnVtKHJlcy5kb29yQ29udHJvbGxlckNvbm5lY3RlZClcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW50ZXJzID0gdGhpcy5nZXRQcmludGVycyhyZXMpO1xuICAgICAgZm9yIChjb25zdCBwcmludGVyIG9mIHByaW50ZXJzKSB7XG4gICAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMS5wdXNoKHtcbiAgICAgICAgICBrZXk6IHRoaXMuTC5wcmludGVyLFxuICAgICAgICAgIHN0YXR1c0ljb246IHRoaXMuZ2V0UHJpbnRlclN0YXR1c051bShwcmludGVyLnN0YXRlKSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRQcmludGVyU3RhdHVzVGV4dChwcmludGVyLnN0YXRlKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc3BsYXlJc1Byb3BFeGlzdHMocmVzLCAnbW9kZScpKSB7XG4gICAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMS5wdXNoKHtcbiAgICAgICAgICBrZXk6IHRoaXMuTC5hY2Nlc3NfbW9kZSxcbiAgICAgICAgICBpY29uOiBJY29uc0hlbHBlci5hY2Nlc3NfbW9kZSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRBY2Nlc3NNb2RlU3RhdHVzVGV4dChyZXMubW9kZSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNwbGF5QmFycmllcnMocmVzKSkge1xuICAgICAgICBjb25zdCBiYXJyaWVycyA9IHRoaXMuZ2V0QmFycmllcnMocmVzKTtcbiAgICAgICAgZm9yIChjb25zdCBiYXJyaWVyIG9mIGJhcnJpZXJzKSB7XG4gICAgICAgICAgZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zLnNlY3Rpb24yLnB1c2goe1xuICAgICAgICAgICAga2V5OiB0aGlzLkwuZ2F0ZSxcbiAgICAgICAgICAgIHN0YXR1c0ljb246IHRoaXMuZ2V0QmFycmllclN0YXR1c051bShiYXJyaWVyLnN0YXRlKSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldEJhcnJpZXJTdGF0dXNUZXh0KGJhcnJpZXIuc3RhdGUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXM/Lmxvb3BzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzPy5sb29wcy5zbGljZSgwLCAyKS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHByZXNlbmNlID0gJy0gJyArIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5MLnByZXNlbmNlKTtcbiAgICAgICAgICBjb25zdCBzYWZldHkgPSAnLSAnICsgdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLkwuc2FmZXR5KTtcbiAgICAgICAgICBsZXQgdGV4dCA9IGAjJHtpICsgMX0ke2kgPT09IDAgPyBwcmVzZW5jZSA6IGkgPT09IDEgPyBzYWZldHkgOiAnJ31gO1xuXG4gICAgICAgICAgZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zLnNlY3Rpb24yLnB1c2goe1xuICAgICAgICAgICAga2V5OiB0aGlzLkwubG9vcCxcbiAgICAgICAgICAgIHN0YXR1c0ljb246IHRoaXMuZ2V0TG9vcFN0YXR1c051bShyZXMubG9vcHNbaV0uaXNDYXJPbiksXG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlzcGxheVN3YWxsb3dVbml0KHJlcykpIHtcbiAgICAgICAgY29uc3Qgc3dhbGxvd1VuaXQgPSB0aGlzLmdldFN3YWxsb3dVbml0KHJlcyk7XG4gICAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMi5wdXNoKHtcbiAgICAgICAgICBrZXk6IHRoaXMuTC5zd2FsbG93X3VuaXQsXG4gICAgICAgICAgc3RhdHVzSWNvbjogdGhpcy5nZXRTd2FsbG93VW5pdFN0YXR1c051bShzd2FsbG93VW5pdD8uc3RhdHVzKSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRTd2FsbG93VW5pdFN0YXR1c1RleHQoc3dhbGxvd1VuaXQ/LnN0YXR1cylcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zID0gZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc011bHRpUGFyayA9ICEhdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmlzTXVsdGlQYXJrKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXRkRGV2aWNlQ29tU3RhdHVzVmFsdWUoZGV2aWNlU3RhdHVzRGF0YTogRGV2aWNlU3RhdHVzRHRvKSB7XG4gICAgLy8gSWYgdGhlIGRldmljZSBpcyBhbiBNQyAoY29tbWlkID09PSAwKSB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSB0aGUgUGFyayBjb25uZWN0aW9uIGluc3RlYWQgb2YgdGhlIERldmljZVxuICAgIGxldCBzdGF0dXNWYWx1ZTogc3RyaW5nO1xuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXR1cyAmJiBkZXZpY2VTdGF0dXNEYXRhPy5jb21tSUQgIT09IDAgJiYgZGV2aWNlU3RhdHVzRGF0YT8uaXNDb25uZWN0ZWQgJiZcbiAgICAgICh0aGlzLmlzQmV0d2VlblJhbmdlKGRldmljZVN0YXR1c0RhdGE/LmNvbW11bmljYXRpb25QZXJjZW50YWdlLnRvU3RyaW5nKCksIDEsIDcwKSB8fCBkZXZpY2VTdGF0dXNEYXRhPy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSA+PSA3MSkpIHtcbiAgICAgIHN0YXR1c1ZhbHVlID0gZGV2aWNlU3RhdHVzRGF0YT8uY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgKyAnJSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c1ZhbHVlO1xuICB9XG5cbiAgZ2V0VHJhbnNsYXRlZENvbVN0YXR1c1RleHQoZGV2aWNlU3RhdHVzOiBEZXZpY2VTdGF0dXNEdG8sIGlzSGlnaExldmVsOiBib29sZWFuKSB7XG4gICAgbGV0IHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICBpZiAoIXRoaXMuYWN0aXZlU3RhdHVzKSB7XG4gICAgICBzdGF0dXNUZXh0ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLkwuaW5hY3RpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZXZpY2VDb21BZ2dyZWdhdGVkU3RhdHVzOiBDb21BZ2dyZWdhdGVkU3RhdHVzID0gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldERldmljZUNvbUFnZ3JlZ2F0ZWRTdGF0dXMoZGV2aWNlU3RhdHVzLCB0cnVlKTtcbiAgICAgIHN3aXRjaCAoZGV2aWNlQ29tQWdncmVnYXRlZFN0YXR1cykge1xuICAgICAgICBjYXNlIENvbUFnZ3JlZ2F0ZWRTdGF0dXMuT2s6XG4gICAgICAgIGNhc2UgQ29tQWdncmVnYXRlZFN0YXR1cy5XYXJuaW5nOlxuICAgICAgICAgIGlmIChpc0hpZ2hMZXZlbCAmJiBkZXZpY2VTdGF0dXM/LmNvbW1JRCAhPT0gMCkge1xuICAgICAgICAgICAgc3RhdHVzVGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5MLmNvbm5lY3RlZF92YWx1ZSwgeyB2YWx1ZTogZGV2aWNlU3RhdHVzPy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdHVzVGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5MLmNvbm5lY3RlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIENvbUFnZ3JlZ2F0ZWRTdGF0dXMuQ29tRXJyb3I6XG4gICAgICAgICAgc3RhdHVzVGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5MLmRpc2Nvbm5lY3RlZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGxheUlzUHJvcEV4aXN0cyhkZXZpY2U6IERldmljZVN0YXR1c0R0bywgcHJvcE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBkZXZpY2UgJiYgcHJvcE5hbWUgaW4gZGV2aWNlICYmIGRldmljZVtwcm9wTmFtZV0gIT09IG51bGwgJiYgZGV2aWNlW3Byb3BOYW1lXSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0Q29tU3RhdHVzSWNvbihkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykge1xuICAgIHJldHVybiB0aGlzLmRldmljZVNlcnZpY2UuZ2V0RGV2aWNlQ29tQWdncmVnYXRlZFN0YXR1cyhkZXZpY2VTdGF0dXMsIHRydWUpO1xuICB9XG5cbiAgZ2V0TGFuZVJlY29nbml0aW9uTW9kZVR5cGVUZXh0KG1vZGVUeXBlOiBMYW5lUmVjb2duaXRpb25Nb2RlVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExhbmVSZWNvZ25pdGlvbk1vZGVUeXBlVGV4dFtMYW5lUmVjb2duaXRpb25Nb2RlVHlwZVttb2RlVHlwZV1dO1xuICB9XG5cbiAgZ2V0TGFuZVJlY29nbml0aW9uU3RhdHVzVHlwZVN0YXR1c051bShzdGF0dXNUeXBlOiBMYW5lUmVjb2duaXRpb25TdGF0dXNUeXBlKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuTGFuZVJlY29nbml0aW9uW0xhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVbc3RhdHVzVHlwZV1dO1xuICB9XG5cbiAgZ2V0TGFuZVJlY29nbml0aW9uU3RhdHVzVHlwZVRleHQoc3RhdHVzVHlwZTogTGFuZVJlY29nbml0aW9uU3RhdHVzVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVUZXh0W0xhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVbc3RhdHVzVHlwZV1dO1xuICB9XG5cbiAgZ2V0UHJpbnRlcnMoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pIHtcbiAgICBpZiAoZGV2aWNlPy5wcmludGVyKSB7XG4gICAgICByZXR1cm4gW2RldmljZS5wcmludGVyXTtcbiAgICB9IGVsc2UgaWYgKGRldmljZT8ucHJpbnRlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBkZXZpY2U/LnByaW50ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlzQ29ubmVjdGVkVGV4dCA9IChpc0Nvbm5lY3RlZDogYm9vbGVhbik6IHN0cmluZyA9PiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGlzQ29ubmVjdGVkID8gdGhpcy5MLmNvbm5lY3RlZCA6IHRoaXMuTC5kaXNjb25uZWN0ZWQpO1xuXG4gIGdldE1DQWdncmVnYXRlZFN0YXR1cyA9IChpc1NlbGVjdGVkRGV2aWNlTUNDb25uZWN0ZWQ6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzID0+IGlzU2VsZWN0ZWREZXZpY2VNQ0Nvbm5lY3RlZCA/IEFnZ3JlZ2F0ZWRTdGF0dXMuT0sgOiBBZ2dyZWdhdGVkU3RhdHVzLkVSUk9SO1xuXG4gIGdldFByaW50ZXJTdGF0dXNOdW0ocHJpbnRlclN0YXR1czogRGV2aWNlUHJpbnRlclN0YXR1cyk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLlByaW50ZXJbRGV2aWNlUHJpbnRlclN0YXR1c1twcmludGVyU3RhdHVzXV07XG4gIH1cblxuICBnZXRQcmludGVyU3RhdHVzVGV4dChwcmludGVyU3RhdHVzOiBEZXZpY2VQcmludGVyU3RhdHVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRGV2aWNlUHJpbnRlclN0YXR1c1RleHRbRGV2aWNlUHJpbnRlclN0YXR1c1twcmludGVyU3RhdHVzXV07XG4gIH1cblxuICBnZXRBY2Nlc3NNb2RlU3RhdHVzVGV4dChhY2Nlc3NNb2RlU3RhdHVzOiBEZXZpY2VBY3Rpdml0eU1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBEZXZpY2VBY3Rpdml0eU1vZGVUZXh0W0RldmljZUFjdGl2aXR5TW9kZVthY2Nlc3NNb2RlU3RhdHVzXV07XG4gIH1cblxuICBkaXNwbGF5QmFycmllcnMoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFkZXZpY2U/LmJhcnJpZXIgfHwgISFkZXZpY2U/LmJhcnJpZXJzPy5sZW5ndGg7XG4gIH1cblxuICBnZXRCYXJyaWVycyhkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IEJhcnJpZXJEdG9bXSB7XG4gICAgaWYgKGRldmljZT8uYmFycmllcikge1xuICAgICAgcmV0dXJuIFtkZXZpY2UuYmFycmllcl07XG4gICAgfSBlbHNlIGlmIChkZXZpY2U/LmJhcnJpZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5iYXJyaWVycztcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRCYXJyaWVyU3RhdHVzTnVtKGJhcnJpZXJTdGF0ZTogQmFycmllclN0YXRlKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQmFycmllcltCYXJyaWVyU3RhdGVbYmFycmllclN0YXRlXV07XG4gIH1cblxuICBnZXRCYXJyaWVyU3RhdHVzVGV4dChiYXJyaWVyU3RhdGU6IEJhcnJpZXJTdGF0ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChiYXJyaWVyU3RhdGUpIHtcbiAgICAgIGNhc2UgQmFycmllclN0YXRlLkJyb2tlbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuTC5hcm1fYnJva2VuO1xuICAgICAgY2FzZSBCYXJyaWVyU3RhdGUuT3BlbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuTC51cDtcbiAgICAgIGNhc2UgQmFycmllclN0YXRlLkNsb3NlOlxuICAgICAgICByZXR1cm4gdGhpcy5MLmRvd247XG4gICAgfVxuICB9XG5cbiAgZ2V0U3dhbGxvd1VuaXRTdGF0dXNOdW0oc3dhbGxvd1VuaXRTdGF0dXM6IFN3YWxsb3dVbml0U3RhdHVzKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuU3dhbGxvd1VuaXRbU3dhbGxvd1VuaXRTdGF0dXNbc3dhbGxvd1VuaXRTdGF0dXNdXTtcbiAgfVxuXG4gIGdldFN3YWxsb3dVbml0U3RhdHVzVGV4dChzd2FsbG93VW5pdFN0YXR1czogU3dhbGxvd1VuaXRTdGF0dXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBTd2FsbG93VW5pdFN0YXR1c1RleHRbU3dhbGxvd1VuaXRTdGF0dXNbc3dhbGxvd1VuaXRTdGF0dXNdXTtcbiAgfVxuXG4gIGdldENhc3NldHRlc1N0YXR1c051bShzdGF0dXM6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBjYXNzZXR0ZXNTdGF0dXMgPSBzdGF0dXMgPyBDYXNzZXR0ZVN0YXR1cy5Jbk9yZGVyIDogQ2Fzc2V0dGVTdGF0dXMuRW1wdHk7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQmlsbENhc3NldHRlW0Nhc3NldHRlU3RhdHVzW2Nhc3NldHRlc1N0YXR1c11dO1xuICB9XG5cbiAgZ2V0SG9wcGVyc1N0YXR1c051bShzdGF0dXM6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBob3BwZXJTdGF0dXMgPSBzdGF0dXMgPyBIb3BwZXJTdGF0dXMuT0sgOiBIb3BwZXJTdGF0dXMuRXJyb3I7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuSG9wcGVyW0hvcHBlclN0YXR1c1tob3BwZXJTdGF0dXNdXTtcbiAgfVxuXG4gIGNhbGNIb3BwZXJWYWx1ZXMoaG9wcGVyczogSG9wcGVyRHRvW10pIHtcbiAgICBjb25zdCBwcmVzZXRUb3RhbHMgPSB7IGFtb3VudDogMCwgdmFsdWU6IDAgfTtcbiAgICBjb25zdCBob3BwZXJUb3RhbHMgPSBob3BwZXJzPy5yZWR1Y2UoKHRvdGFscywgaG9wcGVyKSA9PiB7XG4gICAgICB0b3RhbHMudmFsdWUgKz0gKCgoaG9wcGVyPy5jb2luPy52YWx1ZSB8fCAwKSAqIChob3BwZXI/LmNvaW4/LmNvdW50ZXIgfHwgMCkpIC8gMTAwKTtcbiAgICAgIHRvdGFscy5hbW91bnQgKz0gKGhvcHBlcj8uY29pbj8uY291bnRlciB8fCAwKTtcbiAgICAgIHJldHVybiB0b3RhbHM7XG4gICAgfSwgcHJlc2V0VG90YWxzKTtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGVjaW1hbFZhbHVlKGhvcHBlclRvdGFscyk7XG4gIH1cblxuICBjYWxjQ29pblZhbHVlcyhjb2luc0luTGFuZTogQ29pbkluTGFuZUR0bykge1xuICAgIGNvbnN0IHByZXNldFRvdGFscyA9IHsgYW1vdW50OiAwLCB2YWx1ZTogMCB9O1xuICAgIGNvbnN0IGNpc1RvdGFscyA9IGNvaW5zSW5MYW5lPy5jb2lucz8ucmVkdWNlKCh0b3RhbHMsIGNvaW4pID0+IHtcbiAgICAgIHRvdGFscy52YWx1ZSArPSAoKChjb2luPy52YWx1ZSB8fCAwKSAqIChjb2luPy5jb3VudGVyIHx8IDApKSAvIDEwMCk7XG4gICAgICB0b3RhbHMuYW1vdW50ICs9IChjb2luPy5jb3VudGVyIHx8IDApO1xuICAgICAgcmV0dXJuIHRvdGFscztcbiAgICB9LCBwcmVzZXRUb3RhbHMpO1xuICAgIHJldHVybiB0aGlzLmNvbnZlcnREZWNpbWFsVmFsdWUoY2lzVG90YWxzKTtcbiAgfVxuXG4gIGNhbGNCaWxsc1NhZmVWYWx1ZXMoYmlsbHM6IEJpbGxEdG9bXSkge1xuICAgIGNvbnN0IHByZXNldFRvdGFscyA9IHsgYW1vdW50OiAwLCB2YWx1ZTogMCB9O1xuICAgIGNvbnN0IGJpbGxTYWZlVG90YWxzID0gYmlsbHM/LnJlZHVjZSgodG90YWxzLCBiaWxsKSA9PiB7XG4gICAgICB0b3RhbHMudmFsdWUgKz0gKCsodGhpcy5nZXRCaWxsVHlwZVZhbHVlKGJpbGwudHlwZSkgfHwgMCkgKiAoYmlsbD8uYW1vdW50IHx8IDApKTtcbiAgICAgIHRvdGFscy5hbW91bnQgKz0gKGJpbGw/LmFtb3VudCB8fCAwKTtcbiAgICAgIHJldHVybiB0b3RhbHM7XG4gICAgfSwgcHJlc2V0VG90YWxzKTtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGVjaW1hbFZhbHVlKGJpbGxTYWZlVG90YWxzKTtcbiAgfVxuXG4gIGNhbGNDb2luc1NhZmVWYWx1ZXMoY29pbnM6IENvaW5EdG9bXSkge1xuICAgIGNvbnN0IHByZXNldFRvdGFscyA9IHsgYW1vdW50OiAwLCB2YWx1ZTogMCB9O1xuICAgIGNvbnN0IGNvaW5TYXZlVG90YWxzID0gY29pbnM/LnJlZHVjZSgodG90YWxzLCBjb2luKSA9PiB7XG4gICAgICB0b3RhbHMudmFsdWUgKz0gKCgoY29pbj8udmFsdWUgfHwgMCkgKiAoY29pbj8uY291bnRlciB8fCAwKSkgLyAxMDApO1xuICAgICAgdG90YWxzLmFtb3VudCArPSAoY29pbj8uY291bnRlciB8fCAwKTtcbiAgICAgIHJldHVybiB0b3RhbHM7XG4gICAgfSwgcHJlc2V0VG90YWxzKTtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGVjaW1hbFZhbHVlKGNvaW5TYXZlVG90YWxzKTtcbiAgfVxuXG4gIGNvbnZlcnREZWNpbWFsVmFsdWUoY29pblNhdmVUb3RhbHMpIHtcbiAgICBjb25zdCBhbW91bnQgPSBgJHt0aGlzLmRlY2ltYWxUb0Ftb3VudFBpcGUudHJhbnNmb3JtKGNvaW5TYXZlVG90YWxzPy5hbW91bnQpfWA7XG4gICAgY29uc3QgdmFsdWUgPSBgJHt0aGlzLmRlY2ltYWxUb0N1cnJlbmN5UGlwZS50cmFuc2Zvcm0oY29pblNhdmVUb3RhbHM/LnZhbHVlKX1gO1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlcyA9IHtcbiAgICAgIGFtb3VudCxcbiAgICAgIHZhbHVlXG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0ZWRWYWx1ZXM7XG4gIH1cblxuICBnZXRCaWxsVHlwZVZhbHVlVGV4dChiaWxsVHlwZVZhbHVlOiBCaWxsVHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZSA9IEJpbGxUeXBlW2JpbGxUeXBlVmFsdWVdO1xuXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLkwudW5rbm93bik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxUb0N1cnJlbmN5UGlwZS50cmFuc2Zvcm0oQmlsbFR5cGVUZXh0W0JpbGxUeXBlW2JpbGxUeXBlVmFsdWVdXSk7XG4gIH1cblxuICBnZXRCaWxsVHlwZVZhbHVlKGJpbGxUeXBlVmFsdWU6IEJpbGxUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQmlsbFR5cGVUZXh0W0JpbGxUeXBlW2JpbGxUeXBlVmFsdWVdXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNCZXR3ZWVuUmFuZ2UoaW5wdXQ6IHN0cmluZywgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlucHV0VmFsID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICByZXR1cm4gaW5wdXRWYWwgPj0gbWluVmFsdWUgJiYgaW5wdXRWYWwgPD0gbWF4VmFsdWU7XG4gIH1cblxuICBnZXRJbnRlcm5hbENvbVN0YXR1c051bShzZWNvbmRhcnlDb21TdGF0dXM6IGJvb2xlYW4pOiBDb21BZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBjb21BZ2dyZWdhdGVkU3RhdHVzID0gc2Vjb25kYXJ5Q29tU3RhdHVzID8gQ29tQWdncmVnYXRlZFN0YXR1cy5PayA6IENvbUFnZ3JlZ2F0ZWRTdGF0dXMuQ29tRXJyb3I7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQ29tW0NvbUFnZ3JlZ2F0ZWRTdGF0dXNbY29tQWdncmVnYXRlZFN0YXR1c11dO1xuICB9XG5cbiAgZGlzcGxheVN3YWxsb3dVbml0KGRldmljZTogRGV2aWNlU3RhdHVzRHRvKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRldmljZT8uc3dhbGxvd1VuaXQ/LnR5cGUgPT09IFN3YWxsb3dVbml0VHlwZS5UaWNrZXQgfHxcbiAgICAgICEhZGV2aWNlPy5zd2FsbG93VW5pdHM/LmZpbHRlcihzID0+IHMudHlwZSA9PT0gU3dhbGxvd1VuaXRUeXBlLlRpY2tldCkubGVuZ3RoO1xuICB9XG5cbiAgZ2V0U3dhbGxvd1VuaXQoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBTd2FsbG93VW5pdER0byB7XG4gICAgaWYgKGRldmljZT8uc3dhbGxvd1VuaXQpIHtcbiAgICAgIHJldHVybiBkZXZpY2Uuc3dhbGxvd1VuaXQ7XG4gICAgfSBlbHNlIGlmIChkZXZpY2U/LnN3YWxsb3dVbml0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uc3dhbGxvd1VuaXRzPy5maW5kKHMgPT4gcy50eXBlID09PSBTd2FsbG93VW5pdFR5cGUuVGlja2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldERvb3JTdGF0dXNOdW0oZG9vclN0YXR1czogRG9vclN0YXR1cyk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkRvb3JbRG9vclN0YXR1c1tkb29yU3RhdHVzXV07XG4gIH1cblxuICBnZXREb29yU3RhdHVzVGV4dChkb29yU3RhdHVzOiBEb29yU3RhdHVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRG9vclN0YXR1c1RleHRbRG9vclN0YXR1c1tkb29yU3RhdHVzXV07XG4gIH1cblxuICBnZXRMb29wU3RhdHVzTnVtKHN0YXR1czogYm9vbGVhbik6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGNvbnN0IGxvb3BTdGF0dXMgPSBzdGF0dXMgPyBMb29wU3RhdHVzLk9uIDogTG9vcFN0YXR1cy5PZmY7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuTG9vcFtMb29wU3RhdHVzW2xvb3BTdGF0dXNdXTtcbiAgfVxuXG4gIGdldERvb3JTZW5zb3JTdGF0dXNOdW0oc3RhdHVzOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgY29uc3Qgc2Vuc29yU3RhdHVzID0gc3RhdHVzID8gRG9vclNlbnNvclN0YXR1cy5PbiA6IERvb3JTZW5zb3JTdGF0dXMuT2ZmO1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkRvb3JTZW5zb3JbRG9vclNlbnNvclN0YXR1c1tzZW5zb3JTdGF0dXNdXTtcbiAgfVxuXG4gIGdldFJlbGF5U3RhdHVzTnVtKHN0YXR1czogYm9vbGVhbik6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGNvbnN0IHJlbGF5U3RhdHVzID0gc3RhdHVzID8gUmVsYXlTdGF0dXMuT24gOiBSZWxheVN0YXR1cy5PZmY7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuUmVsYXlbUmVsYXlTdGF0dXNbcmVsYXlTdGF0dXNdXTtcbiAgfVxuXG4gIGdldEJ1dHRvblN0YXR1c051bShzdGF0dXM6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBidXR0b25TdGF0dXMgPSBzdGF0dXMgPyBCdXR0b25TdGF0dXMuT24gOiBCdXR0b25TdGF0dXMuT2ZmO1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkJ1dHRvbltCdXR0b25TdGF0dXNbYnV0dG9uU3RhdHVzXV07XG4gIH1cblxuICBnZXREaXBTd2l0Y2hTdGF0dXMoc3RhdHVzOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgY29uc3Qgc3dpdGNoU3RhdHVzID0gc3RhdHVzID8gRGlwU3dpdGNoU3RhdHVzLk9uIDogRGlwU3dpdGNoU3RhdHVzLk9mZjtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5EaXBTd2l0Y2hbRGlwU3dpdGNoU3RhdHVzW3N3aXRjaFN0YXR1c11dO1xuICB9XG5cbiAgZ2V0QmlsbENhc3NldHRlQXJyYXkoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBDYXNzZXR0ZUR0b1tdIHtcbiAgICBpZiAoZGV2aWNlPy5iaWxsUmVjeWNsZXI/LmNhc3NldHRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uYmlsbFJlY3ljbGVyPy5jYXNzZXR0ZXM7XG4gICAgfSBlbHNlIGlmIChkZXZpY2U/LmJpbGxEaXNwZW5zZXI/LmNhc3NldHRlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uYmlsbERpc3BlbnNlcj8uY2Fzc2V0dGVzO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRCaWxsQ2Fzc2V0dGVUb3RhbFZhbHVlKGRldmljZTogRGV2aWNlU3RhdHVzRHRvKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCaWxsQ2Fzc2V0dGVBcnJheShkZXZpY2UpLnJlZHVjZSgodG90YWxWYWx1ZSwgY2Fzc2V0dGUpID0+IHtcbiAgICAgIGlmICghY2Fzc2V0dGU/LmJpbGwpIHtcbiAgICAgICAgcmV0dXJuIHRvdGFsVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gKCsodGhpcy5nZXRCaWxsVHlwZVZhbHVlKGNhc3NldHRlLmJpbGwudHlwZSkgfHwgMCkgKiAoY2Fzc2V0dGUuYmlsbC5hbW91bnQgfHwgMCkpICsgdG90YWxWYWx1ZTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldEJpbGxDYXNzZXR0ZVN0YXR1c051bShiaWxsQ2Fzc2V0dGVTdGF0dXM6IENhc3NldHRlU3RhdHVzKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQmlsbENhc3NldHRlW0Nhc3NldHRlU3RhdHVzW2JpbGxDYXNzZXR0ZVN0YXR1c11dO1xuICB9XG5cbiAgZ2V0QmlsbENhc3NldHRlU3RhdHVzVGV4dChiaWxsQ2Fzc2V0dGVTdGF0dXM6IENhc3NldHRlU3RhdHVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ2Fzc2V0dGVTdGF0dXNUZXh0W0Nhc3NldHRlU3RhdHVzW2JpbGxDYXNzZXR0ZVN0YXR1c11dO1xuICB9XG5cbiAgZ2V0QmlsbFNhZmVBcnJheShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IEJpbGxEdG9bXSB7XG4gICAgaWYgKGRldmljZT8uYmlsbFJlY3ljbGVyPy5jZW50cmFsU2FmZT8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uYmlsbFJlY3ljbGVyPy5jZW50cmFsU2FmZTtcbiAgICB9IGVsc2UgaWYgKGRldmljZT8uYmlsbFZhbGlkYXRvcj8uYmlsbHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBkZXZpY2U/LmJpbGxWYWxpZGF0b3I/LmJpbGxzO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRCaWxsU2FmZVRvdGFsVmFsdWUoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJpbGxTYWZlQXJyYXkoZGV2aWNlKS5yZWR1Y2UoKHRvdGFsVmFsdWUsIGJpbGwpID0+IHtcbiAgICAgIGlmICghYmlsbD8uYW1vdW50KSB7XG4gICAgICAgIHJldHVybiB0b3RhbFZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICgrKHRoaXMuZ2V0QmlsbFR5cGVWYWx1ZShiaWxsLnR5cGUpIHx8IDApICogKGJpbGwuYW1vdW50IHx8IDApKSArIHRvdGFsVmFsdWU7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRCaWxsRGlzcGVuc2VyU3RhdHVzTnVtKGJpbGxEaXNwZW5zZXI6IEJpbGxEaXNwZW5zZXJEdG8pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBpZiAoIWJpbGxEaXNwZW5zZXIuaXNDb21tdW5pY2F0aW5nKSB7XG4gICAgICByZXR1cm4gQWdncmVnYXRlZFN0YXR1cy5FUlJPUjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQmlsbERpc3BlbnNlcltCaWxsRGlzcGVuc2VyU3RhdHVzW2JpbGxEaXNwZW5zZXIuZXJyb3JDb2RlXV07XG4gIH1cblxuICBnZXRCaWxsRGlzcGVuc2VyU3RhdHVzVGV4dChiaWxsRGlzcGVuc2VyOiBCaWxsRGlzcGVuc2VyRHRvKTogc3RyaW5nIHtcbiAgICBpZiAoIWJpbGxEaXNwZW5zZXIuaXNDb21tdW5pY2F0aW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5MLmRpc2Nvbm5lY3RlZDtcbiAgICB9XG4gICAgcmV0dXJuIEJpbGxEaXNwZW5zZXJTdGF0dXNUZXh0W0JpbGxEaXNwZW5zZXJTdGF0dXNbYmlsbERpc3BlbnNlci5lcnJvckNvZGVdXTtcbiAgfVxuXG4gIGdldEJpbGxWYWxpZGF0b3JTdGF0dXNOdW0oYmlsbFZhbGlkYXRvcjogQmlsbFZhbGlkYXRvckR0byk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGlmICghYmlsbFZhbGlkYXRvci5pc0NvbW11bmljYXRpbmcpIHtcbiAgICAgIHJldHVybiBBZ2dyZWdhdGVkU3RhdHVzLkVSUk9SO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5CaWxsVmFsaWRhdG9yW0JpbGxWYWxpZGF0b3JTdGF0dXNbYmlsbFZhbGlkYXRvci5zdGF0ZV1dO1xuICB9XG5cbiAgZ2V0QmlsbFZhbGlkYXRvclN0YXR1c1RleHQoYmlsbFZhbGlkYXRvcjogQmlsbFZhbGlkYXRvckR0byk6IHN0cmluZyB7XG4gICAgaWYgKCFiaWxsVmFsaWRhdG9yLmlzQ29tbXVuaWNhdGluZykge1xuICAgICAgcmV0dXJuIHRoaXMuTC5kaXNjb25uZWN0ZWQ7XG4gICAgfVxuICAgIHJldHVybiBCaWxsVmFsaWRhdG9yU3RhdHVzVGV4dFtCaWxsVmFsaWRhdG9yU3RhdHVzW2JpbGxWYWxpZGF0b3Iuc3RhdGVdXTtcbiAgfVxuXG4gIGdldEhvcHBlclRvdGFsVmFsdWUoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBudW1iZXIge1xuICAgIHJldHVybiBkZXZpY2U/LmhvcHBlcnMucmVkdWNlKCh0b3RhbFZhbHVlLCBob3BwZXIpID0+IHtcbiAgICAgIHJldHVybiAoKGhvcHBlcj8uY29pbj8udmFsdWUgfHwgMCkgKiAoaG9wcGVyPy5jb2luPy5jb3VudGVyIHx8IDApIC8gMTAwKSArIHRvdGFsVmFsdWU7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRIb3BwZXJTdGF0dXNOdW0oaG9wcGVyU3RhdHVzOiBIb3BwZXJTdGF0dXMpOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5Ib3BwZXJbSG9wcGVyU3RhdHVzW2hvcHBlclN0YXR1c11dO1xuICB9XG5cbiAgZ2V0SG9wcGVyU3RhdHVzVGV4dChob3BwZXJTdGF0dXM6IEhvcHBlclN0YXR1cyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEhvcHBlclN0YXR1c1RleHRbSG9wcGVyU3RhdHVzW2hvcHBlclN0YXR1c11dO1xuICB9XG5cbiAgZ2V0Q29pblRvdGFsVmFsdWUoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBudW1iZXIge1xuICAgIHJldHVybiBkZXZpY2U/LmNvaW5JbkxhbmU/LmNvaW5zLnJlZHVjZSgodG90YWxWYWx1ZSwgY29pbikgPT4ge1xuICAgICAgcmV0dXJuICgoY29pbj8udmFsdWUgfHwgMCkgKiAoY29pbj8uY291bnRlciB8fCAwKSAvIDEwMCkgKyB0b3RhbFZhbHVlO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0Q29pblN0YXR1c051bShpc0NvbW11bmljYXRpbmc6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBjb2luU3RhdHVzID0gaXNDb21tdW5pY2F0aW5nID8gQ29pblN0YXR1cy5PSyA6IENvaW5TdGF0dXMuRXJyb3I7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQ29pbkluTGFuZVtDb2luU3RhdHVzW2NvaW5TdGF0dXNdXTtcbiAgfVxuXG4gIGdldENvaW5TdGF0dXNUZXh0KGNvaW5TdGF0dXM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBjb2luU3RhdHVzID8gQ29pblN0YXR1c1RleHQuT0sgOiBDb2luU3RhdHVzVGV4dC5FcnJvcjtcbiAgfVxuXG4gIGdldENvaW5TYWZlQXJyYXkoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBDb2luRHRvW10ge1xuICAgIGlmIChkZXZpY2U/LmNlbnRyYWxTYWZlPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5jZW50cmFsU2FmZTtcbiAgICB9IGVsc2UgaWYgKGRldmljZT8uY29pbkluTGFuZT8uY2VudHJhbFNhZmU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBkZXZpY2U/LmNvaW5JbkxhbmU/LmNlbnRyYWxTYWZlO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRDb2luU2FmZVRvdGFsVmFsdWUoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldENvaW5TYWZlQXJyYXkoZGV2aWNlKS5yZWR1Y2UoKHRvdGFsVmFsdWUsIGNvaW4pID0+IHtcbiAgICAgIHJldHVybiAoKGNvaW4/LnZhbHVlIHx8IDApICogKGNvaW4/LmNvdW50ZXIgfHwgMCkgLyAxMDApICsgdG90YWxWYWx1ZTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGZvcm1hdENvaW5WYWx1ZShjb2luOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIC8vIENvaW5zIGFsd2F5cyBzYXZlZCBhZCBDZW50IGZvcm1hdFxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxUb0N1cnJlbmN5UGlwZS50cmFuc2Zvcm0oY29pbiAvIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIHNhbml0aXplQ29pbnNEYXRhKCkge1xuICAgIGlmICh0aGlzLmRldmljZVN0YXR1cykge1xuICAgICAgaWYgKHRoaXMuZGV2aWNlU3RhdHVzLmNvaW5JbkxhbmU/LmNvaW5zKSB7XG4gICAgICAgIC8vIHNldCBjb2lucyBvbmx5IHdpdGggZXhpc3RpbmcgdmFsdWVzIChncmVhdGVyIHRoYW4gMCksXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIHZhbHVlcywgY29pbnMgd2lsbCBiZSBhbiBlbXB0eSBhcnJheS5cbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ29pbnMgPSB0aGlzLmRldmljZVN0YXR1cy5jb2luSW5MYW5lLmNvaW5zLmZpbHRlcihjb2luID0+IGNvaW4udmFsdWUgPiAwIHx8IGNvaW4uY291bnRlciA+IDApO1xuICAgICAgICB0aGlzLmRldmljZVN0YXR1cy5jb2luSW5MYW5lLmNvaW5zID0gc2FuaXRpemVkQ29pbnM7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZXZpY2VTdGF0dXMuaG9wcGVycykge1xuICAgICAgICBjb25zdCBob3BwZXJzID0gdGhpcy5kZXZpY2VTdGF0dXMuaG9wcGVycyBhcyBIb3BwZXJEdG9bXTtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkSG9wcGVycyA9IGhvcHBlcnMuZmlsdGVyKGMgPT4gYy5jb2luLmNvdW50ZXIgPiAwIHx8IGMuY29pbi52YWx1ZSA+IDApO1xuICAgICAgICB0aGlzLmRldmljZVN0YXR1cy5ob3BwZXJzID0gc2FuaXRpemVkSG9wcGVycztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
482
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXN0YXR1cy1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvY29tcG9uZW50cy9kZXZpY2UvZGV2aWNlLXN0YXR1cy9kZXZpY2Utc3RhdHVzLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxN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K0dBM2dCVSx5QkFBeUI7bUdBQXpCLHlCQUF5QiwwR0FSMUIsRUFBRSwyREFLVixZQUFZLGlCQUhGLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs7QUFTbEM7SUFEQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO2tFQUNEO0FBR3ZDO0lBREMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO2dFQUNIOzRGQU5oQyx5QkFBeUI7a0JBVnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtpQkFDRjs2RUFJQyxlQUFlLE1BR2YsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhcHBNb2R1bGVBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi9hbmltYXRpb25zL3JvdXRlci10cmFuc2l0aW9uLmFuaW1hdGlvbic7XG5pbXBvcnQgeyBDb21BZ2dyZWdhdGVkU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvYWdncmVnYXRlZC1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBCaWxsRGlzcGVuc2VyU3RhdHVzVGV4dCB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2JpbGwtZGlzcGVuc2VyLmVudW0nO1xuaW1wb3J0IHsgQmlsbFZhbGlkYXRvclN0YXR1c1RleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9iaWxsLXZhbGlkYXRvci5lbnVtJztcbmltcG9ydCB7IEJ1dHRvblN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2J1dHRvbi5lbnVtJztcbmltcG9ydCB7IEJpbGxUeXBlVGV4dCwgQ2Fzc2V0dGVTdGF0dXNUZXh0IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY2Fzc2V0dGUuZW51bSc7XG5pbXBvcnQgeyBEZXZpY2VBY3Rpdml0eU1vZGUsIERldmljZUFjdGl2aXR5TW9kZVRleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kZXZpY2UtYWN0aXZpdHktbW9kZS5lbnVtJztcbmltcG9ydCB7IERldmljZUxvb3AgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kZXZpY2UtbG9vcC5lbnVtJztcbmltcG9ydCB7IERldmljZVByaW50ZXJTdGF0dXNUZXh0IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvZGV2aWNlLXByaW50ZXIuZW51bSc7XG5pbXBvcnQgeyBEaXBTd2l0Y2hTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kaXAtc3dpdGNoLmVudW0nO1xuaW1wb3J0IHsgRG9vclNlbnNvclN0YXR1cywgRG9vclN0YXR1c1RleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9kb29yLmVudW0nO1xuaW1wb3J0IHsgQ29pblN0YXR1c1RleHQsIEhvcHBlclN0YXR1c1RleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9ob3BwZXIuZW51bSc7XG5pbXBvcnQgeyBJY29uc0hlbHBlciB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2ljb24uZW51bSc7XG5pbXBvcnQgeyBMYW5lUmVjb2duaXRpb25Nb2RlVHlwZVRleHQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9sYW5lLXJlY29nbml0aW9uLW1vZGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IExhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVUZXh0IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvbGFuZS1yZWNvZ25pdGlvbi1zdGF0dXMtdHlwZS5lbnVtJztcbmltcG9ydCB7IExvb3BTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9sb29wLmVudW0nO1xuaW1wb3J0IHsgUmVsYXlTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9yZWxheS5lbnVtJztcbmltcG9ydCB7IFN3YWxsb3dVbml0U3RhdHVzVGV4dCB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3N3YWxsb3ctdW5pdC5lbnVtJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUnO1xuaW1wb3J0IHsgRGVjaW1hbFRvQW1vdW50UGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2RlY2ltYWwtdG8tYW1vdW50LnBpcGUnO1xuaW1wb3J0IHsgRGVjaW1hbFRvQ3VycmVuY3lQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZGVjaW1hbC10by1jdXJyZW5jeS5waXBlJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZWRTdGF0dXMsIEJhcnJpZXJEdG8sIEJhcnJpZXJTdGF0ZSwgQmlsbERpc3BlbnNlckR0bywgQmlsbERpc3BlbnNlclN0YXR1cywgQmlsbER0bywgQmlsbFR5cGUsIEJpbGxWYWxpZGF0b3JEdG8sXG4gIEJpbGxWYWxpZGF0b3JTdGF0dXMsIENhc3NldHRlRHRvLCBDYXNzZXR0ZVN0YXR1cywgQ29pbkR0bywgQ29pbkluTGFuZUR0bywgQ29pblN0YXR1cywgRGV2aWNlRHRvLCBEZXZpY2VQcmludGVyU3RhdHVzLFxuICBEZXZpY2VTdGF0dXNEdG8sIERvb3JTdGF0dXMsIEhvcHBlckR0bywgSG9wcGVyU3RhdHVzLCBMYW5lUmVjb2duaXRpb25Nb2RlVHlwZSwgTGFuZVJlY29nbml0aW9uU3RhdHVzVHlwZSwgU3dhbGxvd1VuaXREdG8sIFN3YWxsb3dVbml0U3RhdHVzLCBTd2FsbG93VW5pdFR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS1wcm94eS9ycGMtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS1kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc0RldmljZUFjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjdGl2ZS1kZXZpY2Utc3RhdHVzLnV0aWwnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGV2aWNlSXRlbVN0YXR1c2VzIH0gZnJvbSAnLi9kZXZpY2UtaXRlbS1zdGF0dXMudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0Yi1kZXZpY2UtYmFzZS1zdGF0dXNdJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW2FwcE1vZHVsZUFuaW1hdGlvbigpXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VTdGF0dXNCYXNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFNlbGVjdChQYXJrTWFuYWdlclN0YXRlLnNlbGVjdGVkRGV2aWNlKVxuICBzZWxlY3RlZERldmljZSQ6IE9ic2VydmFibGU8RGV2aWNlRHRvPjtcblxuICBAU2VsZWN0KFBhcmtNYW5hZ2VyU3RhdGUuc2VsZWN0ZWREZXZpY2VTdGF0dXMpXG4gIGRldmljZVN0YXR1cyQ6IE9ic2VydmFibGU8RGV2aWNlU3RhdHVzRHRvPjtcblxuICBEZXZpY2VMb29wID0gRGV2aWNlTG9vcDtcbiAgSWNvbnNIZWxwZXIgPSBJY29uc0hlbHBlcjtcblxuICBkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bztcbiAgc2VsZWN0ZWREZXZpY2U6IERldmljZUR0bztcbiAgZGVjaW1hbFRvQ3VycmVuY3lQaXBlOiBEZWNpbWFsVG9DdXJyZW5jeVBpcGU7XG4gIGRlY2ltYWxUb0Ftb3VudFBpcGU6IERlY2ltYWxUb0Ftb3VudFBpcGU7XG4gIGlzU2VsZWN0ZWREZXZpY2VNQ0Nvbm5lY3RlZDogYm9vbGVhbjtcbiAgYWN0aXZlU3RhdHVzOiBib29sZWFuO1xuICBpc1N0YXR1c1N1cHBvcnRlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNNdWx0aVBhcms6IGJvb2xlYW47XG4gIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2U7XG4gIHB1YmxpYyBhcHBTZXR0aW5nc1NlcnZpY2U6IEFwcFNldHRpbmdzU2VydmljZTtcbiAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHB1YmxpYyBzdG9yZTogU3RvcmU7XG4gIHB1YmxpYyBkZXZpY2VTZXJ2aWNlOiBCYXNlRGV2aWNlU2VydmljZTtcbiAgcHVibGljIHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgZGV2aWNlSXRlbVN0YXR1c1NlY3Rpb25zOiB7XG4gICAgc2VjdGlvbjE6IERldmljZUl0ZW1TdGF0dXNlc1tdLFxuICAgIHNlY3Rpb24yOiBEZXZpY2VJdGVtU3RhdHVzZXNbXSxcbiAgICBzZWN0aW9uMzogRGV2aWNlSXRlbVN0YXR1c2VzW10sXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50cmFuc2xhdGUgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLmFwcFNldHRpbmdzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcFNldHRpbmdzU2VydmljZSk7XG4gICAgdGhpcy5jZHIgPSB0aGlzLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgdGhpcy5zdG9yZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFN0b3JlKTtcbiAgICB0aGlzLmRldmljZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChCYXNlRGV2aWNlU2VydmljZSk7XG4gICAgdGhpcy5kZWNpbWFsVG9DdXJyZW5jeVBpcGUgPSBuZXcgRGVjaW1hbFRvQ3VycmVuY3lQaXBlKCk7XG4gICAgdGhpcy5kZWNpbWFsVG9BbW91bnRQaXBlID0gbmV3IERlY2ltYWxUb0Ftb3VudFBpcGUoKTtcbiAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIGNvbnN0IGZhY2lsaXR5RGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5mYWNpbGl0eURpY3Rpb25hcnkpO1xuICAgIHRoaXMuZGV2aWNlU3RhdHVzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmU6IGFueSwgY3VycjogYW55KSA9PiBKU09OLnN0cmluZ2lmeShwcmUpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKSksXG4gICAgKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuc2VsZWN0ZWREZXZpY2UpO1xuICAgICAgdGhpcy5kZXZpY2VTdGF0dXMgPSByZXM7XG4gICAgICB0aGlzLnNhbml0aXplQ29pbnNEYXRhKCk7XG4gICAgICB0aGlzLmFjdGl2ZVN0YXR1cyA9IGlzRGV2aWNlQWN0aXZlKHRoaXMuc2VsZWN0ZWREZXZpY2UpO1xuICAgICAgdGhpcy56b25lTmFtZSA9IHRoaXMuc2VsZWN0ZWREZXZpY2U/LnpvbmU/Lm5hbWU7XG4gICAgICB0aGlzLmlzU2VsZWN0ZWREZXZpY2VNQ0Nvbm5lY3RlZCA9IGZhY2lsaXR5RGljdGlvbmFyeVtndWlkXVt0aGlzLnNlbGVjdGVkRGV2aWNlPy5wYXJrSURdPy5pc01haW5Db250cm9sbGVyQ29ubmVjdGVkO1xuICAgICAgdGhpcy5pc1N0YXR1c1N1cHBvcnRlZCA9IHRoaXMuZGV2aWNlU2VydmljZS5pc1N0YXR1c1N1cHBvcnRlZChyZXM/LnR5cGUpO1xuXG4gICAgICBjb25zdCBkZXZpY2VJdGVtU3RhdHVzU2VjdGlvbnMgPSB7XG4gICAgICAgIHNlY3Rpb24xOiBbXSxcbiAgICAgICAgc2VjdGlvbjI6IFtdLFxuICAgICAgICBzZWN0aW9uMzogW10sXG4gICAgICB9O1xuXG4gICAgICBkZXZpY2VJdGVtU3RhdHVzU2VjdGlvbnMuc2VjdGlvbjEucHVzaCh7XG4gICAgICAgIGtleTogdGhpcy5MLmNvbSxcbiAgICAgICAgc3RhdHVzSWNvbjogdGhpcy5nZXRDb21TdGF0dXNJY29uKHJlcyksXG4gICAgICAgIHRleHQ6IHRoaXMuZ2V0VHJhbnNsYXRlZENvbVN0YXR1c1RleHQocmVzLCBmYWxzZSksXG4gICAgICAgIHZhbHVlOiB0aGlzLmdldGREZXZpY2VDb21TdGF0dXNWYWx1ZShyZXMpXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuZGlzcGxheUlzUHJvcEV4aXN0cyhyZXMsICdkb29yQ29udHJvbGxlckNvbm5lY3RlZCcpKSB7XG4gICAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMS5wdXNoKHtcbiAgICAgICAgICBrZXk6IHRoaXMuTC5pbnRlcm5hbF9jb20sXG4gICAgICAgICAgc3RhdHVzSWNvbjogdGhpcy5nZXRJbnRlcm5hbENvbVN0YXR1c051bShyZXMuZG9vckNvbnRyb2xsZXJDb25uZWN0ZWQpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmludGVycyA9IHRoaXMuZ2V0UHJpbnRlcnMocmVzKTtcbiAgICAgIGZvciAoY29uc3QgcHJpbnRlciBvZiBwcmludGVycykge1xuICAgICAgICBkZXZpY2VJdGVtU3RhdHVzU2VjdGlvbnMuc2VjdGlvbjEucHVzaCh7XG4gICAgICAgICAga2V5OiB0aGlzLkwucHJpbnRlcixcbiAgICAgICAgICBzdGF0dXNJY29uOiB0aGlzLmdldFByaW50ZXJTdGF0dXNOdW0ocHJpbnRlci5zdGF0ZSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0UHJpbnRlclN0YXR1c1RleHQocHJpbnRlci5zdGF0ZSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kaXNwbGF5SXNQcm9wRXhpc3RzKHJlcywgJ21vZGUnKSkge1xuICAgICAgICBkZXZpY2VJdGVtU3RhdHVzU2VjdGlvbnMuc2VjdGlvbjEucHVzaCh7XG4gICAgICAgICAga2V5OiB0aGlzLkwuYWNjZXNzX21vZGUsXG4gICAgICAgICAgaWNvbjogSWNvbnNIZWxwZXIuYWNjZXNzX21vZGUsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0QWNjZXNzTW9kZVN0YXR1c1RleHQocmVzLm1vZGUpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlzcGxheUJhcnJpZXJzKHJlcykpIHtcbiAgICAgICAgY29uc3QgYmFycmllcnMgPSB0aGlzLmdldEJhcnJpZXJzKHJlcyk7XG4gICAgICAgIGZvciAoY29uc3QgYmFycmllciBvZiBiYXJyaWVycykge1xuICAgICAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMi5wdXNoKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5MLmdhdGUsXG4gICAgICAgICAgICBzdGF0dXNJY29uOiB0aGlzLmdldEJhcnJpZXJTdGF0dXNOdW0oYmFycmllci5zdGF0ZSksXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRCYXJyaWVyU3RhdHVzVGV4dChiYXJyaWVyLnN0YXRlKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzPy5sb29wcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcz8ubG9vcHMuc2xpY2UoMCwgMikubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBwcmVzZW5jZSA9ICctICcgKyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuTC5wcmVzZW5jZSk7XG4gICAgICAgICAgY29uc3Qgc2FmZXR5ID0gJy0gJyArIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5MLnNhZmV0eSk7XG4gICAgICAgICAgbGV0IHRleHQgPSBgIyR7aSArIDF9JHtpID09PSAwID8gcHJlc2VuY2UgOiBpID09PSAxID8gc2FmZXR5IDogJyd9YDtcblxuICAgICAgICAgIGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucy5zZWN0aW9uMi5wdXNoKHtcbiAgICAgICAgICAgIGtleTogdGhpcy5MLmxvb3AsXG4gICAgICAgICAgICBzdGF0dXNJY29uOiB0aGlzLmdldExvb3BTdGF0dXNOdW0ocmVzLmxvb3BzW2ldLmlzQ2FyT24pLFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRpc3BsYXlTd2FsbG93VW5pdChyZXMpKSB7XG4gICAgICAgIGNvbnN0IHN3YWxsb3dVbml0ID0gdGhpcy5nZXRTd2FsbG93VW5pdChyZXMpO1xuICAgICAgICBkZXZpY2VJdGVtU3RhdHVzU2VjdGlvbnMuc2VjdGlvbjIucHVzaCh7XG4gICAgICAgICAga2V5OiB0aGlzLkwuc3dhbGxvd191bml0LFxuICAgICAgICAgIHN0YXR1c0ljb246IHRoaXMuZ2V0U3dhbGxvd1VuaXRTdGF0dXNOdW0oc3dhbGxvd1VuaXQ/LnN0YXR1cyksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0U3dhbGxvd1VuaXRTdGF0dXNUZXh0KHN3YWxsb3dVbml0Py5zdGF0dXMpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucyA9IGRldmljZUl0ZW1TdGF0dXNTZWN0aW9ucztcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaXNNdWx0aVBhcmsgPSAhIXRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5pc011bHRpUGFyayk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0ZERldmljZUNvbVN0YXR1c1ZhbHVlKGRldmljZVN0YXR1c0RhdGE6IERldmljZVN0YXR1c0R0bykge1xuICAgIC8vIElmIHRoZSBkZXZpY2UgaXMgYW4gTUMgKGNvbW1pZCA9PT0gMCkgd2UgbmVlZCB0byB0cmFuc2xhdGUgdGhlIFBhcmsgY29ubmVjdGlvbiBpbnN0ZWFkIG9mIHRoZSBEZXZpY2VcbiAgICBsZXQgc3RhdHVzVmFsdWU6IHN0cmluZztcbiAgICBpZiAodGhpcy5hY3RpdmVTdGF0dXMgJiYgZGV2aWNlU3RhdHVzRGF0YT8uY29tbUlEICE9PSAwICYmIGRldmljZVN0YXR1c0RhdGE/LmlzQ29ubmVjdGVkICYmXG4gICAgICAodGhpcy5pc0JldHdlZW5SYW5nZShkZXZpY2VTdGF0dXNEYXRhPy5jb21tdW5pY2F0aW9uUGVyY2VudGFnZS50b1N0cmluZygpLCAxLCA3MCkgfHwgZGV2aWNlU3RhdHVzRGF0YT8uY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgPj0gNzEpKSB7XG4gICAgICBzdGF0dXNWYWx1ZSA9IGRldmljZVN0YXR1c0RhdGE/LmNvbW11bmljYXRpb25QZXJjZW50YWdlICsgJyUnO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0dXNWYWx1ZTtcbiAgfVxuXG4gIGdldFRyYW5zbGF0ZWRDb21TdGF0dXNUZXh0KGRldmljZVN0YXR1czogRGV2aWNlU3RhdHVzRHRvLCBpc0hpZ2hMZXZlbDogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZVN0YXR1cykge1xuICAgICAgc3RhdHVzVGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5MLmluYWN0aXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGV2aWNlQ29tQWdncmVnYXRlZFN0YXR1czogQ29tQWdncmVnYXRlZFN0YXR1cyA9IHRoaXMuZGV2aWNlU2VydmljZS5nZXREZXZpY2VDb21BZ2dyZWdhdGVkU3RhdHVzKGRldmljZVN0YXR1cywgdHJ1ZSk7XG4gICAgICBzd2l0Y2ggKGRldmljZUNvbUFnZ3JlZ2F0ZWRTdGF0dXMpIHtcbiAgICAgICAgY2FzZSBDb21BZ2dyZWdhdGVkU3RhdHVzLk9rOlxuICAgICAgICBjYXNlIENvbUFnZ3JlZ2F0ZWRTdGF0dXMuV2FybmluZzpcbiAgICAgICAgICBpZiAoaXNIaWdoTGV2ZWwgJiYgZGV2aWNlU3RhdHVzPy5jb21tSUQgIT09IDApIHtcbiAgICAgICAgICAgIHN0YXR1c1RleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuTC5jb25uZWN0ZWRfdmFsdWUsIHsgdmFsdWU6IGRldmljZVN0YXR1cz8uY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXR1c1RleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuTC5jb25uZWN0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb21BZ2dyZWdhdGVkU3RhdHVzLkNvbUVycm9yOlxuICAgICAgICAgIHN0YXR1c1RleHQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuTC5kaXNjb25uZWN0ZWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BsYXlJc1Byb3BFeGlzdHMoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8sIHByb3BOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZGV2aWNlICYmIHByb3BOYW1lIGluIGRldmljZSAmJiBkZXZpY2VbcHJvcE5hbWVdICE9PSBudWxsICYmIGRldmljZVtwcm9wTmFtZV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENvbVN0YXR1c0ljb24oZGV2aWNlU3RhdHVzOiBEZXZpY2VTdGF0dXNEdG8pIHtcbiAgICByZXR1cm4gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldERldmljZUNvbUFnZ3JlZ2F0ZWRTdGF0dXMoZGV2aWNlU3RhdHVzLCB0cnVlKTtcbiAgfVxuXG4gIGdldExhbmVSZWNvZ25pdGlvbk1vZGVUeXBlVGV4dChtb2RlVHlwZTogTGFuZVJlY29nbml0aW9uTW9kZVR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBMYW5lUmVjb2duaXRpb25Nb2RlVHlwZVRleHRbTGFuZVJlY29nbml0aW9uTW9kZVR5cGVbbW9kZVR5cGVdXTtcbiAgfVxuXG4gIGdldExhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVTdGF0dXNOdW0oc3RhdHVzVHlwZTogTGFuZVJlY29nbml0aW9uU3RhdHVzVHlwZSk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkxhbmVSZWNvZ25pdGlvbltMYW5lUmVjb2duaXRpb25TdGF0dXNUeXBlW3N0YXR1c1R5cGVdXTtcbiAgfVxuXG4gIGdldExhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGVUZXh0KHN0YXR1c1R5cGU6IExhbmVSZWNvZ25pdGlvblN0YXR1c1R5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBMYW5lUmVjb2duaXRpb25TdGF0dXNUeXBlVGV4dFtMYW5lUmVjb2duaXRpb25TdGF0dXNUeXBlW3N0YXR1c1R5cGVdXTtcbiAgfVxuXG4gIGdldFByaW50ZXJzKGRldmljZTogRGV2aWNlU3RhdHVzRHRvKSB7XG4gICAgaWYgKGRldmljZT8ucHJpbnRlcikge1xuICAgICAgcmV0dXJuIFtkZXZpY2UucHJpbnRlcl07XG4gICAgfSBlbHNlIGlmIChkZXZpY2U/LnByaW50ZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5wcmludGVycztcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpc0Nvbm5lY3RlZFRleHQgPSAoaXNDb25uZWN0ZWQ6IGJvb2xlYW4pOiBzdHJpbmcgPT4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChpc0Nvbm5lY3RlZCA/IHRoaXMuTC5jb25uZWN0ZWQgOiB0aGlzLkwuZGlzY29ubmVjdGVkKTtcblxuICBnZXRNQ0FnZ3JlZ2F0ZWRTdGF0dXMgPSAoaXNTZWxlY3RlZERldmljZU1DQ29ubmVjdGVkOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyA9PiBpc1NlbGVjdGVkRGV2aWNlTUNDb25uZWN0ZWQgPyBBZ2dyZWdhdGVkU3RhdHVzLk9LIDogQWdncmVnYXRlZFN0YXR1cy5FUlJPUjtcblxuICBnZXRQcmludGVyU3RhdHVzTnVtKHByaW50ZXJTdGF0dXM6IERldmljZVByaW50ZXJTdGF0dXMpOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5QcmludGVyW0RldmljZVByaW50ZXJTdGF0dXNbcHJpbnRlclN0YXR1c11dO1xuICB9XG5cbiAgZ2V0UHJpbnRlclN0YXR1c1RleHQocHJpbnRlclN0YXR1czogRGV2aWNlUHJpbnRlclN0YXR1cyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIERldmljZVByaW50ZXJTdGF0dXNUZXh0W0RldmljZVByaW50ZXJTdGF0dXNbcHJpbnRlclN0YXR1c11dO1xuICB9XG5cbiAgZ2V0QWNjZXNzTW9kZVN0YXR1c1RleHQoYWNjZXNzTW9kZVN0YXR1czogRGV2aWNlQWN0aXZpdHlNb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRGV2aWNlQWN0aXZpdHlNb2RlVGV4dFtEZXZpY2VBY3Rpdml0eU1vZGVbYWNjZXNzTW9kZVN0YXR1c11dO1xuICB9XG5cbiAgZGlzcGxheUJhcnJpZXJzKGRldmljZTogRGV2aWNlU3RhdHVzRHRvKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZGV2aWNlPy5iYXJyaWVyIHx8ICEhZGV2aWNlPy5iYXJyaWVycz8ubGVuZ3RoO1xuICB9XG5cbiAgZ2V0QmFycmllcnMoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBCYXJyaWVyRHRvW10ge1xuICAgIGlmIChkZXZpY2U/LmJhcnJpZXIpIHtcbiAgICAgIHJldHVybiBbZGV2aWNlLmJhcnJpZXJdO1xuICAgIH0gZWxzZSBpZiAoZGV2aWNlPy5iYXJyaWVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uYmFycmllcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0QmFycmllclN0YXR1c051bShiYXJyaWVyU3RhdGU6IEJhcnJpZXJTdGF0ZSk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkJhcnJpZXJbQmFycmllclN0YXRlW2JhcnJpZXJTdGF0ZV1dO1xuICB9XG5cbiAgZ2V0QmFycmllclN0YXR1c1RleHQoYmFycmllclN0YXRlOiBCYXJyaWVyU3RhdGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoYmFycmllclN0YXRlKSB7XG4gICAgICBjYXNlIEJhcnJpZXJTdGF0ZS5Ccm9rZW46XG4gICAgICAgIHJldHVybiB0aGlzLkwuYXJtX2Jyb2tlbjtcbiAgICAgIGNhc2UgQmFycmllclN0YXRlLk9wZW46XG4gICAgICAgIHJldHVybiB0aGlzLkwudXA7XG4gICAgICBjYXNlIEJhcnJpZXJTdGF0ZS5DbG9zZTpcbiAgICAgICAgcmV0dXJuIHRoaXMuTC5kb3duO1xuICAgIH1cbiAgfVxuXG4gIGdldFN3YWxsb3dVbml0U3RhdHVzTnVtKHN3YWxsb3dVbml0U3RhdHVzOiBTd2FsbG93VW5pdFN0YXR1cyk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLlN3YWxsb3dVbml0W1N3YWxsb3dVbml0U3RhdHVzW3N3YWxsb3dVbml0U3RhdHVzXV07XG4gIH1cblxuICBnZXRTd2FsbG93VW5pdFN0YXR1c1RleHQoc3dhbGxvd1VuaXRTdGF0dXM6IFN3YWxsb3dVbml0U3RhdHVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3dhbGxvd1VuaXRTdGF0dXNUZXh0W1N3YWxsb3dVbml0U3RhdHVzW3N3YWxsb3dVbml0U3RhdHVzXV07XG4gIH1cblxuICBnZXRDYXNzZXR0ZXNTdGF0dXNOdW0oc3RhdHVzOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgY29uc3QgY2Fzc2V0dGVzU3RhdHVzID0gc3RhdHVzID8gQ2Fzc2V0dGVTdGF0dXMuSW5PcmRlciA6IENhc3NldHRlU3RhdHVzLkVtcHR5O1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkJpbGxDYXNzZXR0ZVtDYXNzZXR0ZVN0YXR1c1tjYXNzZXR0ZXNTdGF0dXNdXTtcbiAgfVxuXG4gIGdldEhvcHBlcnNTdGF0dXNOdW0oc3RhdHVzOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgY29uc3QgaG9wcGVyU3RhdHVzID0gc3RhdHVzID8gSG9wcGVyU3RhdHVzLk9LIDogSG9wcGVyU3RhdHVzLkVycm9yO1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkhvcHBlcltIb3BwZXJTdGF0dXNbaG9wcGVyU3RhdHVzXV07XG4gIH1cblxuICBjYWxjSG9wcGVyVmFsdWVzKGhvcHBlcnM6IEhvcHBlckR0b1tdKSB7XG4gICAgY29uc3QgcHJlc2V0VG90YWxzID0geyBhbW91bnQ6IDAsIHZhbHVlOiAwIH07XG4gICAgY29uc3QgaG9wcGVyVG90YWxzID0gaG9wcGVycz8ucmVkdWNlKCh0b3RhbHMsIGhvcHBlcikgPT4ge1xuICAgICAgdG90YWxzLnZhbHVlICs9ICgoKGhvcHBlcj8uY29pbj8udmFsdWUgfHwgMCkgKiAoaG9wcGVyPy5jb2luPy5jb3VudGVyIHx8IDApKSAvIDEwMCk7XG4gICAgICB0b3RhbHMuYW1vdW50ICs9IChob3BwZXI/LmNvaW4/LmNvdW50ZXIgfHwgMCk7XG4gICAgICByZXR1cm4gdG90YWxzO1xuICAgIH0sIHByZXNldFRvdGFscyk7XG4gICAgcmV0dXJuIHRoaXMuY29udmVydERlY2ltYWxWYWx1ZShob3BwZXJUb3RhbHMpO1xuICB9XG5cbiAgY2FsY0NvaW5WYWx1ZXMoY29pbnNJbkxhbmU6IENvaW5JbkxhbmVEdG8pIHtcbiAgICBjb25zdCBwcmVzZXRUb3RhbHMgPSB7IGFtb3VudDogMCwgdmFsdWU6IDAgfTtcbiAgICBjb25zdCBjaXNUb3RhbHMgPSBjb2luc0luTGFuZT8uY29pbnM/LnJlZHVjZSgodG90YWxzLCBjb2luKSA9PiB7XG4gICAgICB0b3RhbHMudmFsdWUgKz0gKCgoY29pbj8udmFsdWUgfHwgMCkgKiAoY29pbj8uY291bnRlciB8fCAwKSkgLyAxMDApO1xuICAgICAgdG90YWxzLmFtb3VudCArPSAoY29pbj8uY291bnRlciB8fCAwKTtcbiAgICAgIHJldHVybiB0b3RhbHM7XG4gICAgfSwgcHJlc2V0VG90YWxzKTtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGVjaW1hbFZhbHVlKGNpc1RvdGFscyk7XG4gIH1cblxuICBjYWxjQmlsbHNTYWZlVmFsdWVzKGJpbGxzOiBCaWxsRHRvW10pIHtcbiAgICBjb25zdCBwcmVzZXRUb3RhbHMgPSB7IGFtb3VudDogMCwgdmFsdWU6IDAgfTtcbiAgICBjb25zdCBiaWxsU2FmZVRvdGFscyA9IGJpbGxzPy5yZWR1Y2UoKHRvdGFscywgYmlsbCkgPT4ge1xuICAgICAgdG90YWxzLnZhbHVlICs9ICgrKHRoaXMuZ2V0QmlsbFR5cGVWYWx1ZShiaWxsLnR5cGUpIHx8IDApICogKGJpbGw/LmFtb3VudCB8fCAwKSk7XG4gICAgICB0b3RhbHMuYW1vdW50ICs9IChiaWxsPy5hbW91bnQgfHwgMCk7XG4gICAgICByZXR1cm4gdG90YWxzO1xuICAgIH0sIHByZXNldFRvdGFscyk7XG4gICAgcmV0dXJuIHRoaXMuY29udmVydERlY2ltYWxWYWx1ZShiaWxsU2FmZVRvdGFscyk7XG4gIH1cblxuICBjYWxjQ29pbnNTYWZlVmFsdWVzKGNvaW5zOiBDb2luRHRvW10pIHtcbiAgICBjb25zdCBwcmVzZXRUb3RhbHMgPSB7IGFtb3VudDogMCwgdmFsdWU6IDAgfTtcbiAgICBjb25zdCBjb2luU2F2ZVRvdGFscyA9IGNvaW5zPy5yZWR1Y2UoKHRvdGFscywgY29pbikgPT4ge1xuICAgICAgdG90YWxzLnZhbHVlICs9ICgoKGNvaW4/LnZhbHVlIHx8IDApICogKGNvaW4/LmNvdW50ZXIgfHwgMCkpIC8gMTAwKTtcbiAgICAgIHRvdGFscy5hbW91bnQgKz0gKGNvaW4/LmNvdW50ZXIgfHwgMCk7XG4gICAgICByZXR1cm4gdG90YWxzO1xuICAgIH0sIHByZXNldFRvdGFscyk7XG4gICAgcmV0dXJuIHRoaXMuY29udmVydERlY2ltYWxWYWx1ZShjb2luU2F2ZVRvdGFscyk7XG4gIH1cblxuICBjb252ZXJ0RGVjaW1hbFZhbHVlKGNvaW5TYXZlVG90YWxzKSB7XG4gICAgY29uc3QgYW1vdW50ID0gYCR7dGhpcy5kZWNpbWFsVG9BbW91bnRQaXBlLnRyYW5zZm9ybShjb2luU2F2ZVRvdGFscz8uYW1vdW50KX1gO1xuICAgIGNvbnN0IHZhbHVlID0gYCR7dGhpcy5kZWNpbWFsVG9DdXJyZW5jeVBpcGUudHJhbnNmb3JtKGNvaW5TYXZlVG90YWxzPy52YWx1ZSl9YDtcbiAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZXMgPSB7XG4gICAgICBhbW91bnQsXG4gICAgICB2YWx1ZVxuICAgIH07XG4gICAgcmV0dXJuIGNvbnZlcnRlZFZhbHVlcztcbiAgfVxuXG4gIGdldEJpbGxUeXBlVmFsdWVUZXh0KGJpbGxUeXBlVmFsdWU6IEJpbGxUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlID0gQmlsbFR5cGVbYmlsbFR5cGVWYWx1ZV07XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuTC51bmtub3duKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFRvQ3VycmVuY3lQaXBlLnRyYW5zZm9ybShCaWxsVHlwZVRleHRbQmlsbFR5cGVbYmlsbFR5cGVWYWx1ZV1dKTtcbiAgfVxuXG4gIGdldEJpbGxUeXBlVmFsdWUoYmlsbFR5cGVWYWx1ZTogQmlsbFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBCaWxsVHlwZVRleHRbQmlsbFR5cGVbYmlsbFR5cGVWYWx1ZV1dO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0JldHdlZW5SYW5nZShpbnB1dDogc3RyaW5nLCBtaW5WYWx1ZTogbnVtYmVyLCBtYXhWYWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5wdXRWYWwgPSBwYXJzZUludChpbnB1dCwgMTApO1xuICAgIHJldHVybiBpbnB1dFZhbCA+PSBtaW5WYWx1ZSAmJiBpbnB1dFZhbCA8PSBtYXhWYWx1ZTtcbiAgfVxuXG4gIGdldEludGVybmFsQ29tU3RhdHVzTnVtKHNlY29uZGFyeUNvbVN0YXR1czogYm9vbGVhbik6IENvbUFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGNvbnN0IGNvbUFnZ3JlZ2F0ZWRTdGF0dXMgPSBzZWNvbmRhcnlDb21TdGF0dXMgPyBDb21BZ2dyZWdhdGVkU3RhdHVzLk9rIDogQ29tQWdncmVnYXRlZFN0YXR1cy5Db21FcnJvcjtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5Db21bQ29tQWdncmVnYXRlZFN0YXR1c1tjb21BZ2dyZWdhdGVkU3RhdHVzXV07XG4gIH1cblxuICBkaXNwbGF5U3dhbGxvd1VuaXQoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGV2aWNlPy5zd2FsbG93VW5pdD8udHlwZSA9PT0gU3dhbGxvd1VuaXRUeXBlLlRpY2tldCB8fFxuICAgICAgISFkZXZpY2U/LnN3YWxsb3dVbml0cz8uZmlsdGVyKHMgPT4gcy50eXBlID09PSBTd2FsbG93VW5pdFR5cGUuVGlja2V0KS5sZW5ndGg7XG4gIH1cblxuICBnZXRTd2FsbG93VW5pdChkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IFN3YWxsb3dVbml0RHRvIHtcbiAgICBpZiAoZGV2aWNlPy5zd2FsbG93VW5pdCkge1xuICAgICAgcmV0dXJuIGRldmljZS5zd2FsbG93VW5pdDtcbiAgICB9IGVsc2UgaWYgKGRldmljZT8uc3dhbGxvd1VuaXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5zd2FsbG93VW5pdHM/LmZpbmQocyA9PiBzLnR5cGUgPT09IFN3YWxsb3dVbml0VHlwZS5UaWNrZXQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0RG9vclN0YXR1c051bShkb29yU3RhdHVzOiBEb29yU3RhdHVzKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuRG9vcltEb29yU3RhdHVzW2Rvb3JTdGF0dXNdXTtcbiAgfVxuXG4gIGdldERvb3JTdGF0dXNUZXh0KGRvb3JTdGF0dXM6IERvb3JTdGF0dXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBEb29yU3RhdHVzVGV4dFtEb29yU3RhdHVzW2Rvb3JTdGF0dXNdXTtcbiAgfVxuXG4gIGdldExvb3BTdGF0dXNOdW0oc3RhdHVzOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgY29uc3QgbG9vcFN0YXR1cyA9IHN0YXR1cyA/IExvb3BTdGF0dXMuT24gOiBMb29wU3RhdHVzLk9mZjtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5Mb29wW0xvb3BTdGF0dXNbbG9vcFN0YXR1c11dO1xuICB9XG5cbiAgZ2V0RG9vclNlbnNvclN0YXR1c051bShzdGF0dXM6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBzZW5zb3JTdGF0dXMgPSBzdGF0dXMgPyBEb29yU2Vuc29yU3RhdHVzLk9uIDogRG9vclNlbnNvclN0YXR1cy5PZmY7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuRG9vclNlbnNvcltEb29yU2Vuc29yU3RhdHVzW3NlbnNvclN0YXR1c11dO1xuICB9XG5cbiAgZ2V0UmVsYXlTdGF0dXNOdW0oc3RhdHVzOiBib29sZWFuKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgY29uc3QgcmVsYXlTdGF0dXMgPSBzdGF0dXMgPyBSZWxheVN0YXR1cy5PbiA6IFJlbGF5U3RhdHVzLk9mZjtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5SZWxheVtSZWxheVN0YXR1c1tyZWxheVN0YXR1c11dO1xuICB9XG5cbiAgZ2V0QnV0dG9uU3RhdHVzTnVtKHN0YXR1czogYm9vbGVhbik6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGNvbnN0IGJ1dHRvblN0YXR1cyA9IHN0YXR1cyA/IEJ1dHRvblN0YXR1cy5PbiA6IEJ1dHRvblN0YXR1cy5PZmY7XG4gICAgcmV0dXJuIHRoaXMuYXBwU2V0dGluZ3NTZXJ2aWNlLmRldmljZVN0YXR1c01hcHBpbmcuQnV0dG9uW0J1dHRvblN0YXR1c1tidXR0b25TdGF0dXNdXTtcbiAgfVxuXG4gIGdldERpcFN3aXRjaFN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICBjb25zdCBzd2l0Y2hTdGF0dXMgPSBzdGF0dXMgPyBEaXBTd2l0Y2hTdGF0dXMuT24gOiBEaXBTd2l0Y2hTdGF0dXMuT2ZmO1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkRpcFN3aXRjaFtEaXBTd2l0Y2hTdGF0dXNbc3dpdGNoU3RhdHVzXV07XG4gIH1cblxuICBnZXRCaWxsQ2Fzc2V0dGVBcnJheShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IENhc3NldHRlRHRvW10ge1xuICAgIGlmIChkZXZpY2U/LmJpbGxSZWN5Y2xlcj8uY2Fzc2V0dGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5iaWxsUmVjeWNsZXI/LmNhc3NldHRlcztcbiAgICB9IGVsc2UgaWYgKGRldmljZT8uYmlsbERpc3BlbnNlcj8uY2Fzc2V0dGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5iaWxsRGlzcGVuc2VyPy5jYXNzZXR0ZXM7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEJpbGxDYXNzZXR0ZVRvdGFsVmFsdWUoZGV2aWNlOiBEZXZpY2VTdGF0dXNEdG8pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEJpbGxDYXNzZXR0ZUFycmF5KGRldmljZSkucmVkdWNlKCh0b3RhbFZhbHVlLCBjYXNzZXR0ZSkgPT4ge1xuICAgICAgaWYgKCFjYXNzZXR0ZT8uYmlsbCkge1xuICAgICAgICByZXR1cm4gdG90YWxWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoKyh0aGlzLmdldEJpbGxUeXBlVmFsdWUoY2Fzc2V0dGUuYmlsbC50eXBlKSB8fCAwKSAqIChjYXNzZXR0ZS5iaWxsLmFtb3VudCB8fCAwKSkgKyB0b3RhbFZhbHVlO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0QmlsbENhc3NldHRlU3RhdHVzTnVtKGJpbGxDYXNzZXR0ZVN0YXR1czogQ2Fzc2V0dGVTdGF0dXMpOiBBZ2dyZWdhdGVkU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5CaWxsQ2Fzc2V0dGVbQ2Fzc2V0dGVTdGF0dXNbYmlsbENhc3NldHRlU3RhdHVzXV07XG4gIH1cblxuICBnZXRCaWxsQ2Fzc2V0dGVTdGF0dXNUZXh0KGJpbGxDYXNzZXR0ZVN0YXR1czogQ2Fzc2V0dGVTdGF0dXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBDYXNzZXR0ZVN0YXR1c1RleHRbQ2Fzc2V0dGVTdGF0dXNbYmlsbENhc3NldHRlU3RhdHVzXV07XG4gIH1cblxuICBnZXRCaWxsU2FmZUFycmF5KGRldmljZTogRGV2aWNlU3RhdHVzRHRvKTogQmlsbER0b1tdIHtcbiAgICBpZiAoZGV2aWNlPy5iaWxsUmVjeWNsZXI/LmNlbnRyYWxTYWZlPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gZGV2aWNlPy5iaWxsUmVjeWNsZXI/LmNlbnRyYWxTYWZlO1xuICAgIH0gZWxzZSBpZiAoZGV2aWNlPy5iaWxsVmFsaWRhdG9yPy5iaWxscz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uYmlsbFZhbGlkYXRvcj8uYmlsbHM7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEJpbGxTYWZlVG90YWxWYWx1ZShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QmlsbFNhZmVBcnJheShkZXZpY2UpLnJlZHVjZSgodG90YWxWYWx1ZSwgYmlsbCkgPT4ge1xuICAgICAgaWYgKCFiaWxsPy5hbW91bnQpIHtcbiAgICAgICAgcmV0dXJuIHRvdGFsVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gKCsodGhpcy5nZXRCaWxsVHlwZVZhbHVlKGJpbGwudHlwZSkgfHwgMCkgKiAoYmlsbC5hbW91bnQgfHwgMCkpICsgdG90YWxWYWx1ZTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldEJpbGxEaXNwZW5zZXJTdGF0dXNOdW0oYmlsbERpc3BlbnNlcjogQmlsbERpc3BlbnNlckR0byk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGlmICghYmlsbERpc3BlbnNlci5pc0NvbW11bmljYXRpbmcpIHtcbiAgICAgIHJldHVybiBBZ2dyZWdhdGVkU3RhdHVzLkVSUk9SO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5CaWxsRGlzcGVuc2VyW0JpbGxEaXNwZW5zZXJTdGF0dXNbYmlsbERpc3BlbnNlci5lcnJvckNvZGVdXTtcbiAgfVxuXG4gIGdldEJpbGxEaXNwZW5zZXJTdGF0dXNUZXh0KGJpbGxEaXNwZW5zZXI6IEJpbGxEaXNwZW5zZXJEdG8pOiBzdHJpbmcge1xuICAgIGlmICghYmlsbERpc3BlbnNlci5pc0NvbW11bmljYXRpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLkwuZGlzY29ubmVjdGVkO1xuICAgIH1cbiAgICByZXR1cm4gQmlsbERpc3BlbnNlclN0YXR1c1RleHRbQmlsbERpc3BlbnNlclN0YXR1c1tiaWxsRGlzcGVuc2VyLmVycm9yQ29kZV1dO1xuICB9XG5cbiAgZ2V0QmlsbFZhbGlkYXRvclN0YXR1c051bShiaWxsVmFsaWRhdG9yOiBCaWxsVmFsaWRhdG9yRHRvKTogQWdncmVnYXRlZFN0YXR1cyB7XG4gICAgaWYgKCFiaWxsVmFsaWRhdG9yLmlzQ29tbXVuaWNhdGluZykge1xuICAgICAgcmV0dXJuIEFnZ3JlZ2F0ZWRTdGF0dXMuRVJST1I7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkJpbGxWYWxpZGF0b3JbQmlsbFZhbGlkYXRvclN0YXR1c1tiaWxsVmFsaWRhdG9yLnN0YXRlXV07XG4gIH1cblxuICBnZXRCaWxsVmFsaWRhdG9yU3RhdHVzVGV4dChiaWxsVmFsaWRhdG9yOiBCaWxsVmFsaWRhdG9yRHRvKTogc3RyaW5nIHtcbiAgICBpZiAoIWJpbGxWYWxpZGF0b3IuaXNDb21tdW5pY2F0aW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5MLmRpc2Nvbm5lY3RlZDtcbiAgICB9XG4gICAgcmV0dXJuIEJpbGxWYWxpZGF0b3JTdGF0dXNUZXh0W0JpbGxWYWxpZGF0b3JTdGF0dXNbYmlsbFZhbGlkYXRvci5zdGF0ZV1dO1xuICB9XG5cbiAgZ2V0SG9wcGVyVG90YWxWYWx1ZShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRldmljZT8uaG9wcGVycy5yZWR1Y2UoKHRvdGFsVmFsdWUsIGhvcHBlcikgPT4ge1xuICAgICAgcmV0dXJuICgoaG9wcGVyPy5jb2luPy52YWx1ZSB8fCAwKSAqIChob3BwZXI/LmNvaW4/LmNvdW50ZXIgfHwgMCkgLyAxMDApICsgdG90YWxWYWx1ZTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldEhvcHBlclN0YXR1c051bShob3BwZXJTdGF0dXM6IEhvcHBlclN0YXR1cyk6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5kZXZpY2VTdGF0dXNNYXBwaW5nLkhvcHBlcltIb3BwZXJTdGF0dXNbaG9wcGVyU3RhdHVzXV07XG4gIH1cblxuICBnZXRIb3BwZXJTdGF0dXNUZXh0KGhvcHBlclN0YXR1czogSG9wcGVyU3RhdHVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSG9wcGVyU3RhdHVzVGV4dFtIb3BwZXJTdGF0dXNbaG9wcGVyU3RhdHVzXV07XG4gIH1cblxuICBnZXRDb2luVG90YWxWYWx1ZShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRldmljZT8uY29pbkluTGFuZT8uY29pbnMucmVkdWNlKCh0b3RhbFZhbHVlLCBjb2luKSA9PiB7XG4gICAgICByZXR1cm4gKChjb2luPy52YWx1ZSB8fCAwKSAqIChjb2luPy5jb3VudGVyIHx8IDApIC8gMTAwKSArIHRvdGFsVmFsdWU7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRDb2luU3RhdHVzTnVtKGlzQ29tbXVuaWNhdGluZzogYm9vbGVhbik6IEFnZ3JlZ2F0ZWRTdGF0dXMge1xuICAgIGNvbnN0IGNvaW5TdGF0dXMgPSBpc0NvbW11bmljYXRpbmcgPyBDb2luU3RhdHVzLk9LIDogQ29pblN0YXR1cy5FcnJvcjtcbiAgICByZXR1cm4gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuZGV2aWNlU3RhdHVzTWFwcGluZy5Db2luSW5MYW5lW0NvaW5TdGF0dXNbY29pblN0YXR1c11dO1xuICB9XG5cbiAgZ2V0Q29pblN0YXR1c1RleHQoY29pblN0YXR1czogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvaW5TdGF0dXMgPyBDb2luU3RhdHVzVGV4dC5PSyA6IENvaW5TdGF0dXNUZXh0LkVycm9yO1xuICB9XG5cbiAgZ2V0Q29pblNhZmVBcnJheShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IENvaW5EdG9bXSB7XG4gICAgaWYgKGRldmljZT8uY2VudHJhbFNhZmU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBkZXZpY2U/LmNlbnRyYWxTYWZlO1xuICAgIH0gZWxzZSBpZiAoZGV2aWNlPy5jb2luSW5MYW5lPy5jZW50cmFsU2FmZT8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGRldmljZT8uY29pbkluTGFuZT8uY2VudHJhbFNhZmU7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldENvaW5TYWZlVG90YWxWYWx1ZShkZXZpY2U6IERldmljZVN0YXR1c0R0byk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29pblNhZmVBcnJheShkZXZpY2UpLnJlZHVjZSgodG90YWxWYWx1ZSwgY29pbikgPT4ge1xuICAgICAgcmV0dXJuICgoY29pbj8udmFsdWUgfHwgMCkgKiAoY29pbj8uY291bnRlciB8fCAwKSAvIDEwMCkgKyB0b3RhbFZhbHVlO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZm9ybWF0Q29pblZhbHVlKGNvaW46IG51bWJlcik6IHN0cmluZyB7XG4gICAgLy8gQ29pbnMgYWx3YXlzIHNhdmVkIGFkIENlbnQgZm9ybWF0XG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFRvQ3VycmVuY3lQaXBlLnRyYW5zZm9ybShjb2luIC8gMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpemVDb2luc0RhdGEoKSB7XG4gICAgaWYgKHRoaXMuZGV2aWNlU3RhdHVzKSB7XG4gICAgICBpZiAodGhpcy5kZXZpY2VTdGF0dXMuY29pbkluTGFuZT8uY29pbnMpIHtcbiAgICAgICAgLy8gc2V0IGNvaW5zIG9ubHkgd2l0aCBleGlzdGluZyB2YWx1ZXMgKGdyZWF0ZXIgdGhhbiAwKSxcbiAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgdmFsdWVzLCBjb2lucyB3aWxsIGJlIGFuIGVtcHR5IGFycmF5LlxuICAgICAgICBjb25zdCBzYW5pdGl6ZWRDb2lucyA9IHRoaXMuZGV2aWNlU3RhdHVzLmNvaW5JbkxhbmUuY29pbnMuZmlsdGVyKGNvaW4gPT4gY29pbi52YWx1ZSA+IDAgfHwgY29pbi5jb3VudGVyID4gMCk7XG4gICAgICAgIHRoaXMuZGV2aWNlU3RhdHVzLmNvaW5JbkxhbmUuY29pbnMgPSBzYW5pdGl6ZWRDb2lucztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRldmljZVN0YXR1cy5ob3BwZXJzKSB7XG4gICAgICAgIGNvbnN0IGhvcHBlcnMgPSB0aGlzLmRldmljZVN0YXR1cy5ob3BwZXJzIGFzIEhvcHBlckR0b1tdO1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRIb3BwZXJzID0gaG9wcGVycy5maWx0ZXIoYyA9PiBjLmNvaW4uY291bnRlciA+IDAgfHwgYy5jb2luLnZhbHVlID4gMCk7XG4gICAgICAgIHRoaXMuZGV2aWNlU3RhdHVzLmhvcHBlcnMgPSBzYW5pdGl6ZWRIb3BwZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19