@reveldigital/player-client 1.0.0 → 1.0.2

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,9 +1,12 @@
1
- import { Injectable, isDevMode } from '@angular/core';
1
+ import { Injectable, enableProdMode, isDevMode } from '@angular/core';
2
2
  import * as yaml from "js-yaml";
3
3
  import * as WebFont from 'webfontloader';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common/http";
6
6
  import * as i2 from "@angular/router";
7
+ const isLocal = /localhost/.test(document.location.host);
8
+ !isLocal && enableProdMode();
9
+ /** @ignore */
7
10
  export class AppInitService {
8
11
  constructor(http, _route, _router) {
9
12
  this.http = http;
@@ -104,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
104
107
  providedIn: 'root'
105
108
  }]
106
109
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ActivatedRoute }, { type: i2.Router }]; } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9saWIvYXBwLWluaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQzs7OztBQU16QyxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLElBQWdCLEVBQ2YsTUFBc0IsRUFDdEIsT0FBZTtRQUZoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUVGLE9BQU8sSUFBSSxPQUFPLENBQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBRXpDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVqQixJQUFJLFNBQVMsRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQ1QsK0JBQStCLEVBQy9CLHNDQUFzQyxDQUN2QyxDQUFDO2dCQUVGOzttQkFFRztnQkFDRyxNQUFPLENBQUMsT0FBTyxHQUFHO29CQUV0QixLQUFLLEVBQUU7d0JBQ0wsU0FBUyxDQUFDLEdBQVcsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7d0JBRTlELFFBQVEsQ0FBQyxHQUFXLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQzt3QkFFeEUsT0FBTyxDQUFDLEdBQVcsSUFBSSxPQUFPLENBQUMsQ0FB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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssU0FBUztRQUVmLE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUM5QixJQUFJO2dCQUNGLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtvQkFDckIsT0FBTyxDQUFDLElBQUksQ0FBQzt3QkFDWCxNQUFNLEVBQUU7NEJBQ04sUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO3lCQUN2Qjt3QkFDRCxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTs0QkFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsVUFBVSxFQUFFLEVBQzVDLHNDQUFzQyxDQUFDLENBQUM7d0JBQzVDLENBQUM7d0JBQ0QsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7NEJBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLFVBQVUsRUFBRSxFQUMxQyxxQ0FBcUMsQ0FBQyxDQUFDO3dCQUMzQyxDQUFDO3FCQUNGLENBQUMsQ0FBQztpQkFDSjthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUU7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NEdBNUhVLGNBQWM7Z0hBQWQsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XHJcbmltcG9ydCAqIGFzIFdlYkZvbnQgZnJvbSAnd2ViZm9udGxvYWRlcic7XHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwSW5pdFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICB9XHJcblxyXG4gIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcclxuXHJcbiAgICAgIHRoaXMubG9hZEZvbnRzKCk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICclY1J1bm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZScsXHJcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFNoaW0gdGhlIHNoaW5kaWcgcHJlZnMgZnVuY3Rpb25hbGl0eSBmb3IgZGV2IG1vZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICAoPGFueT53aW5kb3cpLmdhZGdldHMgPSB7XHJcblxyXG4gICAgICAgICAgUHJlZnM6IGNsYXNzIHtcclxuICAgICAgICAgICAgZ2V0U3RyaW5nKGtleTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldEFycmF5KGtleTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpLnNwbGl0KCcsJykgfVxyXG5cclxuICAgICAgICAgICAgZ2V0Qm9vbChrZXk6IHN0cmluZykgeyByZXR1cm4gISF0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldENvdW50cnkoKSB7IH1cclxuXHJcbiAgICAgICAgICAgIGdldEZsb2F0KGtleTogc3RyaW5nKSB7IHJldHVybiBwYXJzZUZsb2F0KHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKGtleSkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldEludChrZXk6IHN0cmluZykgeyByZXR1cm4gcGFyc2VJbnQodGhpcy5nZXRQYXJhbWV0ZXJCeU5hbWUoa2V5KSkgfVxyXG5cclxuICAgICAgICAgICAgZ2V0TGFuZygpIHsgcmV0dXJuIHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCdsYW5nJykgPT09ICcnID8gJ2VuJyA6IHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCdsYW5nJyk7IH1cclxuXHJcbiAgICAgICAgICAgIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcsIHNlYXJjaCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKTogc3RyaW5nIHtcclxuXHJcbiAgICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgJ1xcXFwkJicpO1xyXG4gICAgICAgICAgICAgIGxldCByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgbmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScpLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMoc2VhcmNoKTtcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiAnJztcclxuICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csICcgJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwLmdldCgnYXNzZXRzL3VzZXItcHJlZnMueW1sJywge1xyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgICAgICB9KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkb2M6IGFueSA9IHlhbWwubG9hZChkYXRhKTtcclxuICAgICAgICAgIGxldCBwYXJhbXM6IGFueSA9IHt9XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiBkb2MucHJlZnMpIHtcclxuICAgICAgICAgICAgcGFyYW1zW3ZhbC5uYW1lXSA9IHZhbC5kZWZhdWx0X3ZhbHVlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuX3JvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIGAlY1VzZXIgcHJlZnMgbG9hZGVkIHN1Y2Nlc3NmdWxseWAsXHJcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7IGNvbG9yOnllbGxvdzsnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgJWNVbmFibGUgdG8gbG9hZCB1c2VyIHByZWZlcmVuY2VzIFlBTUwgZGVmaW5pdGlvbiBmaWxlOiAke2Vycn1gLFxyXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgJWNQbGVhc2Ugc2VlIG91ciBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbiBmb3IgaGVscCB3aXRoIHlvdXIgYXBwIGNvbmZpZ3VyYXRpb246IGh0dHBzOi8vZGV2ZWxvcGVyLnJldmVsZGlnaXRhbC5jb21gLFxyXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOnllbGxvdzsnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGdldEZhbWlseU5hbWUoY3NzKSB7XHJcblxyXG4gICAgbGV0IEZPTlRfRkFNSUxZX1JFR0VYID0gL2ZvbnQtZmFtaWx5OlxccyooPzpbJiMzOTsmIzM0O10pKlsnXCJdKiguKz8pWydcIl0qKD86WyYjMzk7JiMzNDtdKSpcXHMqOy9pO1xyXG4gICAgaWYgKEZPTlRfRkFNSUxZX1JFR0VYLnRlc3QoY3NzKSkge1xyXG4gICAgICB2YXIgbWF0Y2hlcyA9IGNzcy5tYXRjaChGT05UX0ZBTUlMWV9SRUdFWCk7XHJcbiAgICAgIHJldHVybiBtYXRjaGVzWzFdLnNwbGl0KCcsJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgZ2l2ZW4gZm9udCBmcm9tIEdvb2dsZSBXZWIgRm9udHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkRm9udHMoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICBwYXJhbWV0ZXJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGZvbnRGYW1pbHkgPSB0aGlzLmdldEZhbWlseU5hbWUodmFsKTtcclxuICAgICAgICBpZiAoZm9udEZhbWlseSAhPT0gJycpIHtcclxuICAgICAgICAgIFdlYkZvbnQubG9hZCh7XHJcbiAgICAgICAgICAgIGdvb2dsZToge1xyXG4gICAgICAgICAgICAgIGZhbWlsaWVzOiBbZm9udEZhbWlseV1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZm9udGFjdGl2ZTogKGZhbWlseU5hbWUpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJWNBY3RpdmF0aW5nIGZvbnQ6ICR7ZmFtaWx5TmFtZX1gLFxyXG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OycpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmb250aW5hY3RpdmU6IChmYW1pbHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYCVjRm9udCBpbmFjdGl2ZTogJHtmYW1pbHlOYW1lfWAsXHJcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOnllbGxvdzsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JldmVsZGlnaXRhbC9wbGF5ZXItY2xpZW50L3NyYy9saWIvYXBwLWluaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEUsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7Ozs7QUFFekMsTUFBTSxPQUFPLEdBQVksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xFLENBQUMsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBRzdCLGNBQWM7QUFJZCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLElBQWdCLEVBQ2YsTUFBc0IsRUFDdEIsT0FBZTtRQUZoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUVGLE9BQU8sSUFBSSxPQUFPLENBQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBRXpDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVqQixJQUFJLFNBQVMsRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQ1QsK0JBQStCLEVBQy9CLHNDQUFzQyxDQUN2QyxDQUFDO2dCQUVGOzttQkFFRztnQkFDRyxNQUFPLENBQUMsT0FBTyxHQUFHO29CQUV0QixLQUFLLEVBQUU7d0JBQ0wsU0FBUyxDQUFDLEdBQVcsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7d0JBRTlELFFBQVEs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MUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBlbmFibGVQcm9kTW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0ICogYXMgeWFtbCBmcm9tIFwianMteWFtbFwiO1xyXG5pbXBvcnQgKiBhcyBXZWJGb250IGZyb20gJ3dlYmZvbnRsb2FkZXInO1xyXG5cclxuY29uc3QgaXNMb2NhbDogYm9vbGVhbiA9IC9sb2NhbGhvc3QvLnRlc3QoZG9jdW1lbnQubG9jYXRpb24uaG9zdCk7XHJcbiFpc0xvY2FsICYmIGVuYWJsZVByb2RNb2RlKCk7XHJcblxyXG5cclxuLyoqIEBpZ25vcmUgKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwSW5pdFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICB9XHJcblxyXG4gIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcclxuXHJcbiAgICAgIHRoaXMubG9hZEZvbnRzKCk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICclY1J1bm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZScsXHJcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFNoaW0gdGhlIHNoaW5kaWcgcHJlZnMgZnVuY3Rpb25hbGl0eSBmb3IgZGV2IG1vZGVcclxuICAgICAgICAgKi9cclxuICAgICAgICAoPGFueT53aW5kb3cpLmdhZGdldHMgPSB7XHJcblxyXG4gICAgICAgICAgUHJlZnM6IGNsYXNzIHtcclxuICAgICAgICAgICAgZ2V0U3RyaW5nKGtleTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldEFycmF5KGtleTogc3RyaW5nKSB7IHJldHVybiB0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpLnNwbGl0KCcsJykgfVxyXG5cclxuICAgICAgICAgICAgZ2V0Qm9vbChrZXk6IHN0cmluZykgeyByZXR1cm4gISF0aGlzLmdldFBhcmFtZXRlckJ5TmFtZShrZXkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldENvdW50cnkoKSB7IH1cclxuXHJcbiAgICAgICAgICAgIGdldEZsb2F0KGtleTogc3RyaW5nKSB7IHJldHVybiBwYXJzZUZsb2F0KHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKGtleSkpIH1cclxuXHJcbiAgICAgICAgICAgIGdldEludChrZXk6IHN0cmluZykgeyByZXR1cm4gcGFyc2VJbnQodGhpcy5nZXRQYXJhbWV0ZXJCeU5hbWUoa2V5KSkgfVxyXG5cclxuICAgICAgICAgICAgZ2V0TGFuZygpIHsgcmV0dXJuIHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCdsYW5nJykgPT09ICcnID8gJ2VuJyA6IHRoaXMuZ2V0UGFyYW1ldGVyQnlOYW1lKCdsYW5nJyk7IH1cclxuXHJcbiAgICAgICAgICAgIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcsIHNlYXJjaCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmKTogc3RyaW5nIHtcclxuXHJcbiAgICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgJ1xcXFwkJicpO1xyXG4gICAgICAgICAgICAgIGxldCByZWdleCA9IG5ldyBSZWdFeHAoJ1s/Jl0nICsgbmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScpLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMoc2VhcmNoKTtcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICBpZiAoIXJlc3VsdHNbMl0pIHJldHVybiAnJztcclxuICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csICcgJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwLmdldCgnYXNzZXRzL3VzZXItcHJlZnMueW1sJywge1xyXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgICAgICB9KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkb2M6IGFueSA9IHlhbWwubG9hZChkYXRhKTtcclxuICAgICAgICAgIGxldCBwYXJhbXM6IGFueSA9IHt9XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiBkb2MucHJlZnMpIHtcclxuICAgICAgICAgICAgcGFyYW1zW3ZhbC5uYW1lXSA9IHZhbC5kZWZhdWx0X3ZhbHVlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuX3JvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIGAlY1VzZXIgcHJlZnMgbG9hZGVkIHN1Y2Nlc3NmdWxseWAsXHJcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7IGNvbG9yOnllbGxvdzsnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgJWNVbmFibGUgdG8gbG9hZCB1c2VyIHByZWZlcmVuY2VzIFlBTUwgZGVmaW5pdGlvbiBmaWxlOiAke2Vycn1gLFxyXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICBgJWNQbGVhc2Ugc2VlIG91ciBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbiBmb3IgaGVscCB3aXRoIHlvdXIgYXBwIGNvbmZpZ3VyYXRpb246IGh0dHBzOi8vZGV2ZWxvcGVyLnJldmVsZGlnaXRhbC5jb21gLFxyXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOnllbGxvdzsnXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGdldEZhbWlseU5hbWUoY3NzKSB7XHJcblxyXG4gICAgbGV0IEZPTlRfRkFNSUxZX1JFR0VYID0gL2ZvbnQtZmFtaWx5OlxccyooPzpbJiMzOTsmIzM0O10pKlsnXCJdKiguKz8pWydcIl0qKD86WyYjMzk7JiMzNDtdKSpcXHMqOy9pO1xyXG4gICAgaWYgKEZPTlRfRkFNSUxZX1JFR0VYLnRlc3QoY3NzKSkge1xyXG4gICAgICB2YXIgbWF0Y2hlcyA9IGNzcy5tYXRjaChGT05UX0ZBTUlMWV9SRUdFWCk7XHJcbiAgICAgIHJldHVybiBtYXRjaGVzWzFdLnNwbGl0KCcsJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgZ2l2ZW4gZm9udCBmcm9tIEdvb2dsZSBXZWIgRm9udHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkRm9udHMoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcbiAgICBwYXJhbWV0ZXJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IGZvbnRGYW1pbHkgPSB0aGlzLmdldEZhbWlseU5hbWUodmFsKTtcclxuICAgICAgICBpZiAoZm9udEZhbWlseSAhPT0gJycpIHtcclxuICAgICAgICAgIFdlYkZvbnQubG9hZCh7XHJcbiAgICAgICAgICAgIGdvb2dsZToge1xyXG4gICAgICAgICAgICAgIGZhbWlsaWVzOiBbZm9udEZhbWlseV1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZm9udGFjdGl2ZTogKGZhbWlseU5hbWUpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJWNBY3RpdmF0aW5nIGZvbnQ6ICR7ZmFtaWx5TmFtZX1gLFxyXG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OycpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmb250aW5hY3RpdmU6IChmYW1pbHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYCVjRm9udCBpbmFjdGl2ZTogJHtmYW1pbHlOYW1lfWAsXHJcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjpyZWQ7IGNvbG9yOnllbGxvdzsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -13,13 +13,29 @@ export class PlayerClientService {
13
13
  // share(),
14
14
  // tap(this.onCommand$)
15
15
  // );
16
+ /** @ignore */
16
17
  constructor(zone) {
18
+ /**
19
+ * Commands sent to this player.
20
+ */
17
21
  this.onCommand$ = new Subject();
22
+ /**
23
+ * Signals the gadget has been loaded and is ready to start.
24
+ */
18
25
  this.onReady$ = new BehaviorSubject(false);
26
+ /**
27
+ * Signals the gadget has been started by the player.
28
+ */
19
29
  this.onStart$ = new Subject();
30
+ /**
31
+ * Signals the gadgets has been stopped by the player.
32
+ */
20
33
  this.onStop$ = new Subject();
34
+ /** @ignore */
21
35
  this.onStartEvt$ = fromEvent(document, 'RevelDigital.Start').pipe(share(), tap(this.onStart$));
36
+ /** @ignore */
22
37
  this.onStopEvt$ = fromEvent(document, 'RevelDigital.Stop').pipe(share(), tap(this.onStop$));
38
+ /** @ignore */
23
39
  this.onCommandEvt$ = fromEvent(document, 'RevelDigital.Command').pipe(map((e) => { return { name: e.detail.name, arg: e.detail.arg }; }), share(), tap(this.onCommand$));
24
40
  let self = this;
25
41
  window.RevelDigital = {
@@ -47,15 +63,27 @@ export class PlayerClientService {
47
63
  this.clientPromise = null;
48
64
  this.onReady$.next(true);
49
65
  }
66
+ /** @ignore */
50
67
  ngOnDestroy() {
51
68
  this.onStartSub?.unsubscribe();
52
69
  this.onStopSub?.unsubscribe();
53
70
  this.onCommandSub?.unsubscribe();
54
71
  this.onReady$.next(false);
55
72
  }
73
+ /** @ignore */
56
74
  static init(data) {
57
75
  console.log('%c⚙️ Initializing Revel Digital client library', 'background-color:blue; color:yellow;');
58
76
  }
77
+ /**
78
+ * This method allows the gadget to communicate with player scripting.
79
+ * If the appropriate scripting is in place in the currently running template, calling this method
80
+ * will initiate a callback which can be acted upon in player script.
81
+ *
82
+ * @example
83
+ * client.callback('test', 'this');
84
+ *
85
+ * @param args variable number of arguments
86
+ */
59
87
  callback(...args) {
60
88
  this.getClient().then((client) => {
61
89
  switch (args.length) {
@@ -80,9 +108,28 @@ export class PlayerClientService {
80
108
  }
81
109
  });
82
110
  }
111
+ /**
112
+ * Accessor method for the user preferences interface exposed by the Gadgets API.
113
+ *
114
+ * See {@link https://developers.google.com/gadgets/docs/basic} for more details on the Gadgets API.
115
+ *
116
+ * @example
117
+ * constructor(public client: PlayerClientService) {
118
+ * let prefs = client.getPrefs();
119
+ * let myString = prefs.getString('myStringPref');
120
+ * }
121
+ * @returns {gadgets.Prefs} Gadget API Prefs object
122
+ */
83
123
  getPrefs() {
84
124
  return new window['gadgets']['Prefs']();
85
125
  }
126
+ /**
127
+ * Returns the current device time in ISO8601 format.
128
+ * Current device time is determined by the device timezone assigned to the device in the CMS.
129
+ *
130
+ * @param date Optional. If supplied will translate the supplied date/time to device time based on respective timezones.
131
+ * @returns Date/time in ISO8601 format
132
+ */
86
133
  async getDeviceTime(date) {
87
134
  const client = await this.getClient();
88
135
  if (date !== undefined) {
@@ -90,46 +137,108 @@ export class PlayerClientService {
90
137
  }
91
138
  return client.getDeviceTime();
92
139
  }
140
+ /**
141
+ * Returns the timezone name currently assigned to the device.
142
+ *
143
+ * @returns Timezone Name
144
+ */
93
145
  async getDeviceTimeZoneName() {
94
146
  const client = await this.getClient();
95
147
  return client.getDeviceTimeZoneName();
96
148
  }
149
+ /**
150
+ * Returns the timezone ID currently assigned to the device.
151
+ *
152
+ * @returns Timezone ID
153
+ */
97
154
  async getDeviceTimeZoneID() {
98
155
  const client = await this.getClient();
99
156
  return client.getDeviceTimeZoneID();
100
157
  }
158
+ /**
159
+ * Returns the numerical offset from GMT of the timezone currently assigned to the device.
160
+ *
161
+ * @returns Timezone offset
162
+ */
101
163
  async getDeviceTimeZoneOffset() {
102
164
  const client = await this.getClient();
103
165
  return client.getDeviceTimeZoneOffset();
104
166
  }
167
+ /**
168
+ * Returns the language code of the language currently assigned to the device.
169
+ *
170
+ * @returns Language code
171
+ */
105
172
  async getLanguageCode() {
106
173
  const client = await this.getClient();
107
174
  return client.getLanguageCode();
108
175
  }
176
+ /**
177
+ * Returns the unique Revel Digital device key associated with the device.
178
+ *
179
+ * @returns Device key
180
+ */
109
181
  async getDeviceKey() {
110
182
  const client = await this.getClient();
111
183
  return client.getDeviceKey();
112
184
  }
185
+ /**
186
+ * Send a command to the player device.
187
+ *
188
+ * @param name Command name
189
+ * @param arg Command argument
190
+ */
113
191
  sendCommand(name, arg) {
114
192
  this.getClient().then((client) => {
115
193
  client.sendCommand(name, arg);
116
194
  });
117
195
  }
196
+ /**
197
+ * Send a command to any remote player with the supplied device key(s).
198
+ * Note: Remote commands can only be delivered to devices within the same account as the sender device.
199
+ *
200
+ * @param deviceKeys Array of remote device keys
201
+ * @param name Command name
202
+ * @param arg Command arg
203
+ */
118
204
  sendRemoteCommand(deviceKeys, name, arg) {
119
205
  this.getClient().then((client) => {
120
206
  client.sendRemoteCommand(deviceKeys, name, arg);
121
207
  });
122
208
  }
209
+ /**
210
+ * Log an event for use with AdHawk analytics.
211
+ * Events are used for tracking various metrics including usage statistics, player condition, state changes, etc.
212
+ *
213
+ * @param eventName Unique name for this event
214
+ * @param properties A map of user defined properties to associate with this event
215
+ */
123
216
  track(eventName, properties) {
124
217
  this.getClient().then((client) => {
125
218
  client.track(eventName, JSON.stringify(properties));
126
219
  });
127
220
  }
221
+ /**
222
+ * Method for initiating a timed event.
223
+ * Timed events are useful for tracking the duration of an event and must be proceeded with a call to track().
224
+ *
225
+ * @example
226
+ * client.timeEvent('testEvent');
227
+ * client.track("test", { "a": "b" });
228
+ * @param eventName Unique name for this event
229
+ */
128
230
  timeEvent(eventName) {
129
231
  this.getClient().then((client) => {
130
232
  client.timeEvent(eventName);
131
233
  });
132
234
  }
235
+ /**
236
+ * A session is a way of grouping events together. Each event has an associated session ID.
237
+ * Session ID's are randomly generated and reset by subsequent calls to newEventSession().
238
+ *
239
+ * Each call to track() will utilize the same session ID, until another call to newEventSession().
240
+ * @param id Optional. User supplied session ID. If not supplied a random session ID will be generated.
241
+ */
133
242
  newEventSession(id) {
134
243
  this.getClient().then((client) => {
135
244
  if (id !== undefined) {
@@ -140,20 +249,28 @@ export class PlayerClientService {
140
249
  }
141
250
  });
142
251
  }
252
+ /**
253
+ * Returns the root folder utilized by this player device.
254
+ *
255
+ * @returns Path to the root folder
256
+ */
143
257
  async getRevelRoot() {
144
258
  const client = await this.getClient();
145
259
  return client.getRevelRoot();
146
260
  }
261
+ /**
262
+ * Returns a map of commands currently active for this device.
263
+ *
264
+ * @returns Map of commands currently active for this device.
265
+ */
147
266
  async getCommandMap() {
148
267
  const client = await this.getClient();
149
268
  return JSON.parse(await client.getCommandMap());
150
- // let map = new Map<string, any>();
151
- // let obj = JSON.parse(await client.getCommandMap());
152
- // for (let key in obj) {
153
- // map.set(key, obj[key]);
154
- // }
155
- // return map;
156
269
  }
270
+ /**
271
+ * Indicate to the player that this gadget has finished it's visualization.
272
+ * This allows the player to proceed with the next item in a playlist if applicable.
273
+ */
157
274
  finish() {
158
275
  this.getClient().then((client) => {
159
276
  client.finish();
@@ -162,6 +279,7 @@ export class PlayerClientService {
162
279
  // ---
163
280
  // PRIVATE METHODS.
164
281
  // ---
282
+ /** @ignore */
165
283
  getClient() {
166
284
  if (this.clientPromise) {
167
285
  return (this.clientPromise);
@@ -208,6 +326,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
208
326
  // I provide a mock API for the 3rd-party script. This just allows the consuming code to
209
327
  // act as though the library is available even if it failed to load (example, it was
210
328
  // blocked by an ad-blocker).
329
+ /** @ignore */
211
330
  class NoopClient {
212
331
  constructor() {
213
332
  console.log('%cClient API not available, falling back to mock API', 'background-color:blue; color:yellow;');
@@ -258,4 +377,4 @@ class NoopClient {
258
377
  // NOOP implement, nothing to do....
259
378
  }
260
379
  }
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9wbGF5ZXItY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUF5RGpELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLDBDQUEwQztJQUMxQyxpRUFBaUU7SUFDakUsMkNBQTJDO0lBQzNDLCtDQUErQztJQUMvQywrQ0FBK0M7SUFDL0Msc0RBQXNEO0lBQ3RELHdFQUF3RTtJQUN4RSxhQUFhO0lBQ2IseUJBQXlCO0lBQ3pCLEtBQUs7SUFHTCxZQUFZLElBQVk7UUF4Q2pCLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVN2QixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEtBQUssRUFBRSxFQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ25CLENBQUM7UUFFTSxlQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FDaEUsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDbEIsQ0FBQztRQUVNLGtCQUFhLEdBQUcsU0FBUyxDQUFVLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FDL0UsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBYSxDQUFBLENBQUMsQ0FBQyxDQUFDLEVBQ2pGLEtBQUssRUFBRSxFQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3JCLENBQUM7UUFnQkEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBYyxDQUFDLFlBQVksR0FBRztZQUM3QixVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLFVBQVUsSUFBWSxFQUFFLEdBQVc7b0JBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDakQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2FBQ0Y7U0FDRixDQUFBO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFFVCxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFTO1FBRTFCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsZ0RBQWdELEVBQ2hELHNDQUFzQyxDQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFHLElBQVc7UUFFNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRS9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsS0FBSyxDQUFDO29CQUNKLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU0sUUFBUTtRQUViLE9BQU8sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFXO1FBRXBDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXRDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQjtRQUVoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUV0QyxPQUFPLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CO1FBRTlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXRDLE9BQU8sTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFFbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsT0FBTyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWU7UUFFMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsT0FBTyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZO1FBRXZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXRDLE9BQU8sTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBWSxFQUFFLEdBQVc7UUFFMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLGlCQUFpQixDQUFDLFVBQW9CLEVBQUUsSUFBWSxFQUFFLEdBQVc7UUFFdEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFpQixFQUFFLFVBQTRCO1FBRTFELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU0sU0FBUyxDQUFDLFNBQWlCO1FBRWhDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFXO1FBRWhDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7Z0JBQ3BCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFFdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdEMsT0FBTyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhO1FBRXhCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRWhELG9DQUFvQztRQUVwQyxzREFBc0Q7UUFDdEQseUJBQXlCO1FBQ3pCLDRCQUE0QjtRQUM1QixJQUFJO1FBQ0osY0FBYztJQUNoQixDQUFDO0lBRU0sTUFBTTtRQUVYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUUvQixNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsTUFBTTtJQUNOLG1CQUFtQjtJQUNuQixNQUFNO0lBRUUsU0FBUztRQUVmLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUV0QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBRWpCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDOUQ7UUFFRCw0RUFBNEU7UUFDNUUsK0VBQStFO1FBQy9FLGVBQWU7UUFDZixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtZQUU3Qyw0RUFBNEU7WUFDNUUsd0VBQXdFO1lBQ3hFLDZFQUE2RTtZQUM3RSxpQ0FBaUM7WUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRTtRQUVELGlGQUFpRjtRQUNqRixnRkFBZ0Y7UUFDaEYsOEVBQThFO1FBQzlFLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUM5QixDQUFDLE9BQU8sRUFBRSxFQUFFO1lBRVYsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixNQUFNLEVBQ04sU0FBUyxnQkFBZ0I7Z0JBRXZCLDhEQUE4RDtnQkFDOUQsMkRBQTJEO2dCQUMzRCxpRUFBaUU7Z0JBQ2pFLGNBQWM7Z0JBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FDRixDQUFDO1FBRUosQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7O2lIQWxTVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBeVNELHlGQUF5RjtBQUN6Rix5RkFBeUY7QUFFekYsd0ZBQXdGO0FBQ3hGLG9GQUFvRjtBQUNwRiw2QkFBNkI7QUFDN0IsTUFBTSxVQUFVO0lBRWQ7UUFFRSxPQUFPLENBQUMsR0FBRyxDQUNULHNEQUFzRCxFQUN0RCxzQ0FBc0MsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBRyxJQUFXO1FBRTVCLG9DQUFvQztJQUN0QyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVc7UUFFOUIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQjtRQUVoQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUI7UUFFOUIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsdUJBQXVCO1FBRWxDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWU7UUFFMUIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUV2QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUUxQyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFVBQW9CLEVBQUUsSUFBWSxFQUFFLEdBQVc7UUFFdEUsb0NBQW9DO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBaUIsRUFBRSxVQUFtQjtRQUVqRCxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxTQUFpQjtRQUVoQyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFXO1FBRWhDLG9DQUFvQztJQUN0QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFFdkIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYTtRQUV4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU07UUFFWCxvQ0FBb0M7SUFDdEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHNoYXJlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGdhZGdldHMgfSBmcm9tICdAcmV2ZWxkaWdpdGFsL2dhZGdldC10eXBlcyc7XHJcblxyXG5cclxuLy8gU28gdGhhdCBUeXBlU2NyaXB0IGRvZXNuJ3QgY29tcGxhaW4sIHdlJ3JlIGdvaW5nIHRvIGF1Z21lbnQgdGhlIEdMT0JBTCAvIFdJTkRPVyBcclxuLy8gbmFtZS1zcGFjZSBkZWZpbml0aW9uIHRvIGluY2x1ZGUgdGhlIFRyYWNrZXIgQVBJLiBUaGlzIGFsc28gcHJvdmlkZXMgdXMgd2l0aCBhIHBsYWNlXHJcbi8vIHRvIGFjdHVhbGx5IERPQ1VNRU5UIHRoZSBBUEkgc28gdGhhdCBvdXIgZGV2ZWxvcGVycyBhcmVuJ3QgZ3Vlc3NpbmcgYWJvdXQgd2hhdCdzXHJcbi8vIGF2YWlsYWJsZSBvbiB0aGUgbGlicmFyeS5cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIHZhciBDbGllbnQ6IENsaWVudDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGllbnQge1xyXG5cclxuICBjYWxsYmFjayguLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XHJcblxyXG4gIGdldERldmljZVRpbWUoZGF0ZT86IERhdGUpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGdldERldmljZVRpbWVab25lTmFtZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGdldERldmljZVRpbWVab25lSUQoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG5cclxuICBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj47XHJcblxyXG4gIGdldExhbmd1YWdlQ29kZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGdldERldmljZUtleSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgdGltZUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nPjtcclxuXHJcbiAgZ2V0Q29tbWFuZE1hcCgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGZpbmlzaCgpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50UHJvcGVydGllcyB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBhcmc6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxheWVyQ2xpZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgY2xpZW50UHJvbWlzZTogUHJvbWlzZTxDbGllbnQ+IHwgbnVsbDtcclxuXHJcbiAgcHVibGljIG9uQ29tbWFuZCQgPSBuZXcgU3ViamVjdDxDb21tYW5kPigpO1xyXG4gIHB1YmxpYyBvblJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG4gIHB1YmxpYyBvblN0YXJ0JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIG9uU3RvcCQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvL1xyXG4gIC8vIFR3byBtZXRob2RzIGF2YWlsYWJsZSBmb3IgY2FsbGluZyBpbnRvIHRoZSBsaWJyYXJ5OlxyXG4gIC8vXHJcbiAgLy8gMSkgVXNpbmcgZGlzcGF0Y2hFdmVudCgpIHdpdGggdGhlIGZvbGxvd2luZyBjdXN0b20gZXZlbnRzXHJcbiAgLy8gMikgVXNpbmcgdGhlIHdpbmRvdyBzY29wZWQgUmV2ZWxEaWdpdGFsIG9iamVjdCBhcyBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3RvclxyXG4gIC8vXHJcbiAgcHJpdmF0ZSBvblN0YXJ0U3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBvblN0YXJ0RXZ0JCA9IGZyb21FdmVudChkb2N1bWVudCwgJ1JldmVsRGlnaXRhbC5TdGFydCcpLnBpcGUoXHJcbiAgICBzaGFyZSgpLFxyXG4gICAgdGFwKHRoaXMub25TdGFydCQpXHJcbiAgKTtcclxuICBwcml2YXRlIG9uU3RvcFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgb25TdG9wRXZ0JCA9IGZyb21FdmVudChkb2N1bWVudCwgJ1JldmVsRGlnaXRhbC5TdG9wJykucGlwZShcclxuICAgIHNoYXJlKCksXHJcbiAgICB0YXAodGhpcy5vblN0b3AkKVxyXG4gICk7XHJcbiAgcHJpdmF0ZSBvbkNvbW1hbmRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG9uQ29tbWFuZEV2dCQgPSBmcm9tRXZlbnQ8Q29tbWFuZD4oZG9jdW1lbnQsICdSZXZlbERpZ2l0YWwuQ29tbWFuZCcpLnBpcGUoXHJcbiAgICBtYXAoKGU6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlLmRldGFpbC5uYW1lLCBhcmc6IGUuZGV0YWlsLmFyZyB9IGFzIENvbW1hbmQgfSksXHJcbiAgICBzaGFyZSgpLFxyXG4gICAgdGFwKHRoaXMub25Db21tYW5kJClcclxuICApO1xyXG5cclxuICAvLyBwcml2YXRlIG9uUG9zdE1lc3NhZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAvLyBwcml2YXRlIG9uUG9zdE1lc3NhZ2VFdnQkID0gZnJvbUV2ZW50KHdpbmRvdywgJ21lc3NhZ2UnKS5waXBlKFxyXG4gIC8vICAgZmlsdGVyKChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT5cclxuICAvLyAgICAgbWVzc2FnZUV2ZW50LnNvdXJjZSAhPT0gd2luZG93LnBhcmVudCAmJlxyXG4gIC8vICAgICB0eXBlb2YgbWVzc2FnZUV2ZW50LmRhdGEgPT09ICdzdHJpbmcnICYmXHJcbiAgLy8gICAgIG1lc3NhZ2VFdmVudC5kYXRhLnN0YXJ0c1dpdGgoJ3JldmVsZGlnaXRhbDonKSksXHJcbiAgLy8gICBtYXAoKGU6IGFueSkgPT4geyByZXR1cm4gSlNPTi5wYXJzZShlLnN1YnN0cmluZygxMykpIGFzIENvbW1hbmQgfSksXHJcbiAgLy8gICBzaGFyZSgpLFxyXG4gIC8vICAgdGFwKHRoaXMub25Db21tYW5kJClcclxuICAvLyApO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3Ioem9uZTogTmdab25lKSB7XHJcblxyXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgKHdpbmRvdyBhcyBhbnkpLlJldmVsRGlnaXRhbCA9IHtcclxuICAgICAgQ29udHJvbGxlcjoge1xyXG4gICAgICAgIG9uQ29tbWFuZDogZnVuY3Rpb24gKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpIHtcclxuICAgICAgICAgIHpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgc2VsZi5vbkNvbW1hbmQkLm5leHQoeyBuYW1lOiBuYW1lLCBhcmc6IGFyZyB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25TdGFydDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLm9uU3RhcnQkLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uU3RvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBzZWxmLm9uU3RvcCQubmV4dChudWxsKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25TdGFydFN1YiA9IHRoaXMub25TdGFydEV2dCQuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcbiAgICB0aGlzLm9uU3RvcFN1YiA9IHRoaXMub25TdG9wRXZ0JC5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuICAgIHRoaXMub25Db21tYW5kU3ViID0gdGhpcy5vbkNvbW1hbmRFdnQkLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cclxuICAgIHRoaXMuY2xpZW50UHJvbWlzZSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5vblJlYWR5JC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5vblN0YXJ0U3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5vblN0b3BTdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLm9uQ29tbWFuZFN1Yj8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLm9uUmVhZHkkLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpbml0KGRhdGE6IGFueSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAnJWPimpnvuI8gSW5pdGlhbGl6aW5nIFJldmVsIERpZ2l0YWwgY2xpZW50IGxpYnJhcnknLFxyXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcjpibHVlOyBjb2xvcjp5ZWxsb3c7J1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxsYmFjayguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcblxyXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1swXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1sxXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1syXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1szXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgICBjbGllbnQuY2FsbGJhY2soYXJnc1s0XSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQcmVmcygpOiBnYWRnZXRzLlByZWZzIHtcclxuXHJcbiAgICByZXR1cm4gbmV3IHdpbmRvd1snZ2FkZ2V0cyddWydQcmVmcyddKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZShkYXRlPzogRGF0ZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICBpZiAoZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZShkYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWVab25lTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lWm9uZU5hbWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZUlEKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldERldmljZVRpbWVab25lSUQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExhbmd1YWdlQ29kZSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXRMYW5ndWFnZUNvZGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VLZXkoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlS2V5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZENvbW1hbmQobmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC5zZW5kQ29tbWFuZChuYW1lLCBhcmcpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC5zZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzLCBuYW1lLCBhcmcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhY2soZXZlbnROYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM/OiBFdmVudFByb3BlcnRpZXMpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQudHJhY2soZXZlbnROYW1lLCBKU09OLnN0cmluZ2lmeShwcm9wZXJ0aWVzKSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRpbWVFdmVudChldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC50aW1lRXZlbnQoZXZlbnROYW1lKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5nZXRDbGllbnQoKS50aGVuKChjbGllbnQpID0+IHtcclxuICAgICAgaWYgKGlkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjbGllbnQubmV3RXZlbnRTZXNzaW9uKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xpZW50Lm5ld0V2ZW50U2Vzc2lvbihpZCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldFJldmVsUm9vdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldENvbW1hbmRNYXAoKTogUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IGNsaWVudC5nZXRDb21tYW5kTWFwKCkpO1xyXG5cclxuICAgIC8vIGxldCBtYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG5cclxuICAgIC8vIGxldCBvYmogPSBKU09OLnBhcnNlKGF3YWl0IGNsaWVudC5nZXRDb21tYW5kTWFwKCkpO1xyXG4gICAgLy8gZm9yIChsZXQga2V5IGluIG9iaikge1xyXG4gICAgLy8gICBtYXAuc2V0KGtleSwgb2JqW2tleV0pO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaW5pc2goKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5nZXRDbGllbnQoKS50aGVuKChjbGllbnQpID0+IHtcclxuXHJcbiAgICAgIGNsaWVudC5maW5pc2goKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyAtLS1cclxuICAvLyBQUklWQVRFIE1FVEhPRFMuXHJcbiAgLy8gLS0tXHJcblxyXG4gIHByaXZhdGUgZ2V0Q2xpZW50KCk6IFByb21pc2U8Q2xpZW50PiB7XHJcblxyXG4gICAgaWYgKHRoaXMuY2xpZW50UHJvbWlzZSkge1xyXG5cclxuICAgICAgcmV0dXJuICh0aGlzLmNsaWVudFByb21pc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cuQ2xpZW50KSB7XHJcblxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh3aW5kb3cuQ2xpZW50KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQSBcImNvbXBsZXRlXCIgc3RhdHVzIGluZGljYXRlcyB0aGF0IHRoZSBcImxvYWRcIiBldmVudCBoYXMgYmVlbiBmaXJlZCBvbiB0aGVcclxuICAgIC8vIHdpbmRvdzsgYW5kLCB0aGF0IGFsbCBzdWItcmVzb3VyY2VzIHN1Y2ggYXMgU2NyaXB0cywgSW1hZ2VzLCBhbmQgRnJhbWVzIGhhdmVcclxuICAgIC8vIGJlZW4gbG9hZGVkLlxyXG4gICAgaWYgKHdpbmRvdy5kb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuXHJcbiAgICAgIC8vIElmIHRoaXMgZXZlbnQgaGFzIGZpcmVkIEFORCB0aGUgM3JkLXBhcnR5IHNjcmlwdCBpc24ndCBhdmFpbGFibGUgKHNlZSBJRi1cclxuICAgICAgLy8gY29uZGl0aW9uIEJFRk9SRSB0aGlzIG9uZSksIGl0IG1lYW5zIHRoYXQgdGhlIDNyZC1wYXJ0eSBzY3JpcHQgZWl0aGVyXHJcbiAgICAgIC8vIGZhaWxlZCBvbiB0aGUgbmV0d29yayBvciB3YXMgQkxPQ0tFRCBieSBhbiBhZC1ibG9ja2VyLiBBcyBzdWNoLCB3ZSBoYXZlIHRvXHJcbiAgICAgIC8vIGZhbGwtYmFjayB0byB1c2luZyBhIG1vY2sgQVBJLlxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShuZXcgTm9vcENsaWVudCgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQVNTRVJUOiBJZiB3ZSBtYWRlIGl0IHRoaXMgZmFyLCB0aGUgZG9jdW1lbnQgaGFzIG5vdCBjb21wbGV0ZWQgbG9hZGluZyAoYnV0IGl0XHJcbiAgICAvLyBtYXkgYmUgaW4gYW4gXCJpbnRlcmFjdGl2ZVwiIHN0YXRlIHdoaWNoIGlzIHdoZW4gSSBiZWxpZXZlIHRoYXQgdGhlIEFuZ3VsYXIgYXBwXHJcbiAgICAvLyBnZXRzIGJvb3RzdHJhcHBlZCkuIEFzIHN1Y2gsIHdlIG5lZWQgYmluZCB0byB0aGUgTE9BRCBldmVudCB0byB3YWl0IGZvciBvdXJcclxuICAgIC8vIHRoaXJkLXBhcnR5IHNjcmlwdHMgdG8gbG9hZCAob3IgZmFpbCB0byBsb2FkLCBvciBiZSBibG9ja2VkKS5cclxuICAgIHRoaXMuY2xpZW50UHJvbWlzZSA9IG5ldyBQcm9taXNlPENsaWVudD4oXHJcbiAgICAgIChyZXNvbHZlKSA9PiB7XHJcblxyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICAgXCJsb2FkXCIsXHJcbiAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVXaW5kb3dMb2FkKCkge1xyXG5cclxuICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIDNyZC1wYXJ0eSBsaWJyYXJ5IGlzIGVpdGhlciBhdmFpbGFibGUgb3JcclxuICAgICAgICAgICAgLy8gaXQncyBub3QgLSB0aGVyZSdzIG5vIGZ1cnRoZXIgbG9hZGluZyB0byBkby4gSWYgaXQncyBub3RcclxuICAgICAgICAgICAgLy8gcHJlc2VudCBvbiB0aGUgZ2xvYmFsIHNjb3BlLCB3ZSdyZSBnb2luZyB0byBmYWxsLWJhY2sgdG8gdXNpbmdcclxuICAgICAgICAgICAgLy8gYSBtb2NrIEFQSS5cclxuICAgICAgICAgICAgcmVzb2x2ZSh3aW5kb3cuQ2xpZW50IHx8IG5ldyBOb29wQ2xpZW50KCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAodGhpcy5jbGllbnRQcm9taXNlKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXHJcblxyXG4vLyBJIHByb3ZpZGUgYSBtb2NrIEFQSSBmb3IgdGhlIDNyZC1wYXJ0eSBzY3JpcHQuIFRoaXMganVzdCBhbGxvd3MgdGhlIGNvbnN1bWluZyBjb2RlIHRvXHJcbi8vIGFjdCBhcyB0aG91Z2ggdGhlIGxpYnJhcnkgaXMgYXZhaWxhYmxlIGV2ZW4gaWYgaXQgZmFpbGVkIHRvIGxvYWQgKGV4YW1wbGUsIGl0IHdhc1xyXG4vLyBibG9ja2VkIGJ5IGFuIGFkLWJsb2NrZXIpLlxyXG5jbGFzcyBOb29wQ2xpZW50IGltcGxlbWVudHMgQ2xpZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgICclY0NsaWVudCBBUEkgbm90IGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIG1vY2sgQVBJJyxcclxuICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OydcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsbGJhY2soLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREZXZpY2VUaW1lKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZVpvbmVOYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZUlEKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGFuZ3VhZ2VDb2RlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VLZXkoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZykge1xyXG5cclxuICAgIC8vIE5PT1AgaW1wbGVtZW50LCBub3RoaW5nIHRvIGRvLi4uLlxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGltZUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRDb21tYW5kTWFwKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgne30nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaW5pc2goKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG59XHJcbiJdfQ==
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9wbGF5ZXItY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUE0RGpELE1BQU0sT0FBTyxtQkFBbUI7SUFtRDlCLDBDQUEwQztJQUMxQyxpRUFBaUU7SUFDakUsMkNBQTJDO0lBQzNDLCtDQUErQztJQUMvQywrQ0FBK0M7SUFDL0Msc0RBQXNEO0lBQ3RELHdFQUF3RTtJQUN4RSxhQUFhO0lBQ2IseUJBQXlCO0lBQ3pCLEtBQUs7SUFFTCxjQUFjO0lBQ2QsWUFBWSxJQUFZO1FBMUR4Qjs7V0FFRztRQUNJLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzNDOztXQUVHO1FBQ0ksYUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDOztXQUVHO1FBQ0ksYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDSSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVUvQixjQUFjO1FBQ04sZ0JBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUNsRSxLQUFLLEVBQUUsRUFDUCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNuQixDQUFDO1FBR0YsY0FBYztRQUNOLGVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFF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O1FBRXZCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQVksRUFBRSxHQUFXO1FBRTFDLG9DQUFvQztJQUN0QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsVUFBb0IsRUFBRSxJQUFZLEVBQUUsR0FBVztRQUV0RSxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFpQixFQUFFLFVBQW1CO1FBRWpELG9DQUFvQztJQUN0QyxDQUFDO0lBRU0sU0FBUyxDQUFDLFNBQWlCO1FBRWhDLG9DQUFvQztJQUN0QyxDQUFDO0lBRU0sZUFBZSxDQUFDLEVBQVc7UUFFaEMsb0NBQW9DO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUV2QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhO1FBRXhCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTTtRQUVYLG9DQUFvQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZ2FkZ2V0cyB9IGZyb20gJ0ByZXZlbGRpZ2l0YWwvZ2FkZ2V0LXR5cGVzJztcclxuXHJcblxyXG4vLyBTbyB0aGF0IFR5cGVTY3JpcHQgZG9lc24ndCBjb21wbGFpbiwgd2UncmUgZ29pbmcgdG8gYXVnbWVudCB0aGUgR0xPQkFMIC8gV0lORE9XIFxyXG4vLyBuYW1lLXNwYWNlIGRlZmluaXRpb24gdG8gaW5jbHVkZSB0aGUgVHJhY2tlciBBUEkuIFRoaXMgYWxzbyBwcm92aWRlcyB1cyB3aXRoIGEgcGxhY2VcclxuLy8gdG8gYWN0dWFsbHkgRE9DVU1FTlQgdGhlIEFQSSBzbyB0aGF0IG91ciBkZXZlbG9wZXJzIGFyZW4ndCBndWVzc2luZyBhYm91dCB3aGF0J3NcclxuLy8gYXZhaWxhYmxlIG9uIHRoZSBsaWJyYXJ5LlxyXG5cclxuLyoqIEBpZ25vcmUgKi9cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIHZhciBDbGllbnQ6IENsaWVudDtcclxufVxyXG5cclxuLyoqIEBpZ25vcmUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDbGllbnQge1xyXG5cclxuICBjYWxsYmFjayguLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XHJcblxyXG4gIGdldERldmljZVRpbWUoZGF0ZT86IERhdGUpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGdldERldmljZVRpbWVab25lTmFtZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGdldERldmljZVRpbWVab25lSUQoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG5cclxuICBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj47XHJcblxyXG4gIGdldExhbmd1YWdlQ29kZSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGdldERldmljZUtleSgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQ7XHJcblxyXG4gIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgdGltZUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nPjtcclxuXHJcbiAgZ2V0Q29tbWFuZE1hcCgpOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIGZpbmlzaCgpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50UHJvcGVydGllcyB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBhcmc6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxheWVyQ2xpZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjbGllbnRQcm9taXNlOiBQcm9taXNlPENsaWVudD4gfCBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBDb21tYW5kcyBzZW50IHRvIHRoaXMgcGxheWVyLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkNvbW1hbmQkID0gbmV3IFN1YmplY3Q8Q29tbWFuZD4oKTtcclxuICAvKipcclxuICAgKiBTaWduYWxzIHRoZSBnYWRnZXQgaGFzIGJlZW4gbG9hZGVkIGFuZCBpcyByZWFkeSB0byBzdGFydC5cclxuICAgKi9cclxuICBwdWJsaWMgb25SZWFkeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICAvKipcclxuICAgKiBTaWduYWxzIHRoZSBnYWRnZXQgaGFzIGJlZW4gc3RhcnRlZCBieSB0aGUgcGxheWVyLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblN0YXJ0JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgLyoqXHJcbiAgICogU2lnbmFscyB0aGUgZ2FkZ2V0cyBoYXMgYmVlbiBzdG9wcGVkIGJ5IHRoZSBwbGF5ZXIuXHJcbiAgICovXHJcbiAgcHVibGljIG9uU3RvcCQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvL1xyXG4gIC8vIFR3byBtZXRob2RzIGF2YWlsYWJsZSBmb3IgY2FsbGluZyBpbnRvIHRoZSBsaWJyYXJ5OlxyXG4gIC8vXHJcbiAgLy8gMSkgVXNpbmcgZGlzcGF0Y2hFdmVudCgpIHdpdGggdGhlIGZvbGxvd2luZyBjdXN0b20gZXZlbnRzXHJcbiAgLy8gMikgVXNpbmcgdGhlIHdpbmRvdyBzY29wZWQgUmV2ZWxEaWdpdGFsIG9iamVjdCBhcyBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3RvclxyXG4gIC8vXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uU3RhcnRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25TdGFydEV2dCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdSZXZlbERpZ2l0YWwuU3RhcnQnKS5waXBlKFxyXG4gICAgc2hhcmUoKSxcclxuICAgIHRhcCh0aGlzLm9uU3RhcnQkKVxyXG4gICk7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uU3RvcFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBvblN0b3BFdnQkID0gZnJvbUV2ZW50KGRvY3VtZW50LCAnUmV2ZWxEaWdpdGFsLlN0b3AnKS5waXBlKFxyXG4gICAgc2hhcmUoKSxcclxuICAgIHRhcCh0aGlzLm9uU3RvcCQpXHJcbiAgKTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgb25Db21tYW5kU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIG9uQ29tbWFuZEV2dCQgPSBmcm9tRXZlbnQ8Q29tbWFuZD4oZG9jdW1lbnQsICdSZXZlbERpZ2l0YWwuQ29tbWFuZCcpLnBpcGUoXHJcbiAgICBtYXAoKGU6IGFueSkgPT4geyByZXR1cm4geyBuYW1lOiBlLmRldGFpbC5uYW1lLCBhcmc6IGUuZGV0YWlsLmFyZyB9IGFzIENvbW1hbmQgfSksXHJcbiAgICBzaGFyZSgpLFxyXG4gICAgdGFwKHRoaXMub25Db21tYW5kJClcclxuICApO1xyXG5cclxuICAvLyBwcml2YXRlIG9uUG9zdE1lc3NhZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAvLyBwcml2YXRlIG9uUG9zdE1lc3NhZ2VFdnQkID0gZnJvbUV2ZW50KHdpbmRvdywgJ21lc3NhZ2UnKS5waXBlKFxyXG4gIC8vICAgZmlsdGVyKChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT5cclxuICAvLyAgICAgbWVzc2FnZUV2ZW50LnNvdXJjZSAhPT0gd2luZG93LnBhcmVudCAmJlxyXG4gIC8vICAgICB0eXBlb2YgbWVzc2FnZUV2ZW50LmRhdGEgPT09ICdzdHJpbmcnICYmXHJcbiAgLy8gICAgIG1lc3NhZ2VFdmVudC5kYXRhLnN0YXJ0c1dpdGgoJ3JldmVsZGlnaXRhbDonKSksXHJcbiAgLy8gICBtYXAoKGU6IGFueSkgPT4geyByZXR1cm4gSlNPTi5wYXJzZShlLnN1YnN0cmluZygxMykpIGFzIENvbW1hbmQgfSksXHJcbiAgLy8gICBzaGFyZSgpLFxyXG4gIC8vICAgdGFwKHRoaXMub25Db21tYW5kJClcclxuICAvLyApO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKHpvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIGxldCBzZWxmID0gdGhpcztcclxuICAgICh3aW5kb3cgYXMgYW55KS5SZXZlbERpZ2l0YWwgPSB7XHJcbiAgICAgIENvbnRyb2xsZXI6IHtcclxuICAgICAgICBvbkNvbW1hbmQ6IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcsIGFyZzogc3RyaW5nKSB7XHJcbiAgICAgICAgICB6b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYub25Db21tYW5kJC5uZXh0KHsgbmFtZTogbmFtZSwgYXJnOiBhcmcgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uU3RhcnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgc2VsZi5vblN0YXJ0JC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblN0b3A6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgc2VsZi5vblN0b3AkLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uU3RhcnRTdWIgPSB0aGlzLm9uU3RhcnRFdnQkLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG4gICAgdGhpcy5vblN0b3BTdWIgPSB0aGlzLm9uU3RvcEV2dCQuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcbiAgICB0aGlzLm9uQ29tbWFuZFN1YiA9IHRoaXMub25Db21tYW5kRXZ0JC5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuXHJcbiAgICB0aGlzLmNsaWVudFByb21pc2UgPSBudWxsO1xyXG5cclxuICAgIHRoaXMub25SZWFkeSQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5vblN0YXJ0U3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5vblN0b3BTdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLm9uQ29tbWFuZFN1Yj8udW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLm9uUmVhZHkkLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgc3RhdGljIGluaXQoZGF0YTogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgICclY+Kame+4jyBJbml0aWFsaXppbmcgUmV2ZWwgRGlnaXRhbCBjbGllbnQgbGlicmFyeScsXHJcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yOmJsdWU7IGNvbG9yOnllbGxvdzsnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2QgYWxsb3dzIHRoZSBnYWRnZXQgdG8gY29tbXVuaWNhdGUgd2l0aCBwbGF5ZXIgc2NyaXB0aW5nLlxyXG4gICAqIElmIHRoZSBhcHByb3ByaWF0ZSBzY3JpcHRpbmcgaXMgaW4gcGxhY2UgaW4gdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlbXBsYXRlLCBjYWxsaW5nIHRoaXMgbWV0aG9kXHJcbiAgICogd2lsbCBpbml0aWF0ZSBhIGNhbGxiYWNrIHdoaWNoIGNhbiBiZSBhY3RlZCB1cG9uIGluIHBsYXllciBzY3JpcHQuXHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBjbGllbnQuY2FsbGJhY2soJ3Rlc3QnLCAndGhpcycpO1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBhcmdzIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcclxuICAgKi9cclxuICBwdWJsaWMgY2FsbGJhY2soLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG5cclxuICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgIGNsaWVudC5jYWxsYmFjaygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKGFyZ3NbMF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKGFyZ3NbMV0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKGFyZ3NbMl0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKGFyZ3NbM10pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgY2xpZW50LmNhbGxiYWNrKGFyZ3NbNF0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY2Nlc3NvciBtZXRob2QgZm9yIHRoZSB1c2VyIHByZWZlcmVuY2VzIGludGVyZmFjZSBleHBvc2VkIGJ5IHRoZSBHYWRnZXRzIEFQSS5cclxuICAgKiBcclxuICAgKiBTZWUge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2dhZGdldHMvZG9jcy9iYXNpY30gZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgR2FkZ2V0cyBBUEkuXHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBjb25zdHJ1Y3RvcihwdWJsaWMgY2xpZW50OiBQbGF5ZXJDbGllbnRTZXJ2aWNlKSB7XHJcbiAgICogICAgICAgICAgICBsZXQgcHJlZnMgPSBjbGllbnQuZ2V0UHJlZnMoKTtcclxuICAgKiAgICAgICAgICAgIGxldCBteVN0cmluZyA9IHByZWZzLmdldFN0cmluZygnbXlTdHJpbmdQcmVmJyk7XHJcbiAgICogfVxyXG4gICAqIEByZXR1cm5zIHtnYWRnZXRzLlByZWZzfSBHYWRnZXQgQVBJIFByZWZzIG9iamVjdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRQcmVmcygpOiBnYWRnZXRzLlByZWZzIHtcclxuXHJcbiAgICByZXR1cm4gbmV3IHdpbmRvd1snZ2FkZ2V0cyddWydQcmVmcyddKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGRldmljZSB0aW1lIGluIElTTzg2MDEgZm9ybWF0LlxyXG4gICAqIEN1cnJlbnQgZGV2aWNlIHRpbWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZGV2aWNlIHRpbWV6b25lIGFzc2lnbmVkIHRvIHRoZSBkZXZpY2UgaW4gdGhlIENNUy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGF0ZSBPcHRpb25hbC4gSWYgc3VwcGxpZWQgd2lsbCB0cmFuc2xhdGUgdGhlIHN1cHBsaWVkIGRhdGUvdGltZSB0byBkZXZpY2UgdGltZSBiYXNlZCBvbiByZXNwZWN0aXZlIHRpbWV6b25lcy5cclxuICAgKiBAcmV0dXJucyBEYXRlL3RpbWUgaW4gSVNPODYwMSBmb3JtYXRcclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZShkYXRlPzogRGF0ZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICBpZiAoZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZShkYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGltZXpvbmUgbmFtZSBjdXJyZW50bHkgYXNzaWduZWQgdG8gdGhlIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBUaW1lem9uZSBOYW1lXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWVab25lTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXREZXZpY2VUaW1lWm9uZU5hbWUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRpbWV6b25lIElEIGN1cnJlbnRseSBhc3NpZ25lZCB0byB0aGUgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRpbWV6b25lIElEXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWVab25lSUQoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlVGltZVpvbmVJRCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgbnVtZXJpY2FsIG9mZnNldCBmcm9tIEdNVCBvZiB0aGUgdGltZXpvbmUgY3VycmVudGx5IGFzc2lnbmVkIHRvIHRoZSBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVGltZXpvbmUgb2Zmc2V0XHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldERldmljZVRpbWVab25lT2Zmc2V0KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcblxyXG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKTtcclxuXHJcbiAgICByZXR1cm4gY2xpZW50LmdldERldmljZVRpbWVab25lT2Zmc2V0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsYW5ndWFnZSBjb2RlIG9mIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgYXNzaWduZWQgdG8gdGhlIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBMYW5ndWFnZSBjb2RlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGdldExhbmd1YWdlQ29kZSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudC5nZXRMYW5ndWFnZUNvZGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBSZXZlbCBEaWdpdGFsIGRldmljZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgRGV2aWNlIGtleVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VLZXkoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0RGV2aWNlS2V5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgY29tbWFuZCB0byB0aGUgcGxheWVyIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gbmFtZSBDb21tYW5kIG5hbWVcclxuICAgKiBAcGFyYW0gYXJnIENvbW1hbmQgYXJndW1lbnRcclxuICAgKi9cclxuICBwdWJsaWMgc2VuZENvbW1hbmQobmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcbiAgICAgIGNsaWVudC5zZW5kQ29tbWFuZChuYW1lLCBhcmcpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgYSBjb21tYW5kIHRvIGFueSByZW1vdGUgcGxheWVyIHdpdGggdGhlIHN1cHBsaWVkIGRldmljZSBrZXkocykuXHJcbiAgICogTm90ZTogUmVtb3RlIGNvbW1hbmRzIGNhbiBvbmx5IGJlIGRlbGl2ZXJlZCB0byBkZXZpY2VzIHdpdGhpbiB0aGUgc2FtZSBhY2NvdW50IGFzIHRoZSBzZW5kZXIgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkZXZpY2VLZXlzIEFycmF5IG9mIHJlbW90ZSBkZXZpY2Uga2V5c1xyXG4gICAqIEBwYXJhbSBuYW1lIENvbW1hbmQgbmFtZVxyXG4gICAqIEBwYXJhbSBhcmcgQ29tbWFuZCBhcmdcclxuICAgKi9cclxuICBwdWJsaWMgc2VuZFJlbW90ZUNvbW1hbmQoZGV2aWNlS2V5czogc3RyaW5nW10sIG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQuc2VuZFJlbW90ZUNvbW1hbmQoZGV2aWNlS2V5cywgbmFtZSwgYXJnKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9nIGFuIGV2ZW50IGZvciB1c2Ugd2l0aCBBZEhhd2sgYW5hbHl0aWNzLlxyXG4gICAqIEV2ZW50cyBhcmUgdXNlZCBmb3IgdHJhY2tpbmcgdmFyaW91cyBtZXRyaWNzIGluY2x1ZGluZyB1c2FnZSBzdGF0aXN0aWNzLCBwbGF5ZXIgY29uZGl0aW9uLCBzdGF0ZSBjaGFuZ2VzLCBldGMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGV2ZW50TmFtZSBVbmlxdWUgbmFtZSBmb3IgdGhpcyBldmVudFxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIEEgbWFwIG9mIHVzZXIgZGVmaW5lZCBwcm9wZXJ0aWVzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgdHJhY2soZXZlbnROYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM/OiBFdmVudFByb3BlcnRpZXMpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQudHJhY2soZXZlbnROYW1lLCBKU09OLnN0cmluZ2lmeShwcm9wZXJ0aWVzKSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIGZvciBpbml0aWF0aW5nIGEgdGltZWQgZXZlbnQuXHJcbiAgICogVGltZWQgZXZlbnRzIGFyZSB1c2VmdWwgZm9yIHRyYWNraW5nIHRoZSBkdXJhdGlvbiBvZiBhbiBldmVudCBhbmQgbXVzdCBiZSBwcm9jZWVkZWQgd2l0aCBhIGNhbGwgdG8gdHJhY2soKS5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGNsaWVudC50aW1lRXZlbnQoJ3Rlc3RFdmVudCcpO1xyXG4gICAqIGNsaWVudC50cmFjayhcInRlc3RcIiwgeyBcImFcIjogXCJiXCIgfSk7XHJcbiAgICogQHBhcmFtIGV2ZW50TmFtZSBVbmlxdWUgbmFtZSBmb3IgdGhpcyBldmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0aW1lRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBjbGllbnQudGltZUV2ZW50KGV2ZW50TmFtZSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBzZXNzaW9uIGlzIGEgd2F5IG9mIGdyb3VwaW5nIGV2ZW50cyB0b2dldGhlci4gRWFjaCBldmVudCBoYXMgYW4gYXNzb2NpYXRlZCBzZXNzaW9uIElELlxyXG4gICAqIFNlc3Npb24gSUQncyBhcmUgcmFuZG9tbHkgZ2VuZXJhdGVkIGFuZCByZXNldCBieSBzdWJzZXF1ZW50IGNhbGxzIHRvIG5ld0V2ZW50U2Vzc2lvbigpLlxyXG4gICAqIFxyXG4gICAqIEVhY2ggY2FsbCB0byB0cmFjaygpIHdpbGwgdXRpbGl6ZSB0aGUgc2FtZSBzZXNzaW9uIElELCB1bnRpbCBhbm90aGVyIGNhbGwgdG8gbmV3RXZlbnRTZXNzaW9uKCkuXHJcbiAgICogQHBhcmFtIGlkIE9wdGlvbmFsLiBVc2VyIHN1cHBsaWVkIHNlc3Npb24gSUQuIElmIG5vdCBzdXBwbGllZCBhIHJhbmRvbSBzZXNzaW9uIElEIHdpbGwgYmUgZ2VuZXJhdGVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZXdFdmVudFNlc3Npb24oaWQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmdldENsaWVudCgpLnRoZW4oKGNsaWVudCkgPT4ge1xyXG4gICAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNsaWVudC5uZXdFdmVudFNlc3Npb24oKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjbGllbnQubmV3RXZlbnRTZXNzaW9uKGlkKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHJvb3QgZm9sZGVyIHV0aWxpemVkIGJ5IHRoaXMgcGxheWVyIGRldmljZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBQYXRoIHRvIHRoZSByb290IGZvbGRlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBnZXRSZXZlbFJvb3QoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldENsaWVudCgpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnQuZ2V0UmV2ZWxSb290KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbWFwIG9mIGNvbW1hbmRzIGN1cnJlbnRseSBhY3RpdmUgZm9yIHRoaXMgZGV2aWNlLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIE1hcCBvZiBjb21tYW5kcyBjdXJyZW50bHkgYWN0aXZlIGZvciB0aGlzIGRldmljZS5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgZ2V0Q29tbWFuZE1hcCgpOiBQcm9taXNlPGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCk7XHJcblxyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgY2xpZW50LmdldENvbW1hbmRNYXAoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZSB0byB0aGUgcGxheWVyIHRoYXQgdGhpcyBnYWRnZXQgaGFzIGZpbmlzaGVkIGl0J3MgdmlzdWFsaXphdGlvbi5cclxuICAgKiBUaGlzIGFsbG93cyB0aGUgcGxheWVyIHRvIHByb2NlZWQgd2l0aCB0aGUgbmV4dCBpdGVtIGluIGEgcGxheWxpc3QgaWYgYXBwbGljYWJsZS5cclxuICAgKi9cclxuICBwdWJsaWMgZmluaXNoKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZ2V0Q2xpZW50KCkudGhlbigoY2xpZW50KSA9PiB7XHJcblxyXG4gICAgICBjbGllbnQuZmluaXNoKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gLS0tXHJcbiAgLy8gUFJJVkFURSBNRVRIT0RTLlxyXG4gIC8vIC0tLVxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBnZXRDbGllbnQoKTogUHJvbWlzZTxDbGllbnQ+IHtcclxuXHJcbiAgICBpZiAodGhpcy5jbGllbnRQcm9taXNlKSB7XHJcblxyXG4gICAgICByZXR1cm4gKHRoaXMuY2xpZW50UHJvbWlzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5DbGllbnQpIHtcclxuXHJcbiAgICAgIHJldHVybiAodGhpcy5jbGllbnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5DbGllbnQpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBIFwiY29tcGxldGVcIiBzdGF0dXMgaW5kaWNhdGVzIHRoYXQgdGhlIFwibG9hZFwiIGV2ZW50IGhhcyBiZWVuIGZpcmVkIG9uIHRoZVxyXG4gICAgLy8gd2luZG93OyBhbmQsIHRoYXQgYWxsIHN1Yi1yZXNvdXJjZXMgc3VjaCBhcyBTY3JpcHRzLCBJbWFnZXMsIGFuZCBGcmFtZXMgaGF2ZVxyXG4gICAgLy8gYmVlbiBsb2FkZWQuXHJcbiAgICBpZiAod2luZG93LmRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xyXG5cclxuICAgICAgLy8gSWYgdGhpcyBldmVudCBoYXMgZmlyZWQgQU5EIHRoZSAzcmQtcGFydHkgc2NyaXB0IGlzbid0IGF2YWlsYWJsZSAoc2VlIElGLVxyXG4gICAgICAvLyBjb25kaXRpb24gQkVGT1JFIHRoaXMgb25lKSwgaXQgbWVhbnMgdGhhdCB0aGUgM3JkLXBhcnR5IHNjcmlwdCBlaXRoZXJcclxuICAgICAgLy8gZmFpbGVkIG9uIHRoZSBuZXR3b3JrIG9yIHdhcyBCTE9DS0VEIGJ5IGFuIGFkLWJsb2NrZXIuIEFzIHN1Y2gsIHdlIGhhdmUgdG9cclxuICAgICAgLy8gZmFsbC1iYWNrIHRvIHVzaW5nIGEgbW9jayBBUEkuXHJcbiAgICAgIHJldHVybiAodGhpcy5jbGllbnRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG5ldyBOb29wQ2xpZW50KCkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBU1NFUlQ6IElmIHdlIG1hZGUgaXQgdGhpcyBmYXIsIHRoZSBkb2N1bWVudCBoYXMgbm90IGNvbXBsZXRlZCBsb2FkaW5nIChidXQgaXRcclxuICAgIC8vIG1heSBiZSBpbiBhbiBcImludGVyYWN0aXZlXCIgc3RhdGUgd2hpY2ggaXMgd2hlbiBJIGJlbGlldmUgdGhhdCB0aGUgQW5ndWxhciBhcHBcclxuICAgIC8vIGdldHMgYm9vdHN0cmFwcGVkKS4gQXMgc3VjaCwgd2UgbmVlZCBiaW5kIHRvIHRoZSBMT0FEIGV2ZW50IHRvIHdhaXQgZm9yIG91clxyXG4gICAgLy8gdGhpcmQtcGFydHkgc2NyaXB0cyB0byBsb2FkIChvciBmYWlsIHRvIGxvYWQsIG9yIGJlIGJsb2NrZWQpLlxyXG4gICAgdGhpcy5jbGllbnRQcm9taXNlID0gbmV3IFByb21pc2U8Q2xpZW50PihcclxuICAgICAgKHJlc29sdmUpID0+IHtcclxuXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgICBcImxvYWRcIixcclxuICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVdpbmRvd0xvYWQoKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgM3JkLXBhcnR5IGxpYnJhcnkgaXMgZWl0aGVyIGF2YWlsYWJsZSBvclxyXG4gICAgICAgICAgICAvLyBpdCdzIG5vdCAtIHRoZXJlJ3Mgbm8gZnVydGhlciBsb2FkaW5nIHRvIGRvLiBJZiBpdCdzIG5vdFxyXG4gICAgICAgICAgICAvLyBwcmVzZW50IG9uIHRoZSBnbG9iYWwgc2NvcGUsIHdlJ3JlIGdvaW5nIHRvIGZhbGwtYmFjayB0byB1c2luZ1xyXG4gICAgICAgICAgICAvLyBhIG1vY2sgQVBJLlxyXG4gICAgICAgICAgICByZXNvbHZlKHdpbmRvdy5DbGllbnQgfHwgbmV3IE5vb3BDbGllbnQoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICh0aGlzLmNsaWVudFByb21pc2UpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cclxuXHJcbi8vIEkgcHJvdmlkZSBhIG1vY2sgQVBJIGZvciB0aGUgM3JkLXBhcnR5IHNjcmlwdC4gVGhpcyBqdXN0IGFsbG93cyB0aGUgY29uc3VtaW5nIGNvZGUgdG9cclxuLy8gYWN0IGFzIHRob3VnaCB0aGUgbGlicmFyeSBpcyBhdmFpbGFibGUgZXZlbiBpZiBpdCBmYWlsZWQgdG8gbG9hZCAoZXhhbXBsZSwgaXQgd2FzXHJcbi8vIGJsb2NrZWQgYnkgYW4gYWQtYmxvY2tlcikuXHJcblxyXG4vKiogQGlnbm9yZSAqL1xyXG5jbGFzcyBOb29wQ2xpZW50IGltcGxlbWVudHMgQ2xpZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgICclY0NsaWVudCBBUEkgbm90IGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIG1vY2sgQVBJJyxcclxuICAgICAgJ2JhY2tncm91bmQtY29sb3I6Ymx1ZTsgY29sb3I6eWVsbG93OydcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsbGJhY2soLi4uYXJnczogYW55W10pOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREZXZpY2VUaW1lKGRhdGU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGV2aWNlVGltZVpvbmVOYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZUlEKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VUaW1lWm9uZU9mZnNldCgpOiBQcm9taXNlPG51bWJlcj4ge1xyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGFuZ3VhZ2VDb2RlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZXZpY2VLZXkoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmRDb21tYW5kKG5hbWU6IHN0cmluZywgYXJnOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBOT09QIGltcGxlbWVudCwgbm90aGluZyB0byBkby4uLi5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kUmVtb3RlQ29tbWFuZChkZXZpY2VLZXlzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBhcmc6IHN0cmluZykge1xyXG5cclxuICAgIC8vIE5PT1AgaW1wbGVtZW50LCBub3RoaW5nIHRvIGRvLi4uLlxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrKGV2ZW50TmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdGltZUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmV3RXZlbnRTZXNzaW9uKGlkPzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0UmV2ZWxSb290KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRDb21tYW5kTWFwKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgne30nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaW5pc2goKTogdm9pZCB7XHJcblxyXG4gICAgLy8gTk9PUCBpbXBsZW1lbnQsIG5vdGhpbmcgdG8gZG8uLi4uXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +1,13 @@
1
1
  import { Pipe, NgModule } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/platform-browser";
4
+ /**
5
+ * The safe style pipe is used when custom styles are defined for a gadget and must be applied to an Angular
6
+ * component. This pipe will ensure the style can be appied safely by utilizing the DomSanitizer.
7
+ *
8
+ * @example
9
+ * <h2 [style]="style | safeStyle">Sample Pref: {{ prefs.getString('myStringPref') }}</h2>
10
+ */
4
11
  export class SafeStylePipe {
5
12
  constructor(sanitized) {
6
13
  this.sanitized = sanitized;
@@ -29,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
29
36
  exports: [SafeStylePipe],
30
37
  }]
31
38
  }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1zdHlsZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9zYWZlLXN0eWxlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNOUQsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFJLENBQUM7SUFFaEQsU0FBUyxDQUFDLEtBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7OzJHQUxRLGFBQWE7eUdBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO2lCQUNwQjs7QUFhRCxNQUFNLE9BQU8scUJBQXFCOzttSEFBckIscUJBQXFCO29IQUFyQixxQkFBcUIsaUJBWnJCLGFBQWEsYUFBYixhQUFhO29IQVliLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogJ3NhZmVTdHlsZScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYWZlU3R5bGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplZDogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHVua25vd24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplZC5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodmFsdWUpO1xyXG4gICAgfVxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbU2FmZVN0eWxlUGlwZV0sXHJcbiAgICBleHBvcnRzOiBbU2FmZVN0eWxlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NhZmVTdHlsZVBpcGVNb2R1bGUgeyB9XHJcbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1zdHlsZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmV2ZWxkaWdpdGFsL3BsYXllci1jbGllbnQvc3JjL2xpYi9zYWZlLXN0eWxlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHOUQ7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFJLENBQUM7SUFFaEQsU0FBUyxDQUFDLEtBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7OzJHQUxRLGFBQWE7eUdBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxXQUFXO2lCQUNwQjs7QUFhRCxNQUFNLE9BQU8scUJBQXFCOzttSEFBckIscUJBQXFCO29IQUFyQixxQkFBcUIsaUJBWnJCLGFBQWEsYUFBYixhQUFhO29IQVliLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBzYWZlIHN0eWxlIHBpcGUgaXMgdXNlZCB3aGVuIGN1c3RvbSBzdHlsZXMgYXJlIGRlZmluZWQgZm9yIGEgZ2FkZ2V0IGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYW4gQW5ndWxhclxyXG4gKiBjb21wb25lbnQuIFRoaXMgcGlwZSB3aWxsIGVuc3VyZSB0aGUgc3R5bGUgY2FuIGJlIGFwcGllZCBzYWZlbHkgYnkgdXRpbGl6aW5nIHRoZSBEb21TYW5pdGl6ZXIuXHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8aDIgW3N0eWxlXT1cInN0eWxlIHwgc2FmZVN0eWxlXCI+U2FtcGxlIFByZWY6IHt7IHByZWZzLmdldFN0cmluZygnbXlTdHJpbmdQcmVmJykgfX08L2gyPlxyXG4gKi9cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogJ3NhZmVTdHlsZScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYWZlU3R5bGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplZDogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHVua25vd24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplZC5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodmFsdWUpO1xyXG4gICAgfVxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbU2FmZVN0eWxlUGlwZV0sXHJcbiAgICBleHBvcnRzOiBbU2FmZVN0eWxlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1NhZmVTdHlsZVBpcGVNb2R1bGUgeyB9XHJcbiJdfQ==