Socket
Socket
Sign inDemoInstall

@ionic-native/adjust

Package Overview
Dependencies
4
Maintainers
7
Versions
60
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.35.0 to 5.36.0

60

index.d.ts

@@ -39,2 +39,3 @@ import { IonicNativePlugin } from '@ionic-native/core';

private preinstallTrackingEnabled;
private preinstallFilePath;
private allowiAdInfoReading;

@@ -49,2 +50,3 @@ private allowIdfaReading;

private deferredDeeplinkCallback;
private conversionValueUpdatedCallback;
constructor(appToken: string, environment: AdjustEnvironment);

@@ -65,2 +67,3 @@ setAppSecret(secretId: number, info1: number, info2: number, info3: number, info4: number): void;

setPreinstallTrackingEnabled(preinstallTrackingEnabled: boolean): void;
setPreinstallFilePath(preinstallFilePath: string): void;
setAllowiAdInfoReading(allowiAdInfoReading: boolean): void;

@@ -75,2 +78,3 @@ setAllowIdfaReading(allowIdfaReading: boolean): void;

setDeferredDeeplinkCallbackListener(deferredDeeplinkCallback: (uri: string) => void): void;
setConversionValueUpdatedCallbackListener(conversionValueUpdatedCallback: (conversionValue: number) => void): void;
private getAttributionCallback;

@@ -82,2 +86,3 @@ private getEventTrackingSucceededCallback;

private getDeferredDeeplinkCallback;
private getConversionValueUpdatedCallback;
private hasAttributionListener;

@@ -126,2 +131,21 @@ private hasEventTrackingSucceededListener;

}
export declare class AdjustAdRevenue {
private source;
private revenue;
private currency;
private adImpressionsCount;
private adRevenueNetwork;
private adRevenueUnit;
private adRevenuePlacement;
private callbackParameters;
private partnerParameters;
constructor(source: string);
setRevenue(revenue: number, currency: string): void;
addCallbackParameter(key: string, value: string): void;
addPartnerParameter(key: string, value: string): void;
setAdImpressionsCount(adImpressionsCount: number): void;
setAdRevenueNetwork(adRevenueNetwork: string): void;
setAdRevenueUnit(adRevenueUnit: string): void;
setAdRevenuePlacement(adRevenuePlacement: string): void;
}
export interface AdjustAttribution {

@@ -184,25 +208,13 @@ trackerToken: string;

export declare enum AdjustUrlStrategy {
India = "India",
China = "China"
India = "india",
China = "china",
DataResidencyEU = "data-residency-eu",
DataResidencyTR = "data-residency-tr",
DataResidencyUS = "data-residency-us"
}
export declare enum AdjustAdRevenueSource {
AdRevenueSourceAppLovinMAX = "applovin_max_sdk",
AdRevenueSourceMopub = "mopub",
AdRevenueSourceAdmob = "admob",
AdRevenueSourceFbNativeAd = "facebook_native_ad",
AdRevenueSourceFbAudienceNetwork = "facebook_audience_network",
AdRevenueSourceIronsource = "ironsource",
AdRevenueSourceFyber = "fyber",
AdRevenueSourceAerserv = "aerserv",
AdRevenueSourceAppodeal = "appodeal",
AdRevenueSourceAdincube = "adincube",
AdRevenueSourceFusePowered = "fusepowered",
AdRevenueSourceAddapptr = "addapptr",
AdRevenueSourceMillennialMediation = "millennial_mediation",
AdRevenueSourceFlurry = "flurry",
AdRevenueSourceAdmost = "admost",
AdRevenueSourceDeltadna = "deltadna",
AdRevenueSourceUpsight = "upsight",
AdRevenueSourceUnityAds = "unityads",
AdRevenueSourceAdtoapp = "adtoapp",
AdRevenueSourceTapdaq = "tapdaq"
AdRevenueSourceAdMob = "admob_sdk",
AdRevenueSourceIronsource = "ironsource_sdk"
}

@@ -218,3 +230,3 @@ /**

* ```typescript
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust';
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust/ngx';
*

@@ -243,2 +255,3 @@ * constructor(private adjust: Adjust) { }

* AdjustThirdPartySharing
* AdjustAdReenue
* @enums

@@ -283,2 +296,7 @@ * AdjustEnvironment

/**
* This method tracks ad revenue data
* @param {AdjustAdRevenue} adRevenue Adjust ad revenue object
*/
trackAdRevenue(adRevenue: AdjustAdRevenue): void;
/**
* This method tracks measurement consent choice

@@ -285,0 +303,0 @@ * @param {boolean} measurementConsent set measurement consent to true or false

@@ -62,2 +62,3 @@ var __extends = (this && this.__extends) || (function () {

this.preinstallTrackingEnabled = null; // Android only
this.preinstallFilePath = null; // Android only
this.allowiAdInfoReading = null; // iOS only

@@ -72,2 +73,3 @@ this.allowIdfaReading = null; // iOS only

this.deferredDeeplinkCallback = null;
this.conversionValueUpdatedCallback = null;
this.appToken = appToken;

@@ -122,2 +124,5 @@ this.environment = environment;

};
AdjustConfig.prototype.setPreinstallFilePath = function (preinstallFilePath) {
this.preinstallFilePath = preinstallFilePath;
};
AdjustConfig.prototype.setAllowiAdInfoReading = function (allowiAdInfoReading) {

@@ -150,2 +155,5 @@ this.allowiAdInfoReading = allowiAdInfoReading;

};
AdjustConfig.prototype.setConversionValueUpdatedCallbackListener = function (conversionValueUpdatedCallback) {
this.conversionValueUpdatedCallback = conversionValueUpdatedCallback;
};
AdjustConfig.prototype.getAttributionCallback = function () {

@@ -169,2 +177,5 @@ return this.attributionCallback;

};
AdjustConfig.prototype.getConversionValueUpdatedCallback = function () {
return this.conversionValueUpdatedCallback;
};
AdjustConfig.prototype.hasAttributionListener = function () {

@@ -255,2 +266,35 @@ return this.attributionCallback !== null;

export { AdjustThirdPartySharing };
var AdjustAdRevenue = /** @class */ (function () {
function AdjustAdRevenue(source) {
this.callbackParameters = [];
this.partnerParameters = [];
this.source = source;
}
AdjustAdRevenue.prototype.setRevenue = function (revenue, currency) {
this.revenue = revenue;
this.currency = currency;
};
AdjustAdRevenue.prototype.addCallbackParameter = function (key, value) {
this.callbackParameters.push(key);
this.callbackParameters.push(value);
};
AdjustAdRevenue.prototype.addPartnerParameter = function (key, value) {
this.partnerParameters.push(key);
this.partnerParameters.push(value);
};
AdjustAdRevenue.prototype.setAdImpressionsCount = function (adImpressionsCount) {
this.adImpressionsCount = adImpressionsCount;
};
AdjustAdRevenue.prototype.setAdRevenueNetwork = function (adRevenueNetwork) {
this.adRevenueNetwork = adRevenueNetwork;
};
AdjustAdRevenue.prototype.setAdRevenueUnit = function (adRevenueUnit) {
this.adRevenueUnit = adRevenueUnit;
};
AdjustAdRevenue.prototype.setAdRevenuePlacement = function (adRevenuePlacement) {
this.adRevenuePlacement = adRevenuePlacement;
};
return AdjustAdRevenue;
}());
export { AdjustAdRevenue };
export var AdjustEnvironment;

@@ -273,26 +317,14 @@ (function (AdjustEnvironment) {

(function (AdjustUrlStrategy) {
AdjustUrlStrategy["India"] = "India";
AdjustUrlStrategy["China"] = "China";
AdjustUrlStrategy["India"] = "india";
AdjustUrlStrategy["China"] = "china";
AdjustUrlStrategy["DataResidencyEU"] = "data-residency-eu";
AdjustUrlStrategy["DataResidencyTR"] = "data-residency-tr";
AdjustUrlStrategy["DataResidencyUS"] = "data-residency-us";
})(AdjustUrlStrategy || (AdjustUrlStrategy = {}));
export var AdjustAdRevenueSource;
(function (AdjustAdRevenueSource) {
AdjustAdRevenueSource["AdRevenueSourceAppLovinMAX"] = "applovin_max_sdk";
AdjustAdRevenueSource["AdRevenueSourceMopub"] = "mopub";
AdjustAdRevenueSource["AdRevenueSourceAdmob"] = "admob";
AdjustAdRevenueSource["AdRevenueSourceFbNativeAd"] = "facebook_native_ad";
AdjustAdRevenueSource["AdRevenueSourceFbAudienceNetwork"] = "facebook_audience_network";
AdjustAdRevenueSource["AdRevenueSourceIronsource"] = "ironsource";
AdjustAdRevenueSource["AdRevenueSourceFyber"] = "fyber";
AdjustAdRevenueSource["AdRevenueSourceAerserv"] = "aerserv";
AdjustAdRevenueSource["AdRevenueSourceAppodeal"] = "appodeal";
AdjustAdRevenueSource["AdRevenueSourceAdincube"] = "adincube";
AdjustAdRevenueSource["AdRevenueSourceFusePowered"] = "fusepowered";
AdjustAdRevenueSource["AdRevenueSourceAddapptr"] = "addapptr";
AdjustAdRevenueSource["AdRevenueSourceMillennialMediation"] = "millennial_mediation";
AdjustAdRevenueSource["AdRevenueSourceFlurry"] = "flurry";
AdjustAdRevenueSource["AdRevenueSourceAdmost"] = "admost";
AdjustAdRevenueSource["AdRevenueSourceDeltadna"] = "deltadna";
AdjustAdRevenueSource["AdRevenueSourceUpsight"] = "upsight";
AdjustAdRevenueSource["AdRevenueSourceUnityAds"] = "unityads";
AdjustAdRevenueSource["AdRevenueSourceAdtoapp"] = "adtoapp";
AdjustAdRevenueSource["AdRevenueSourceTapdaq"] = "tapdaq";
AdjustAdRevenueSource["AdRevenueSourceAdMob"] = "admob_sdk";
AdjustAdRevenueSource["AdRevenueSourceIronsource"] = "ironsource_sdk";
})(AdjustAdRevenueSource || (AdjustAdRevenueSource = {}));

@@ -309,3 +341,3 @@ var AdjustOriginal = /** @class */ (function (_super) {

AdjustOriginal.prototype.trackThirdPartySharing = function (thirdPartySharing) { return cordova(this, "trackThirdPartySharing", { "sync": true }, arguments); };
AdjustOriginal.prototype.trackAdRevenue = function (source, payload) { return cordova(this, "trackAdRevenue", { "sync": true }, arguments); };
AdjustOriginal.prototype.trackAdRevenue = function (sourceOrAdRevenue, payload) { return cordova(this, "trackAdRevenue", { "sync": true }, arguments); };
AdjustOriginal.prototype.trackMeasurementConsent = function (measurementConsent) { return cordova(this, "trackMeasurementConsent", { "sync": true }, arguments); };

@@ -344,2 +376,2 @@ AdjustOriginal.prototype.setOfflineMode = function (enabled) { return cordova(this, "setOfflineMode", { "sync": true }, arguments); };

export { Adjust };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGlvbmljLW5hdGl2ZS9wbHVnaW5zL2FkanVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBTyw4QkFBc0MsTUFBTSxvQkFBb0IsQ0FBQzs7SUFXdEUscUJBQVksVUFBa0I7UUFIdEIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0NBQVUsR0FBVixVQUFXLE9BQWUsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsMENBQW9CLEdBQXBCLFVBQXFCLEdBQVcsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUNBQW1CLEdBQW5CLFVBQW9CLEdBQVcsRUFBRSxLQUFhO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLGFBQXFCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQ0FBYSxHQUFiLFVBQWMsVUFBa0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztzQkFyQ0g7Ozs7SUF5RUUsc0JBQVksUUFBZ0IsRUFBRSxXQUE4QjtRQTdCcEQsZUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNqQixhQUFRLEdBQW1CLElBQUksQ0FBQztRQUNoQyxtQkFBYyxHQUFXLElBQUksQ0FBQztRQUM5QixnQkFBVyxHQUFzQixJQUFJLENBQUM7UUFDdEMscUJBQWdCLEdBQVcsSUFBSSxDQUFDO1FBQ2hDLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUNqQyx5QkFBb0IsR0FBWSxJQUFJLENBQUM7UUFDckMsMEJBQXFCLEdBQVksSUFBSSxDQUFDO1FBQ3RDLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLFVBQUssR0FBVyxJQUFJLENBQUM7UUFDckIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixVQUFLLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLFVBQUssR0FBVyxJQUFJLENBQUM7UUFDckIsZ0JBQVcsR0FBVyxJQUFJLENBQUMsQ0FBQyxlQUFlO1FBQzNDLDhCQUF5QixHQUFZLElBQUksQ0FBQyxDQUFDLGVBQWU7UUFDMUQsd0JBQW1CLEdBQVksSUFBSSxDQUFDLENBQUMsV0FBVztRQUNoRCxxQkFBZ0IsR0FBWSxJQUFJLENBQUMsQ0FBQyxXQUFXO1FBQzdDLCtCQUEwQixHQUFZLElBQUksQ0FBQyxDQUFDLFdBQVc7UUFFdkQsd0JBQW1CLEdBQTZDLElBQUksQ0FBQztRQUNyRSxtQ0FBOEIsR0FBd0MsSUFBSSxDQUFDO1FBQzNFLGdDQUEyQixHQUF3QyxJQUFJLENBQUM7UUFDeEUscUNBQWdDLEdBQTRDLElBQUksQ0FBQztRQUNqRixrQ0FBNkIsR0FBNEMsSUFBSSxDQUFDO1FBQzlFLDZCQUF3QixHQUEwQixJQUFJLENBQUM7UUFHN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELG1DQUFZLEdBQVosVUFBYSxRQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLEtBQWE7UUFDdkYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELG9DQUFhLEdBQWIsVUFBYyxVQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsa0NBQVcsR0FBWCxVQUFZLFFBQXdCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3Q0FBaUIsR0FBakIsVUFBa0IsY0FBc0I7UUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVELDBDQUFtQixHQUFuQixVQUFvQixnQkFBd0I7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFFRCxxQ0FBYyxHQUFkLFVBQWUsV0FBOEI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELDBDQUFtQixHQUFuQixVQUFvQixnQkFBeUI7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFFRCw4Q0FBdUIsR0FBdkIsVUFBd0Isb0JBQTZCO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQsK0NBQXdCLEdBQXhCLFVBQXlCLHFCQUE4QjtRQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7SUFDckQsQ0FBQztJQUVELG1DQUFZLEdBQVosVUFBYSxTQUFpQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQscUNBQWMsR0FBZCxVQUFlLGFBQXNCO1FBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQ0FBWSxHQUFaLFVBQWEsU0FBa0I7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELHFDQUFjLEdBQWQsVUFBZSxXQUFtQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsbURBQTRCLEdBQTVCLFVBQTZCLHlCQUFrQztRQUM3RCxJQUFJLENBQUMseUJBQXlCLEdBQUcseUJBQXlCLENBQUM7SUFDN0QsQ0FBQztJQUVELDZDQUFzQixHQUF0QixVQUF1QixtQkFBNEI7UUFDakQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ2pELENBQUM7SUFFRCwwQ0FBbUIsR0FBbkIsVUFBb0IsZ0JBQXlCO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsb0RBQTZCLEdBQTdCLFVBQThCLDBCQUFtQztRQUMvRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7SUFDL0QsQ0FBQztJQUVELHFEQUE4QixHQUE5QixVQUErQixtQkFBNkQ7UUFDMUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ2pELENBQUM7SUFFRCxnRUFBeUMsR0FBekMsVUFBMEMsOEJBQW1FO1FBQzNHLElBQUksQ0FBQyw4QkFBOEIsR0FBRyw4QkFBOEIsQ0FBQztJQUN2RSxDQUFDO0lBRUQsNkRBQXNDLEdBQXRDLFVBQXVDLDJCQUFnRTtRQUNyRyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsMkJBQTJCLENBQUM7SUFDakUsQ0FBQztJQUVELGtFQUEyQyxHQUEzQyxVQUNFLGdDQUF5RTtRQUV6RSxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsZ0NBQWdDLENBQUM7SUFDM0UsQ0FBQztJQUVELCtEQUF3QyxHQUF4QyxVQUF5Qyw2QkFBc0U7UUFDN0csSUFBSSxDQUFDLDZCQUE2QixHQUFHLDZCQUE2QixDQUFDO0lBQ3JFLENBQUM7SUFFRCwwREFBbUMsR0FBbkMsVUFBb0Msd0JBQStDO1FBQ2pGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztJQUMzRCxDQUFDO0lBRU8sNkNBQXNCLEdBQTlCO1FBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVPLHdEQUFpQyxHQUF6QztRQUNFLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDO0lBQzdDLENBQUM7SUFFTyxxREFBOEIsR0FBdEM7UUFDRSxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sMERBQW1DLEdBQTNDO1FBQ0UsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7SUFDL0MsQ0FBQztJQUVPLHVEQUFnQyxHQUF4QztRQUNFLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7SUFFTyxrREFBMkIsR0FBbkM7UUFDRSxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN2QyxDQUFDO0lBRU8sNkNBQXNCLEdBQTlCO1FBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFTyx3REFBaUMsR0FBekM7UUFDRSxPQUFPLElBQUksQ0FBQyw4QkFBOEIsS0FBSyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVPLHFEQUE4QixHQUF0QztRQUNFLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixLQUFLLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRU8sMERBQW1DLEdBQTNDO1FBQ0UsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLEtBQUssSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFFTyx1REFBZ0MsR0FBeEM7UUFDRSxPQUFPLElBQUksQ0FBQyw2QkFBNkIsS0FBSyxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVPLDBEQUFtQyxHQUEzQztRQUNFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixLQUFLLElBQUksQ0FBQztJQUNoRCxDQUFDO3VCQTlOSDs7OztJQTJPRSxvQ0FBWSxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxhQUFxQixFQUFFLE9BQWU7UUFIM0UsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsdURBQWtCLEdBQWxCLFVBQW1CLGVBQXVCO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtREFBYyxHQUFkLFVBQWUsV0FBbUI7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELHlEQUFvQixHQUFwQixVQUFxQixHQUFXLEVBQUUsS0FBYTtRQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHdEQUFtQixHQUFuQixVQUFvQixHQUFXLEVBQUUsS0FBYTtRQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztxQ0FsUUg7Ozs7SUFnUkUscUNBQVksS0FBYSxFQUFFLFFBQWdCLEVBQUUsR0FBVyxFQUFFLE9BQWUsRUFBRSxTQUFpQixFQUFFLGFBQXFCO1FBSDNHLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFHdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0lBRUQscURBQWUsR0FBZixVQUFnQixZQUFvQjtRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQsMERBQW9CLEdBQXBCLFVBQXFCLEdBQVcsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseURBQW1CLEdBQW5CLFVBQW9CLEdBQVcsRUFBRSxLQUFhO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO3NDQXJTSDs7OztJQTRTRSxpQ0FBWSxTQUFrQjtRQUZ0QixvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUdyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsbURBQWlCLEdBQWpCLFVBQWtCLFdBQW1CLEVBQUUsR0FBVyxFQUFFLEtBQWE7UUFDL0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztrQ0FwVEg7OztBQXVXQSxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLHdDQUFtQixDQUFBO0lBQ25CLDhDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FRWDtBQVJELFdBQVksY0FBYztJQUN4QixxQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBZSxDQUFBO0lBQ2YsK0JBQWEsQ0FBQTtJQUNiLCtCQUFhLENBQUE7SUFDYixpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7SUFDakIsdUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVJXLGNBQWMsS0FBZCxjQUFjLFFBUXpCO0FBRUQsTUFBTSxDQUFOLElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUMzQixvQ0FBZSxDQUFBO0lBQ2Ysb0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVELE1BQU0sQ0FBTixJQUFZLHFCQW9CWDtBQXBCRCxXQUFZLHFCQUFxQjtJQUMvQix1REFBOEIsQ0FBQTtJQUM5Qix1REFBOEIsQ0FBQTtJQUM5Qix5RUFBZ0QsQ0FBQTtJQUNoRCx1RkFBOEQsQ0FBQTtJQUM5RCxpRUFBd0MsQ0FBQTtJQUN4Qyx1REFBOEIsQ0FBQTtJQUM5QiwyREFBa0MsQ0FBQTtJQUNsQyw2REFBb0MsQ0FBQTtJQUNwQyw2REFBb0MsQ0FBQTtJQUNwQyxtRUFBMEMsQ0FBQTtJQUMxQyw2REFBb0MsQ0FBQTtJQUNwQyxvRkFBMkQsQ0FBQTtJQUMzRCx5REFBZ0MsQ0FBQTtJQUNoQyx5REFBZ0MsQ0FBQTtJQUNoQyw2REFBb0MsQ0FBQTtJQUNwQywyREFBa0MsQ0FBQTtJQUNsQyw2REFBb0MsQ0FBQTtJQUNwQywyREFBa0MsQ0FBQTtJQUNsQyx5REFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBcEJXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFvQmhDOztJQWlEMkIsMEJBQWlCOzs7O0lBTTNDLHVCQUFNLGFBQUMsTUFBb0I7SUFPM0IsMkJBQVUsYUFBQyxLQUFrQjtJQU83QiwwQ0FBeUIsYUFBQyxZQUF3QztJQU9sRSwyQ0FBMEIsYUFBQyxZQUF5QztJQU9wRSx1Q0FBc0IsYUFBQyxpQkFBMEM7SUFRakUsK0JBQWMsYUFBQyxNQUE2QixFQUFFLE9BQWU7SUFPN0Qsd0NBQXVCLGFBQUMsa0JBQTJCO0lBT25ELCtCQUFjLGFBQUMsT0FBZ0I7SUFPL0IsK0JBQWMsYUFBQyxHQUFXO0lBTzFCLDJCQUFVLGFBQUMsT0FBZ0I7SUFRM0IsNkJBQVksYUFBQyxTQUFpQjtJQU85QiwwQkFBUztJQVNULDZCQUFZO0lBT1oseUNBQXdCO0lBT3hCLDhCQUFhO0lBU2IsOEJBQWE7SUFTYix3QkFBTztJQVVQLHdCQUFPO0lBU1AsK0JBQWM7SUFTZCw4QkFBYTtJQVViLDRDQUEyQixhQUFDLEdBQVcsRUFBRSxLQUFhO0lBT3RELCtDQUE4QixhQUFDLEdBQVc7SUFNMUMsK0NBQThCO0lBUTlCLDJDQUEwQixhQUFDLEdBQVcsRUFBRSxLQUFhO0lBT3JELDhDQUE2QixhQUFDLEdBQVc7SUFNekMsOENBQTZCO0lBTTdCLGtDQUFpQjtJQVFqQixrRUFBaUQ7SUFTakQsc0NBQXFCLGFBQUMsZUFBdUI7SUFPN0Msa0RBQWlDOzs7Ozs7aUJBcHFCbkM7RUFnYzRCLGlCQUFpQjtTQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZG92YSwgSW9uaWNOYXRpdmVQbHVnaW4sIFBsdWdpbiB9IGZyb20gJ0Bpb25pYy1uYXRpdmUvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RFdmVudCB7XG4gIHByaXZhdGUgZXZlbnRUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHJldmVudWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBjdXJyZW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHRyYW5zYWN0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBjYWxsYmFja0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGJhY2tQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHBhcnRuZXJQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGV2ZW50VG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuZXZlbnRUb2tlbiA9IGV2ZW50VG9rZW47XG4gIH1cblxuICBzZXRSZXZlbnVlKHJldmVudWU6IG51bWJlciwgY3VycmVuY3k6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmV2ZW51ZSA9IHJldmVudWU7XG4gICAgdGhpcy5jdXJyZW5jeSA9IGN1cnJlbmN5O1xuICB9XG5cbiAgYWRkQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBhZGRQYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uSWQodHJhbnNhY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbklkID0gdHJhbnNhY3Rpb25JZDtcbiAgfVxuXG4gIHNldENhbGxiYWNrSWQoY2FsbGJhY2tJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5jYWxsYmFja0lkID0gY2FsbGJhY2tJZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRqdXN0Q29uZmlnIHtcbiAgcHJpdmF0ZSBhcHBUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlIGVudmlyb25tZW50OiBBZGp1c3RFbnZpcm9ubWVudDtcbiAgcHJpdmF0ZSBzZGtQcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSBkZWxheVN0YXJ0ID0gMC4wO1xuICBwcml2YXRlIGxvZ0xldmVsOiBBZGp1c3RMb2dMZXZlbCA9IG51bGw7XG4gIHByaXZhdGUgZGVmYXVsdFRyYWNrZXI6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgdXJsU3RyYXRlZ3k6IEFkanVzdFVybFN0cmF0ZWd5ID0gbnVsbDtcbiAgcHJpdmF0ZSBleHRlcm5hbERldmljZUlkOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIHNlbmRJbkJhY2tncm91bmQ6IGJvb2xlYW4gPSBudWxsO1xuICBwcml2YXRlIHNob3VsZExhdW5jaERlZXBsaW5rOiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSBldmVudEJ1ZmZlcmluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xuICBwcml2YXRlIHVzZXJBZ2VudDogc3RyaW5nID0gbnVsbDtcbiAgcHJpdmF0ZSBpc0RldmljZUtub3duOiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSBuZWVkc0Nvc3Q6IGJvb2xlYW4gPSBudWxsO1xuICBwcml2YXRlIHNlY3JldElkOiBudW1iZXIgPSBudWxsO1xuICBwcml2YXRlIGluZm8xOiBudW1iZXIgPSBudWxsO1xuICBwcml2YXRlIGluZm8yOiBudW1iZXIgPSBudWxsO1xuICBwcml2YXRlIGluZm8zOiBudW1iZXIgPSBudWxsO1xuICBwcml2YXRlIGluZm80OiBudW1iZXIgPSBudWxsO1xuICBwcml2YXRlIHByb2Nlc3NOYW1lOiBzdHJpbmcgPSBudWxsOyAvLyBBbmRyb2lkIG9ubHlcbiAgcHJpdmF0ZSBwcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkOiBib29sZWFuID0gbnVsbDsgLy8gQW5kcm9pZCBvbmx5XG4gIHByaXZhdGUgYWxsb3dpQWRJbmZvUmVhZGluZzogYm9vbGVhbiA9IG51bGw7IC8vIGlPUyBvbmx5XG4gIHByaXZhdGUgYWxsb3dJZGZhUmVhZGluZzogYm9vbGVhbiA9IG51bGw7IC8vIGlPUyBvbmx5XG4gIHByaXZhdGUgYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmc6IGJvb2xlYW4gPSBudWxsOyAvLyBpT1Mgb25seVxuXG4gIHByaXZhdGUgYXR0cmlidXRpb25DYWxsYmFjazogKGF0dHJpYnV0aW9uOiBBZGp1c3RBdHRyaWJ1dGlvbikgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgZXZlbnRUcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrOiAoZXZlbnQ6IEFkanVzdEV2ZW50U3VjY2VzcykgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgZXZlbnRUcmFja2luZ0ZhaWxlZENhbGxiYWNrOiAoZXZlbnQ6IEFkanVzdEV2ZW50RmFpbHVyZSkgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s6IChzZXNzaW9uOiBBZGp1c3RTZXNzaW9uU3VjY2VzcykgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2s6IChzZXNzaW9uOiBBZGp1c3RTZXNzaW9uRmFpbHVyZSkgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrOiAodXJpOiBzdHJpbmcpID0+IHZvaWQgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGFwcFRva2VuOiBzdHJpbmcsIGVudmlyb25tZW50OiBBZGp1c3RFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuYXBwVG9rZW4gPSBhcHBUb2tlbjtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXRBcHBTZWNyZXQoc2VjcmV0SWQ6IG51bWJlciwgaW5mbzE6IG51bWJlciwgaW5mbzI6IG51bWJlciwgaW5mbzM6IG51bWJlciwgaW5mbzQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VjcmV0SWQgPSBzZWNyZXRJZDtcbiAgICB0aGlzLmluZm8xID0gaW5mbzE7XG4gICAgdGhpcy5pbmZvMiA9IGluZm8yO1xuICAgIHRoaXMuaW5mbzMgPSBpbmZvMztcbiAgICB0aGlzLmluZm80ID0gaW5mbzQ7XG4gIH1cblxuICBzZXREZWxheVN0YXJ0KGRlbGF5U3RhcnQ6IG51bWJlcikge1xuICAgIHRoaXMuZGVsYXlTdGFydCA9IGRlbGF5U3RhcnQ7XG4gIH1cblxuICBzZXRMb2dMZXZlbChsb2dMZXZlbDogQWRqdXN0TG9nTGV2ZWwpIHtcbiAgICB0aGlzLmxvZ0xldmVsID0gbG9nTGV2ZWw7XG4gIH1cblxuICBzZXREZWZhdWx0VHJhY2tlcihkZWZhdWx0VHJhY2tlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5kZWZhdWx0VHJhY2tlciA9IGRlZmF1bHRUcmFja2VyO1xuICB9XG5cbiAgc2V0RXh0ZXJuYWxEZXZpY2VJZChleHRlcm5hbERldmljZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV4dGVybmFsRGV2aWNlSWQgPSBleHRlcm5hbERldmljZUlkO1xuICB9XG5cbiAgc2V0VXJsU3RyYXRlZ3kodXJsU3RyYXRlZ3k6IEFkanVzdFVybFN0cmF0ZWd5KSB7XG4gICAgdGhpcy51cmxTdHJhdGVneSA9IHVybFN0cmF0ZWd5O1xuICB9XG5cbiAgc2V0U2VuZEluQmFja2dyb3VuZChzZW5kSW5CYWNrZ3JvdW5kOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZW5kSW5CYWNrZ3JvdW5kID0gc2VuZEluQmFja2dyb3VuZDtcbiAgfVxuXG4gIHNldFNob3VsZExhdW5jaERlZXBsaW5rKHNob3VsZExhdW5jaERlZXBsaW5rOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG91bGRMYXVuY2hEZWVwbGluayA9IHNob3VsZExhdW5jaERlZXBsaW5rO1xuICB9XG5cbiAgc2V0RXZlbnRCdWZmZXJpbmdFbmFibGVkKGV2ZW50QnVmZmVyaW5nRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZXZlbnRCdWZmZXJpbmdFbmFibGVkID0gZXZlbnRCdWZmZXJpbmdFbmFibGVkO1xuICB9XG5cbiAgc2V0VXNlckFnZW50KHVzZXJBZ2VudDogc3RyaW5nKSB7XG4gICAgdGhpcy51c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gIH1cblxuICBzZXREZXZpY2VLbm93bihpc0RldmljZUtub3duOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc0RldmljZUtub3duID0gaXNEZXZpY2VLbm93bjtcbiAgfVxuXG4gIHNldE5lZWRzQ29zdChuZWVkc0Nvc3Q6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm5lZWRzQ29zdCA9IG5lZWRzQ29zdDtcbiAgfVxuXG4gIHNldFByb2Nlc3NOYW1lKHByb2Nlc3NOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb2Nlc3NOYW1lID0gcHJvY2Vzc05hbWU7XG4gIH1cblxuICBzZXRQcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkKHByZWluc3RhbGxUcmFja2luZ0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnByZWluc3RhbGxUcmFja2luZ0VuYWJsZWQgPSBwcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkO1xuICB9XG5cbiAgc2V0QWxsb3dpQWRJbmZvUmVhZGluZyhhbGxvd2lBZEluZm9SZWFkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxvd2lBZEluZm9SZWFkaW5nID0gYWxsb3dpQWRJbmZvUmVhZGluZztcbiAgfVxuXG4gIHNldEFsbG93SWRmYVJlYWRpbmcoYWxsb3dJZGZhUmVhZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dJZGZhUmVhZGluZyA9IGFsbG93SWRmYVJlYWRpbmc7XG4gIH1cblxuICBzZXRBbGxvd0FkU2VydmljZXNJbmZvUmVhZGluZyhhbGxvd0FkU2VydmljZXNJbmZvUmVhZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmcgPSBhbGxvd0FkU2VydmljZXNJbmZvUmVhZGluZztcbiAgfVxuXG4gIHNldEF0dHJpYnV0aW9uQ2FsbGJhY2tMaXN0ZW5lcihhdHRyaWJ1dGlvbkNhbGxiYWNrOiAoYXR0cmlidXRpb246IEFkanVzdEF0dHJpYnV0aW9uKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGlvbkNhbGxiYWNrID0gYXR0cmlidXRpb25DYWxsYmFjaztcbiAgfVxuXG4gIHNldEV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFja0xpc3RlbmVyKGV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudFN1Y2Nlc3MpID0+IHZvaWQpIHtcbiAgICB0aGlzLmV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayA9IGV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaztcbiAgfVxuXG4gIHNldEV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFja0xpc3RlbmVyKGV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudEZhaWx1cmUpID0+IHZvaWQpIHtcbiAgICB0aGlzLmV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjayA9IGV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjaztcbiAgfVxuXG4gIHNldFNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrTGlzdGVuZXIoXG4gICAgc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s6IChzZXNzaW9uOiBBZGp1c3RTZXNzaW9uU3VjY2VzcykgPT4gdm9pZFxuICApIHtcbiAgICB0aGlzLnNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrID0gc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRTZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFja0xpc3RlbmVyKHNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvbkZhaWx1cmUpID0+IHZvaWQpIHtcbiAgICB0aGlzLnNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrID0gc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXREZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2tMaXN0ZW5lcihkZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2s6ICh1cmk6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMuZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrID0gZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGlvbkNhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0aW9uQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldFNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmZXJyZWREZWVwbGlua0NhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmVycmVkRGVlcGxpbmtDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgaGFzQXR0cmlidXRpb25MaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGlvbkNhbGxiYWNrICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFdmVudFRyYWNraW5nU3VjY2VlZGVkTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFdmVudFRyYWNraW5nRmFpbGVkTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmFja2luZ0ZhaWxlZENhbGxiYWNrICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRMaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2Vzc2lvblRyYWNraW5nRmFpbGVkTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc0RlZmVycmVkRGVlcGxpbmtDYWxsYmFja0xpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmVycmVkRGVlcGxpbmtDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRqdXN0QXBwU3RvcmVTdWJzY3JpcHRpb24ge1xuICBwcml2YXRlIHByaWNlOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVjZWlwdDogc3RyaW5nO1xuICBwcml2YXRlIHRyYW5zYWN0aW9uRGF0ZTogc3RyaW5nO1xuICBwcml2YXRlIHNhbGVzUmVnaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGJhY2tQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHBhcnRuZXJQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaWNlOiBzdHJpbmcsIGN1cnJlbmN5OiBzdHJpbmcsIHRyYW5zYWN0aW9uSWQ6IHN0cmluZywgcmVjZWlwdDogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmljZSA9IHByaWNlO1xuICAgIHRoaXMuY3VycmVuY3kgPSBjdXJyZW5jeTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uSWQgPSB0cmFuc2FjdGlvbklkO1xuICAgIHRoaXMucmVjZWlwdCA9IHJlY2VpcHQ7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbkRhdGUodHJhbnNhY3Rpb25EYXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uRGF0ZSA9IHRyYW5zYWN0aW9uRGF0ZTtcbiAgfVxuXG4gIHNldFNhbGVzUmVnaW9uKHNhbGVzUmVnaW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNhbGVzUmVnaW9uID0gc2FsZXNSZWdpb247XG4gIH1cblxuICBhZGRDYWxsYmFja1BhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIGFkZFBhcnRuZXJQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RQbGF5U3RvcmVTdWJzY3JpcHRpb24ge1xuICBwcml2YXRlIHByaWNlOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBza3U6IHN0cmluZztcbiAgcHJpdmF0ZSBvcmRlcklkOiBzdHJpbmc7XG4gIHByaXZhdGUgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIHByaXZhdGUgcHVyY2hhc2VUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHB1cmNoYXNlVGltZTogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwYXJ0bmVyUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihwcmljZTogc3RyaW5nLCBjdXJyZW5jeTogc3RyaW5nLCBza3U6IHN0cmluZywgb3JkZXJJZDogc3RyaW5nLCBzaWduYXR1cmU6IHN0cmluZywgcHVyY2hhc2VUb2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmljZSA9IHByaWNlO1xuICAgIHRoaXMuY3VycmVuY3kgPSBjdXJyZW5jeTtcbiAgICB0aGlzLnNrdSA9IHNrdTtcbiAgICB0aGlzLm9yZGVySWQgPSBvcmRlcklkO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMucHVyY2hhc2VUb2tlbiA9IHB1cmNoYXNlVG9rZW47XG4gIH1cblxuICBzZXRQdXJjaGFzZVRpbWUocHVyY2hhc2VUaW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnB1cmNoYXNlVGltZSA9IHB1cmNoYXNlVGltZTtcbiAgfVxuXG4gIGFkZENhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgYWRkUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkanVzdFRoaXJkUGFydHlTaGFyaW5nIHtcbiAgcHJpdmF0ZSBpc0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgZ3JhbnVsYXJPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGlzRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNFbmFibGVkID0gaXNFbmFibGVkO1xuICB9XG5cbiAgYWRkR3JhbnVsYXJPcHRpb24ocGFydG5lck5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmdyYW51bGFyT3B0aW9ucy5wdXNoKHBhcnRuZXJOYW1lKTtcbiAgICB0aGlzLmdyYW51bGFyT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgdGhpcy5ncmFudWxhck9wdGlvbnMucHVzaCh2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RBdHRyaWJ1dGlvbiB7XG4gIHRyYWNrZXJUb2tlbjogc3RyaW5nO1xuICB0cmFja2VyTmFtZTogc3RyaW5nO1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIGNhbXBhaWduOiBzdHJpbmc7XG4gIGFkZ3JvdXA6IHN0cmluZztcbiAgY3JlYXRpdmU6IHN0cmluZztcbiAgY2xpY2tMYWJlbDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGNvc3RUeXBlOiBzdHJpbmc7XG4gIGNvc3RBbW91bnQ6IHN0cmluZztcbiAgY29zdEN1cnJlbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRqdXN0U2Vzc2lvblN1Y2Nlc3Mge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdFNlc3Npb25GYWlsdXJlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgYWRpZDogc3RyaW5nO1xuICB3aWxsUmV0cnk6IGJvb2xlYW47XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdEV2ZW50U3VjY2VzcyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFkaWQ6IHN0cmluZztcbiAgZXZlbnRUb2tlbjogc3RyaW5nO1xuICBjYWxsYmFja0lkOiBzdHJpbmc7XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdEV2ZW50RmFpbHVyZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFkaWQ6IHN0cmluZztcbiAgZXZlbnRUb2tlbjogc3RyaW5nO1xuICB3aWxsUmV0cnk6IGJvb2xlYW47XG4gIGNhbGxiYWNrSWQ6IHN0cmluZztcbiAganNvblJlc3BvbnNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdEVudmlyb25tZW50IHtcbiAgU2FuZGJveCA9ICdzYW5kYm94JyxcbiAgUHJvZHVjdGlvbiA9ICdwcm9kdWN0aW9uJyxcbn1cblxuZXhwb3J0IGVudW0gQWRqdXN0TG9nTGV2ZWwge1xuICBWZXJib3NlID0gJ1ZFUkJPU0UnLFxuICBEZWJ1ZyA9ICdERUJVRycsXG4gIEluZm8gPSAnSU5GTycsXG4gIFdhcm4gPSAnV0FSTicsXG4gIEVycm9yID0gJ0VSUk9SJyxcbiAgQXNzZXJ0ID0gJ0FTU0VSVCcsXG4gIFN1cHByZXNzID0gJ1NVUFBSRVNTJyxcbn1cblxuZXhwb3J0IGVudW0gQWRqdXN0VXJsU3RyYXRlZ3kge1xuICBJbmRpYSA9ICdJbmRpYScsXG4gIENoaW5hID0gJ0NoaW5hJyxcbn1cblxuZXhwb3J0IGVudW0gQWRqdXN0QWRSZXZlbnVlU291cmNlIHtcbiAgQWRSZXZlbnVlU291cmNlTW9wdWIgPSAnbW9wdWInLFxuICBBZFJldmVudWVTb3VyY2VBZG1vYiA9ICdhZG1vYicsXG4gIEFkUmV2ZW51ZVNvdXJjZUZiTmF0aXZlQWQgPSAnZmFjZWJvb2tfbmF0aXZlX2FkJyxcbiAgQWRSZXZlbnVlU291cmNlRmJBdWRpZW5jZU5ldHdvcmsgPSAnZmFjZWJvb2tfYXVkaWVuY2VfbmV0d29yaycsXG4gIEFkUmV2ZW51ZVNvdXJjZUlyb25zb3VyY2UgPSAnaXJvbnNvdXJjZScsXG4gIEFkUmV2ZW51ZVNvdXJjZUZ5YmVyID0gJ2Z5YmVyJyxcbiAgQWRSZXZlbnVlU291cmNlQWVyc2VydiA9ICdhZXJzZXJ2JyxcbiAgQWRSZXZlbnVlU291cmNlQXBwb2RlYWwgPSAnYXBwb2RlYWwnLFxuICBBZFJldmVudWVTb3VyY2VBZGluY3ViZSA9ICdhZGluY3ViZScsXG4gIEFkUmV2ZW51ZVNvdXJjZUZ1c2VQb3dlcmVkID0gJ2Z1c2Vwb3dlcmVkJyxcbiAgQWRSZXZlbnVlU291cmNlQWRkYXBwdHIgPSAnYWRkYXBwdHInLFxuICBBZFJldmVudWVTb3VyY2VNaWxsZW5uaWFsTWVkaWF0aW9uID0gJ21pbGxlbm5pYWxfbWVkaWF0aW9uJyxcbiAgQWRSZXZlbnVlU291cmNlRmx1cnJ5ID0gJ2ZsdXJyeScsXG4gIEFkUmV2ZW51ZVNvdXJjZUFkbW9zdCA9ICdhZG1vc3QnLFxuICBBZFJldmVudWVTb3VyY2VEZWx0YWRuYSA9ICdkZWx0YWRuYScsXG4gIEFkUmV2ZW51ZVNvdXJjZVVwc2lnaHQgPSAndXBzaWdodCcsXG4gIEFkUmV2ZW51ZVNvdXJjZVVuaXR5QWRzID0gJ3VuaXR5YWRzJyxcbiAgQWRSZXZlbnVlU291cmNlQWR0b2FwcCA9ICdhZHRvYXBwJyxcbiAgQWRSZXZlbnVlU291cmNlVGFwZGFxID0gJ3RhcGRhcScsXG59XG5cbi8qKlxuICogQG5hbWUgQWRqdXN0XG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgaXMgdGhlIElvbmljIENvcmRvdmEgU0RLIG9mIEFkanVzdOKEoi4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgQWRqdXN04oSiIGF0IGFkanVzdC5jb20uXG4gKlxuICogUmVxdWlyZXMgQ29yZG92YSBwbHVnaW46IGBjb20uYWRqdXN0LnNka2AuIEZvciBtb3JlIGluZm8sIHBsZWFzZSBzZWUgdGhlIFtBZGp1c3QgQ29yZG92YSBTREtdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZGp1c3QvY29yZG92YV9zZGspXG4gKlxuICogQHVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaW1wb3J0IHsgQWRqdXN0LCBBZGp1c3RDb25maWcsIEFkanVzdEVudmlyb25tZW50IH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9hZGp1c3QnO1xuICpcbiAqICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFkanVzdDogQWRqdXN0KSB7IH1cbiAqXG4gKiAgLi4uXG4gKlxuICogIGNvbnN0IGNvbmZpZyA9IG5ldyBBZGp1c3RDb25maWcoJ0FQUC1UT0tFTi1IRVJFJywgQWRqdXN0RW52aXJvbm1lbnQuU2FuZGJveCk7XG4gKiAgY29uZmlnLmxvZ0xldmVsID0gQWRqdXN0TG9nTGV2ZWwuVmVyYm9zZTtcbiAqICAvLyBTZXQgb3RoZXIgY29uZmlnIHByb3BlcnRpZXMuXG4gKiAgYWRqdXN0LmNyZWF0ZShjb25maWcpO1xuICpcbiAqIGBgYFxuICogQGludGVyZmFjZXNcbiAqIEFkanVzdEF0dHJpYnV0aW9uXG4gKiBBZGp1c3RTZXNzaW9uU3VjY2Vzc1xuICogQWRqdXN0U2Vzc2lvbkZhaWx1cmVcbiAqIEFkanVzdEV2ZW50U3VjY2Vzc1xuICogQWRqdXN0RXZlbnRGYWlsdXJlXG4gKiBAY2xhc3Nlc1xuICogQWRqdXN0RXZlbnRcbiAqIEFkanVzdENvbmZpZ1xuICogQWRqdXN0QXBwU3RvcmVTdWJzY3JpcHRpb25cbiAqIEFkanVzdFBsYXlTdG9yZVN1YnNjcmlwdGlvblxuICogQWRqdXN0VGhpcmRQYXJ0eVNoYXJpbmdcbiAqIEBlbnVtc1xuICogQWRqdXN0RW52aXJvbm1lbnRcbiAqIEFkanVzdExvZ0xldmVsXG4gKiBBZGp1c3RVcmxTdHJhdGVneVxuICogQWRqdXN0QWRSZXZlbnVlU291cmNlXG4gKi9cbkBQbHVnaW4oe1xuICBwbHVnaW5OYW1lOiAnQWRqdXN0JyxcbiAgcGx1Z2luOiAnY29tLmFkanVzdC5zZGsnLFxuICBwbHVnaW5SZWY6ICdBZGp1c3QnLFxuICByZXBvOiAnaHR0cHM6Ly9naXRodWIuY29tL2FkanVzdC9jb3Jkb3ZhX3NkaycsXG4gIHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddLFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZGp1c3QgZXh0ZW5kcyBJb25pY05hdGl2ZVBsdWdpbiB7XG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyBBZGp1c3QgU0RLXG4gICAqIEBwYXJhbSB7QWRqdXN0Q29uaWd9IGNvbmZpZyBBZGp1c3QgY29uZmlnIG9iamVjdCB1c2VkIGFzIHN0YXJ0aW5nIG9wdGlvbnNcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBjcmVhdGUoY29uZmlnOiBBZGp1c3RDb25maWcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBhbiBldmVudFxuICAgKiBAcGFyYW0ge0FkanVzdEV2ZW50fSBldmVudCBBZGp1c3QgZXZlbnQgb2JqZWN0IHRvIGJlIHRyYWNrZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja0V2ZW50KGV2ZW50OiBBZGp1c3RFdmVudCk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIEFwcCBTdG9yZSBzdWJzY3JpcHRpb25cbiAgICogQHBhcmFtIHtBZGp1c3RBcHBTdG9yZVN1YnNjcmlwdGlvbn0gc3Vic2NyaXB0aW9uIEFkanVzdCBBcHAgU3RvcmUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byBiZSB0cmFja2VkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tBcHBTdG9yZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb246IEFkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9uKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgUGxheSBTdG9yZSBzdWJzY3JpcHRpb25cbiAgICogQHBhcmFtIHtBZGp1c3RQbGF5U3RvcmVTdWJzY3JpcHRpb259IHN1YnNjcmlwdGlvbiBBZGp1c3QgUGxheSBTdG9yZSBzdWJzY3JpcHRpb24gb2JqZWN0IHRvIGJlIHRyYWNrZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja1BsYXlTdG9yZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb246IEFkanVzdFBsYXlTdG9yZVN1YnNjcmlwdGlvbik6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIHRoaXJkIHBhcnR5IHNoYXJpbmcgY2hvaWNlXG4gICAqIEBwYXJhbSB7QWRqdXN0VGhpcmRQYXJ0eVNoYXJpbmd9IHRoaXJkUGFydHlTaGFyaW5nIEFkanVzdCB0aGlyZCBwYXJ0eSBzaGFyaW5nIG9iamVjdCB0byBiZSB0cmFja2VkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tUaGlyZFBhcnR5U2hhcmluZyh0aGlyZFBhcnR5U2hhcmluZzogQWRqdXN0VGhpcmRQYXJ0eVNoYXJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBhZCByZXZlbnVlIGRhdGFcbiAgICogQHBhcmFtIHtBZGp1c3RBZFJldmVudWVTb3VyY2V9IHNvdXJjZSBBZCByZXZlbnVlIHNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF5bG9hZCBBZCByZXZlbnVlIEpTT04gc3RyaW5nIHBheWxvYWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja0FkUmV2ZW51ZShzb3VyY2U6IEFkanVzdEFkUmV2ZW51ZVNvdXJjZSwgcGF5bG9hZDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgbWVhc3VyZW1lbnQgY29uc2VudCBjaG9pY2VcbiAgICogQHBhcmFtIHtib29sZWFufSBtZWFzdXJlbWVudENvbnNlbnQgc2V0IG1lYXN1cmVtZW50IGNvbnNlbnQgdG8gdHJ1ZSBvciBmYWxzZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHRyYWNrTWVhc3VyZW1lbnRDb25zZW50KG1lYXN1cmVtZW50Q29uc2VudDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgc2V0cyBvZmZsaW5lIG1vZGUgb24gb3Igb2ZmXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBzZXQgdG8gdHJ1ZSBmb3Igb2ZmbGluZSBtb2RlIG9uXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0T2ZmbGluZU1vZGUoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogQnkgbWFraW5nIHRoaXMgY2FsbCwgdGhlIEFkanVzdCBTREsgd2lsbCB0cnkgdG8gZmluZCBpZiB0aGVyZSBpcyBhbnkgbmV3IGF0dHJpYnV0aW9uIGluZm8gaW5zaWRlIG9mIHRoZSBkZWVwIGxpbmsgYW5kIGlmIGFueSwgaXQgd2lsbCBiZSBzZW50IHRvIHRoZSBBZGp1c3QgYmFja2VuZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBVUkwgb2YgdGhlIGRlZXBsaW5rXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgYXBwV2lsbE9wZW5VcmwodXJsOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gZGlzYWJsZS9lbmFibGUgdGhlIEFkanVzdCBTREsgZnJvbSB0cmFja2luZyBieSBpbnZva2luZyB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgc2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgU0RLXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0RW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUbyBzZW5kIHVzIHRoZSBwdXNoIG5vdGlmaWNhdGlvbiB0b2tlbiwgYWRkIHRoZSBmb2xsb3dpbmcgY2FsbCB0byBBZGp1c3Qgd2hlbmV2ZXIgeW91IGdldCB5b3VyIHRva2VuIGluIHRoZSBhcHAgb3Igd2hlbiBpdCBnZXRzIHVwZGF0ZWQuXG4gICAqIFB1c2ggdG9rZW5zIGFyZSB1c2VkIGZvciBBdWRpZW5jZSBCdWlsZGVyIGFuZCBjbGllbnQgY2FsbGJhY2tzLCBhbmQgdGhleSBhcmUgcmVxdWlyZWQgZm9yIHRoZSB1cGNvbWluZyB1bmluc3RhbGwgdHJhY2tpbmcgZmVhdHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1c2hUb2tlbiBwdXNoIHRva2VuIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2V0UHVzaFRva2VuKHB1c2hUb2tlbjogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgQWRqdXN0IFNESyBpcyBjdXJyZW50bHkgZW5hYmxlZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb25cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzRW5hYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSW4gYWNjb3JkYW5jZSB3aXRoIGFydGljbGUgMTcgb2YgdGhlIEVVJ3MgR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gUmVndWxhdGlvbiAoR0RQUiksIHlvdSBjYW4gbm90aWZ5IEFkanVzdCB3aGVuIGEgdXNlciBoYXMgZXhlcmNpc2VkIHRoZWlyIHJpZ2h0IHRvIGJlIGZvcmdvdHRlbi5cbiAgICogQ2FsbGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZCB3aWxsIGluc3RydWN0IHRoZSBBZGp1c3QgU0RLIHRvIGNvbW11bmljYXRlIHRoZSB1c2VyJ3MgY2hvaWNlIHRvIGJlIGZvcmdvdHRlbiB0byB0aGUgQWRqdXN0IGJhY2tlbmRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBnZHByRm9yZ2V0TWUoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIG5vdyBub3RpZnkgQWRqdXN0IHdoZW4gYSB1c2VyIGhhcyBleGVyY2lzZWQgdGhlaXIgcmlnaHQgdG8gc3RvcCBzaGFyaW5nIHRoZWlyIGRhdGEgd2l0aCBwYXJ0bmVycyBmb3IgbWFya2V0aW5nIHB1cnBvc2VzLCBidXQgaGFzIGFsbG93ZWQgaXQgdG8gYmUgc2hhcmVkIGZvciBzdGF0aXN0aWNzIHB1cnBvc2VzLlxuICAgKiBDYWxsaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kIHdpbGwgaW5zdHJ1Y3QgdGhlIEFkanVzdCBTREsgdG8gY29tbXVuaWNhdGUgdGhlIHVzZXIncyBjaG9pY2UgdG8gZGlzYWJsZSBkYXRhIHNoYXJpbmcgdG8gdGhlIEFkanVzdCBiYWNrZW5kXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZGlzYWJsZVRoaXJkUGFydHlTaGFyaW5nKCk6IHZvaWQge31cblxuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBnZXQgR29vZ2xlIEFkSWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGdvb2dsZSBBZElkIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEdvb2dsZUFkSWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSWYgeW91IG5lZWQgdG8gb2J0YWluIHRoZSBBbWF6b24gQWR2ZXJ0aXNpbmcgSUQsIHlvdSBjYW4gbWFrZSBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi5cbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFuYXppYiBhZHYuIElEXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFtYXpvbkFkSWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVG8gb2J0YWluIHRoZSBJREZBLCBjYWxsIHRoaXMgZnVuY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIElERkEgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldElkZmEoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRm9yIGV2ZXJ5IGRldmljZSB3aXRoIHlvdXIgYXBwIGluc3RhbGxlZCBvbiBpdCwgdGhlIEFkanVzdCBiYWNrZW5kIGdlbmVyYXRlcyBhIHVuaXF1ZSBBZGp1c3QgZGV2aWNlIGlkZW50aWZpZXIgKGFkaWQpLlxuICAgKiBJbiBvcmRlciB0byBvYnRhaW4gdGhpcyBpZGVudGlmaWVyLCBjYWxsIHRoaXMgZnVuY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFkaWQgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QWRpZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB5b3Ugd2FudCB0byBhY2Nlc3MgaW5mb3JtYXRpb24gYWJvdXQgYSB1c2VyJ3MgY3VycmVudCBhdHRyaWJ1dGlvbiB3aGVuZXZlciB5b3UgbmVlZCBpdCwgeW91IGNhbiBtYWtlIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8QWRqdXN0QXR0cmlidXRpb24+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIEFkanVzdEF0dHJpYnV0aW9uIG9iamVjdFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBdHRyaWJ1dGlvbigpOiBQcm9taXNlPEFkanVzdEF0dHJpYnV0aW9uPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdmVyc2lvbiBvZiB0aGUgU0RLIHVzZWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIHNkayB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFNka1ZlcnNpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gYWRkIHNlc3Npb24gY2FsbGJhY2sgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBhZGRTZXNzaW9uQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNwZWNpZmljIHNlc3Npb24gY2FsbGJhY2sgcGFyYW1ldGVyIGJ5IHBhc3NpbmcgdGhlIGRlc2lyaW5nIGtleSB0byB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHJlbW92ZVNlc3Npb25DYWxsYmFja1BhcmFtZXRlcihrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogSWYgYWxsIGtleXMgYW5kIHZhbHVlcyBmcm9tIHRoZSBzZXNzaW9uIGNhbGxiYWNrIHBhcmFtZXRlcnMgaGF2ZSB0byBiZSByZW1vdmVkLCBjYWxsIHRoaXMgbWV0aG9kXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgcmVzZXRTZXNzaW9uQ2FsbGJhY2tQYXJhbWV0ZXJzKCk6IHZvaWQge31cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gYWRkIHNlc3Npb24gcGFydG5lciBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBrZXkga2V5XG4gICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGFkZFNlc3Npb25QYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzcGVjaWZpYyBzZXNzaW9uIHBhcnRuZXIgcGFyYW1ldGVyIGJ5IHBhc3NpbmcgdGhlIGRlc2lyaW5nIGtleSB0byB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHJlbW92ZVNlc3Npb25QYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBJZiBhbGwga2V5cyBhbmQgdmFsdWVzIGZyb20gdGhlIHNlc3Npb24gcGFydG5lciBwYXJhbWV0ZXJzIGhhdmUgdG8gYmUgcmVtb3ZlZCwgY2FsbCB0aGlzIG1ldGhvZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHJlc2V0U2Vzc2lvblBhcnRuZXJQYXJhbWV0ZXJzKCk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgY2FsbCB3aWxsIG1ha2UgdGhlIEFkanVzdCBTREsgc2VuZCB0aGUgaW5pdGlhbCBpbnN0YWxsIHNlc3Npb24gYW5kIGFueSBldmVudHMgY3JlYXRlZCwgaWYgdGhleSB3ZXJlIG5vdCBzZW50IGFmdGVyIGRlbGF5IHN0YXJ0IHdhcyBzZXQgYW5kIGl0J3MgZGVsYXkgZXhwaXJlZC5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZW5kRmlyc3RQYWNrYWdlcygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgQWRqdXN0IFNESyB0byBzaG93IHBvcCB1cCBkaWFsb2cgZm9yIGFza2luZyB1c2VyJ3MgY29uc2VudCB0byBiZSB0cmFja2VkLlxuICAgKiBJbiBvcmRlciB0byBkbyB0aGlzLCBjYWxsIHRoaXMgZnVuY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxudW1iZXI+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIHVzZXIncyBjb25zZW50IHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlcXVlc3RUcmFja2luZ0F1dGhvcml6YXRpb25XaXRoQ29tcGxldGlvbkhhbmRsZXIoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogWW91IGNhbiB1cGRhdGUgU0tBZE5ldHdvcmsgY29udmVyc2lvbiB2YWx1ZSB3aXRoIGNhbGxpbmcgdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvbnZlcnNpb25WYWx1ZSBjb252ZXJzaW9uIHZhbHVlIGZvciB0aGUgdXNlclxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHVwZGF0ZUNvbnZlcnNpb25WYWx1ZShjb252ZXJzaW9uVmFsdWU6IG51bWJlcik6IHZvaWQge31cblxuICAvKipcbiAgICogVG8gb2J0YWluIHRoZSBhcHAgdHJhY2tpbmcgYXV0aG9yaXphdGlvbiBzdGF0dXMgaW4gaU9TLCBjYWxsIHRoaXMgZnVuY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxudW1iZXI+fSBSZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFwcCB0cmFja2luZyBhdXRob3JpemF0aW9uIHN0YXR1c1xuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBcHBUcmFja2luZ0F1dGhvcml6YXRpb25TdGF0dXMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm47XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGlvbmljLW5hdGl2ZS9wbHVnaW5zL2FkanVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBTyw4QkFBc0MsTUFBTSxvQkFBb0IsQ0FBQzs7SUFXdEUscUJBQVksVUFBa0I7UUFIdEIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0NBQVUsR0FBVixVQUFXLE9BQWUsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsMENBQW9CLEdBQXBCLFVBQXFCLEdBQVcsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUNBQW1CLEdBQW5CLFVBQW9CLEdBQVcsRUFBRSxLQUFhO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLGFBQXFCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQ0FBYSxHQUFiLFVBQWMsVUFBa0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztzQkFyQ0g7Ozs7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V0FBWSxxQkFBcUI7SUFDL0Isd0VBQStDLENBQUE7SUFDL0MsdURBQThCLENBQUE7SUFDOUIsMkRBQWtDLENBQUE7SUFDbEMscUVBQTRDLENBQUE7QUFDOUMsQ0FBQyxFQUxXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFLaEM7O0lBa0QyQiwwQkFBaUI7Ozs7SUFNM0MsdUJBQU0sYUFBQyxNQUFvQjtJQU8zQiwyQkFBVSxhQUFDLEtBQWtCO0lBTzdCLDBDQUF5QixhQUFDLFlBQXdDO0lBT2xFLDJDQUEwQixhQUFDLFlBQXlDO0lBT3BFLHVDQUFzQixhQUFDLGlCQUEwQztJQWlCakUsK0JBQWMsYUFBQyxpQkFBc0IsRUFBRSxPQUFhO0lBT3BELHdDQUF1QixhQUFDLGtCQUEyQjtJQU9uRCwrQkFBYyxhQUFDLE9BQWdCO0lBTy9CLCtCQUFjLGFBQUMsR0FBVztJQU8xQiwyQkFBVSxhQUFDLE9BQWdCO0lBUTNCLDZCQUFZLGFBQUMsU0FBaUI7SUFPOUIsMEJBQVM7SUFTVCw2QkFBWTtJQU9aLHlDQUF3QjtJQU94Qiw4QkFBYTtJQVNiLDhCQUFhO0lBU2Isd0JBQU87SUFVUCx3QkFBTztJQVNQLCtCQUFjO0lBU2QsOEJBQWE7SUFVYiw0Q0FBMkIsYUFBQyxHQUFXLEVBQUUsS0FBYTtJQU90RCwrQ0FBOEIsYUFBQyxHQUFXO0lBTTFDLCtDQUE4QjtJQVE5QiwyQ0FBMEIsYUFBQyxHQUFXLEVBQUUsS0FBYTtJQU9yRCw4Q0FBNkIsYUFBQyxHQUFXO0lBTXpDLDhDQUE2QjtJQU03QixrQ0FBaUI7SUFRakIsa0VBQWlEO0lBU2pELHNDQUFxQixhQUFDLGVBQXVCO0lBTzdDLGtEQUFpQzs7Ozs7O2lCQS90Qm5DO0VBa2Y0QixpQkFBaUI7U0FBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmRvdmEsIElvbmljTmF0aXZlUGx1Z2luLCBQbHVnaW4gfSBmcm9tICdAaW9uaWMtbmF0aXZlL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQWRqdXN0RXZlbnQge1xuICBwcml2YXRlIGV2ZW50VG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSByZXZlbnVlOiBudW1iZXI7XG4gIHByaXZhdGUgY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGJhY2tJZDogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwYXJ0bmVyUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihldmVudFRva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50VG9rZW4gPSBldmVudFRva2VuO1xuICB9XG5cbiAgc2V0UmV2ZW51ZShyZXZlbnVlOiBudW1iZXIsIGN1cnJlbmN5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJldmVudWUgPSByZXZlbnVlO1xuICAgIHRoaXMuY3VycmVuY3kgPSBjdXJyZW5jeTtcbiAgfVxuXG4gIGFkZENhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgYWRkUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMudHJhbnNhY3Rpb25JZCA9IHRyYW5zYWN0aW9uSWQ7XG4gIH1cblxuICBzZXRDYWxsYmFja0lkKGNhbGxiYWNrSWQ6IHN0cmluZykge1xuICAgIHRoaXMuY2FsbGJhY2tJZCA9IGNhbGxiYWNrSWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkanVzdENvbmZpZyB7XG4gIHByaXZhdGUgYXBwVG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudDogQWRqdXN0RW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgc2RrUHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgZGVsYXlTdGFydCA9IDAuMDtcbiAgcHJpdmF0ZSBsb2dMZXZlbDogQWRqdXN0TG9nTGV2ZWwgPSBudWxsO1xuICBwcml2YXRlIGRlZmF1bHRUcmFja2VyOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIHVybFN0cmF0ZWd5OiBBZGp1c3RVcmxTdHJhdGVneSA9IG51bGw7XG4gIHByaXZhdGUgZXh0ZXJuYWxEZXZpY2VJZDogc3RyaW5nID0gbnVsbDtcbiAgcHJpdmF0ZSBzZW5kSW5CYWNrZ3JvdW5kOiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSBzaG91bGRMYXVuY2hEZWVwbGluazogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgZXZlbnRCdWZmZXJpbmdFbmFibGVkOiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSB1c2VyQWdlbnQ6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgaXNEZXZpY2VLbm93bjogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgbmVlZHNDb3N0OiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSBzZWNyZXRJZDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvMTogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvMjogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvMzogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvNDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBwcm9jZXNzTmFtZTogc3RyaW5nID0gbnVsbDsgLy8gQW5kcm9pZCBvbmx5XG4gIHByaXZhdGUgcHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZDogYm9vbGVhbiA9IG51bGw7IC8vIEFuZHJvaWQgb25seVxuICBwcml2YXRlIHByZWluc3RhbGxGaWxlUGF0aDogc3RyaW5nID0gbnVsbDsgLy8gQW5kcm9pZCBvbmx5XG4gIHByaXZhdGUgYWxsb3dpQWRJbmZvUmVhZGluZzogYm9vbGVhbiA9IG51bGw7IC8vIGlPUyBvbmx5XG4gIHByaXZhdGUgYWxsb3dJZGZhUmVhZGluZzogYm9vbGVhbiA9IG51bGw7IC8vIGlPUyBvbmx5XG4gIHByaXZhdGUgYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmc6IGJvb2xlYW4gPSBudWxsOyAvLyBpT1Mgb25seVxuXG4gIHByaXZhdGUgYXR0cmlidXRpb25DYWxsYmFjazogKGF0dHJpYnV0aW9uOiBBZGp1c3RBdHRyaWJ1dGlvbikgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgZXZlbnRUcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrOiAoZXZlbnQ6IEFkanVzdEV2ZW50U3VjY2VzcykgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgZXZlbnRUcmFja2luZ0ZhaWxlZENhbGxiYWNrOiAoZXZlbnQ6IEFkanVzdEV2ZW50RmFpbHVyZSkgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s6IChzZXNzaW9uOiBBZGp1c3RTZXNzaW9uU3VjY2VzcykgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2s6IChzZXNzaW9uOiBBZGp1c3RTZXNzaW9uRmFpbHVyZSkgPT4gdm9pZCA9IG51bGw7XG4gIHByaXZhdGUgZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrOiAodXJpOiBzdHJpbmcpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGNvbnZlcnNpb25WYWx1ZVVwZGF0ZWRDYWxsYmFjazogKGNvbnZlcnNpb25WYWx1ZTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihhcHBUb2tlbjogc3RyaW5nLCBlbnZpcm9ubWVudDogQWRqdXN0RW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmFwcFRva2VuID0gYXBwVG9rZW47XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgc2V0QXBwU2VjcmV0KHNlY3JldElkOiBudW1iZXIsIGluZm8xOiBudW1iZXIsIGluZm8yOiBudW1iZXIsIGluZm8zOiBudW1iZXIsIGluZm80OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlY3JldElkID0gc2VjcmV0SWQ7XG4gICAgdGhpcy5pbmZvMSA9IGluZm8xO1xuICAgIHRoaXMuaW5mbzIgPSBpbmZvMjtcbiAgICB0aGlzLmluZm8zID0gaW5mbzM7XG4gICAgdGhpcy5pbmZvNCA9IGluZm80O1xuICB9XG5cbiAgc2V0RGVsYXlTdGFydChkZWxheVN0YXJ0OiBudW1iZXIpIHtcbiAgICB0aGlzLmRlbGF5U3RhcnQgPSBkZWxheVN0YXJ0O1xuICB9XG5cbiAgc2V0TG9nTGV2ZWwobG9nTGV2ZWw6IEFkanVzdExvZ0xldmVsKSB7XG4gICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsO1xuICB9XG5cbiAgc2V0RGVmYXVsdFRyYWNrZXIoZGVmYXVsdFRyYWNrZXI6IHN0cmluZykge1xuICAgIHRoaXMuZGVmYXVsdFRyYWNrZXIgPSBkZWZhdWx0VHJhY2tlcjtcbiAgfVxuXG4gIHNldEV4dGVybmFsRGV2aWNlSWQoZXh0ZXJuYWxEZXZpY2VJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5leHRlcm5hbERldmljZUlkID0gZXh0ZXJuYWxEZXZpY2VJZDtcbiAgfVxuXG4gIHNldFVybFN0cmF0ZWd5KHVybFN0cmF0ZWd5OiBBZGp1c3RVcmxTdHJhdGVneSkge1xuICAgIHRoaXMudXJsU3RyYXRlZ3kgPSB1cmxTdHJhdGVneTtcbiAgfVxuXG4gIHNldFNlbmRJbkJhY2tncm91bmQoc2VuZEluQmFja2dyb3VuZDogYm9vbGVhbikge1xuICAgIHRoaXMuc2VuZEluQmFja2dyb3VuZCA9IHNlbmRJbkJhY2tncm91bmQ7XG4gIH1cblxuICBzZXRTaG91bGRMYXVuY2hEZWVwbGluayhzaG91bGRMYXVuY2hEZWVwbGluazogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvdWxkTGF1bmNoRGVlcGxpbmsgPSBzaG91bGRMYXVuY2hEZWVwbGluaztcbiAgfVxuXG4gIHNldEV2ZW50QnVmZmVyaW5nRW5hYmxlZChldmVudEJ1ZmZlcmluZ0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV2ZW50QnVmZmVyaW5nRW5hYmxlZCA9IGV2ZW50QnVmZmVyaW5nRW5hYmxlZDtcbiAgfVxuXG4gIHNldFVzZXJBZ2VudCh1c2VyQWdlbnQ6IHN0cmluZykge1xuICAgIHRoaXMudXNlckFnZW50ID0gdXNlckFnZW50O1xuICB9XG5cbiAgc2V0RGV2aWNlS25vd24oaXNEZXZpY2VLbm93bjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNEZXZpY2VLbm93biA9IGlzRGV2aWNlS25vd247XG4gIH1cblxuICBzZXROZWVkc0Nvc3QobmVlZHNDb3N0OiBib29sZWFuKSB7XG4gICAgdGhpcy5uZWVkc0Nvc3QgPSBuZWVkc0Nvc3Q7XG4gIH1cblxuICBzZXRQcm9jZXNzTmFtZShwcm9jZXNzTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcm9jZXNzTmFtZSA9IHByb2Nlc3NOYW1lO1xuICB9XG5cbiAgc2V0UHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZChwcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkID0gcHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZDtcbiAgfVxuXG4gIHNldFByZWluc3RhbGxGaWxlUGF0aChwcmVpbnN0YWxsRmlsZVBhdGg6IHN0cmluZykge1xuICAgIHRoaXMucHJlaW5zdGFsbEZpbGVQYXRoID0gcHJlaW5zdGFsbEZpbGVQYXRoO1xuICB9XG5cbiAgc2V0QWxsb3dpQWRJbmZvUmVhZGluZyhhbGxvd2lBZEluZm9SZWFkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxvd2lBZEluZm9SZWFkaW5nID0gYWxsb3dpQWRJbmZvUmVhZGluZztcbiAgfVxuXG4gIHNldEFsbG93SWRmYVJlYWRpbmcoYWxsb3dJZGZhUmVhZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dJZGZhUmVhZGluZyA9IGFsbG93SWRmYVJlYWRpbmc7XG4gIH1cblxuICBzZXRBbGxvd0FkU2VydmljZXNJbmZvUmVhZGluZyhhbGxvd0FkU2VydmljZXNJbmZvUmVhZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmcgPSBhbGxvd0FkU2VydmljZXNJbmZvUmVhZGluZztcbiAgfVxuXG4gIHNldEF0dHJpYnV0aW9uQ2FsbGJhY2tMaXN0ZW5lcihhdHRyaWJ1dGlvbkNhbGxiYWNrOiAoYXR0cmlidXRpb246IEFkanVzdEF0dHJpYnV0aW9uKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGlvbkNhbGxiYWNrID0gYXR0cmlidXRpb25DYWxsYmFjaztcbiAgfVxuXG4gIHNldEV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFja0xpc3RlbmVyKGV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudFN1Y2Nlc3MpID0+IHZvaWQpIHtcbiAgICB0aGlzLmV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayA9IGV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaztcbiAgfVxuXG4gIHNldEV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFja0xpc3RlbmVyKGV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudEZhaWx1cmUpID0+IHZvaWQpIHtcbiAgICB0aGlzLmV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjayA9IGV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjaztcbiAgfVxuXG4gIHNldFNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrTGlzdGVuZXIoXG4gICAgc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s6IChzZXNzaW9uOiBBZGp1c3RTZXNzaW9uU3VjY2VzcykgPT4gdm9pZFxuICApIHtcbiAgICB0aGlzLnNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrID0gc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRTZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFja0xpc3RlbmVyKHNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvbkZhaWx1cmUpID0+IHZvaWQpIHtcbiAgICB0aGlzLnNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrID0gc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXREZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2tMaXN0ZW5lcihkZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2s6ICh1cmk6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMuZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrID0gZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrO1xuICB9XG5cbiAgc2V0Q29udmVyc2lvblZhbHVlVXBkYXRlZENhbGxiYWNrTGlzdGVuZXIoY29udmVyc2lvblZhbHVlVXBkYXRlZENhbGxiYWNrOiAoY29udmVyc2lvblZhbHVlOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmNvbnZlcnNpb25WYWx1ZVVwZGF0ZWRDYWxsYmFjayA9IGNvbnZlcnNpb25WYWx1ZVVwZGF0ZWRDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXR0cmlidXRpb25DYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGlvbkNhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmFja2luZ0ZhaWxlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmVycmVkRGVlcGxpbmtDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnZlcnNpb25WYWx1ZVVwZGF0ZWRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJzaW9uVmFsdWVVcGRhdGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGhhc0F0dHJpYnV0aW9uTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRpb25DYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRXZlbnRUcmFja2luZ1N1Y2NlZWRlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRXZlbnRUcmFja2luZ0ZhaWxlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc1Nlc3Npb25UcmFja2luZ0ZhaWxlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2tMaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9uIHtcbiAgcHJpdmF0ZSBwcmljZTogc3RyaW5nO1xuICBwcml2YXRlIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlY2VpcHQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbkRhdGU6IHN0cmluZztcbiAgcHJpdmF0ZSBzYWxlc1JlZ2lvbjogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwYXJ0bmVyUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihwcmljZTogc3RyaW5nLCBjdXJyZW5jeTogc3RyaW5nLCB0cmFuc2FjdGlvbklkOiBzdHJpbmcsIHJlY2VpcHQ6IHN0cmluZykge1xuICAgIHRoaXMucHJpY2UgPSBwcmljZTtcbiAgICB0aGlzLmN1cnJlbmN5ID0gY3VycmVuY3k7XG4gICAgdGhpcy50cmFuc2FjdGlvbklkID0gdHJhbnNhY3Rpb25JZDtcbiAgICB0aGlzLnJlY2VpcHQgPSByZWNlaXB0O1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25EYXRlKHRyYW5zYWN0aW9uRGF0ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbkRhdGUgPSB0cmFuc2FjdGlvbkRhdGU7XG4gIH1cblxuICBzZXRTYWxlc1JlZ2lvbihzYWxlc1JlZ2lvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zYWxlc1JlZ2lvbiA9IHNhbGVzUmVnaW9uO1xuICB9XG5cbiAgYWRkQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBhZGRQYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRqdXN0UGxheVN0b3JlU3Vic2NyaXB0aW9uIHtcbiAgcHJpdmF0ZSBwcmljZTogc3RyaW5nO1xuICBwcml2YXRlIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgc2t1OiBzdHJpbmc7XG4gIHByaXZhdGUgb3JkZXJJZDogc3RyaW5nO1xuICBwcml2YXRlIHNpZ25hdHVyZTogc3RyaW5nO1xuICBwcml2YXRlIHB1cmNoYXNlVG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBwdXJjaGFzZVRpbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBjYWxsYmFja1BhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcGFydG5lclBhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpY2U6IHN0cmluZywgY3VycmVuY3k6IHN0cmluZywgc2t1OiBzdHJpbmcsIG9yZGVySWQ6IHN0cmluZywgc2lnbmF0dXJlOiBzdHJpbmcsIHB1cmNoYXNlVG9rZW46IHN0cmluZykge1xuICAgIHRoaXMucHJpY2UgPSBwcmljZTtcbiAgICB0aGlzLmN1cnJlbmN5ID0gY3VycmVuY3k7XG4gICAgdGhpcy5za3UgPSBza3U7XG4gICAgdGhpcy5vcmRlcklkID0gb3JkZXJJZDtcbiAgICB0aGlzLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB0aGlzLnB1cmNoYXNlVG9rZW4gPSBwdXJjaGFzZVRva2VuO1xuICB9XG5cbiAgc2V0UHVyY2hhc2VUaW1lKHB1cmNoYXNlVGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wdXJjaGFzZVRpbWUgPSBwdXJjaGFzZVRpbWU7XG4gIH1cblxuICBhZGRDYWxsYmFja1BhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIGFkZFBhcnRuZXJQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RUaGlyZFBhcnR5U2hhcmluZyB7XG4gIHByaXZhdGUgaXNFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIGdyYW51bGFyT3B0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihpc0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IGlzRW5hYmxlZDtcbiAgfVxuXG4gIGFkZEdyYW51bGFyT3B0aW9uKHBhcnRuZXJOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ncmFudWxhck9wdGlvbnMucHVzaChwYXJ0bmVyTmFtZSk7XG4gICAgdGhpcy5ncmFudWxhck9wdGlvbnMucHVzaChrZXkpO1xuICAgIHRoaXMuZ3JhbnVsYXJPcHRpb25zLnB1c2godmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RBZFJldmVudWUge1xuICBwcml2YXRlIHNvdXJjZTogc3RyaW5nO1xuICBwcml2YXRlIHJldmVudWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBjdXJyZW5jeTogc3RyaW5nO1xuICBwcml2YXRlIGFkSW1wcmVzc2lvbnNDb3VudDogbnVtYmVyO1xuICBwcml2YXRlIGFkUmV2ZW51ZU5ldHdvcms6IHN0cmluZztcbiAgcHJpdmF0ZSBhZFJldmVudWVVbml0OiBzdHJpbmc7XG4gIHByaXZhdGUgYWRSZXZlbnVlUGxhY2VtZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGJhY2tQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHBhcnRuZXJQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNvdXJjZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICBzZXRSZXZlbnVlKHJldmVudWU6IG51bWJlciwgY3VycmVuY3k6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmV2ZW51ZSA9IHJldmVudWU7XG4gICAgdGhpcy5jdXJyZW5jeSA9IGN1cnJlbmN5O1xuICB9XG5cbiAgYWRkQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBhZGRQYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHNldEFkSW1wcmVzc2lvbnNDb3VudChhZEltcHJlc3Npb25zQ291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuYWRJbXByZXNzaW9uc0NvdW50ID0gYWRJbXByZXNzaW9uc0NvdW50O1xuICB9XG5cbiAgc2V0QWRSZXZlbnVlTmV0d29yayhhZFJldmVudWVOZXR3b3JrOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkUmV2ZW51ZU5ldHdvcmsgPSBhZFJldmVudWVOZXR3b3JrO1xuICB9XG5cbiAgc2V0QWRSZXZlbnVlVW5pdChhZFJldmVudWVVbml0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkUmV2ZW51ZVVuaXQgPSBhZFJldmVudWVVbml0O1xuICB9XG5cbiAgc2V0QWRSZXZlbnVlUGxhY2VtZW50KGFkUmV2ZW51ZVBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5hZFJldmVudWVQbGFjZW1lbnQgPSBhZFJldmVudWVQbGFjZW1lbnQ7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RBdHRyaWJ1dGlvbiB7XG4gIHRyYWNrZXJUb2tlbjogc3RyaW5nO1xuICB0cmFja2VyTmFtZTogc3RyaW5nO1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIGNhbXBhaWduOiBzdHJpbmc7XG4gIGFkZ3JvdXA6IHN0cmluZztcbiAgY3JlYXRpdmU6IHN0cmluZztcbiAgY2xpY2tMYWJlbDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGNvc3RUeXBlOiBzdHJpbmc7XG4gIGNvc3RBbW91bnQ6IHN0cmluZztcbiAgY29zdEN1cnJlbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRqdXN0U2Vzc2lvblN1Y2Nlc3Mge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdFNlc3Npb25GYWlsdXJlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgYWRpZDogc3RyaW5nO1xuICB3aWxsUmV0cnk6IGJvb2xlYW47XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdEV2ZW50U3VjY2VzcyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFkaWQ6IHN0cmluZztcbiAgZXZlbnRUb2tlbjogc3RyaW5nO1xuICBjYWxsYmFja0lkOiBzdHJpbmc7XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdEV2ZW50RmFpbHVyZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFkaWQ6IHN0cmluZztcbiAgZXZlbnRUb2tlbjogc3RyaW5nO1xuICB3aWxsUmV0cnk6IGJvb2xlYW47XG4gIGNhbGxiYWNrSWQ6IHN0cmluZztcbiAganNvblJlc3BvbnNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdEVudmlyb25tZW50IHtcbiAgU2FuZGJveCA9ICdzYW5kYm94JyxcbiAgUHJvZHVjdGlvbiA9ICdwcm9kdWN0aW9uJyxcbn1cblxuZXhwb3J0IGVudW0gQWRqdXN0TG9nTGV2ZWwge1xuICBWZXJib3NlID0gJ1ZFUkJPU0UnLFxuICBEZWJ1ZyA9ICdERUJVRycsXG4gIEluZm8gPSAnSU5GTycsXG4gIFdhcm4gPSAnV0FSTicsXG4gIEVycm9yID0gJ0VSUk9SJyxcbiAgQXNzZXJ0ID0gJ0FTU0VSVCcsXG4gIFN1cHByZXNzID0gJ1NVUFBSRVNTJyxcbn1cblxuZXhwb3J0IGVudW0gQWRqdXN0VXJsU3RyYXRlZ3kge1xuICBJbmRpYSA9ICdpbmRpYScsXG4gIENoaW5hID0gJ2NoaW5hJyxcbiAgRGF0YVJlc2lkZW5jeUVVID0gJ2RhdGEtcmVzaWRlbmN5LWV1JyxcbiAgRGF0YVJlc2lkZW5jeVRSID0gJ2RhdGEtcmVzaWRlbmN5LXRyJyxcbiAgRGF0YVJlc2lkZW5jeVVTID0gJ2RhdGEtcmVzaWRlbmN5LXVzJyxcbn1cblxuZXhwb3J0IGVudW0gQWRqdXN0QWRSZXZlbnVlU291cmNlIHtcbiAgQWRSZXZlbnVlU291cmNlQXBwTG92aW5NQVggPSAnYXBwbG92aW5fbWF4X3NkaycsXG4gIEFkUmV2ZW51ZVNvdXJjZU1vcHViID0gJ21vcHViJyxcbiAgQWRSZXZlbnVlU291cmNlQWRNb2IgPSAnYWRtb2Jfc2RrJyxcbiAgQWRSZXZlbnVlU291cmNlSXJvbnNvdXJjZSA9ICdpcm9uc291cmNlX3NkaycsXG59XG5cbi8qKlxuICogQG5hbWUgQWRqdXN0XG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgaXMgdGhlIElvbmljIENvcmRvdmEgU0RLIG9mIEFkanVzdOKEoi4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgQWRqdXN04oSiIGF0IGFkanVzdC5jb20uXG4gKlxuICogUmVxdWlyZXMgQ29yZG92YSBwbHVnaW46IGBjb20uYWRqdXN0LnNka2AuIEZvciBtb3JlIGluZm8sIHBsZWFzZSBzZWUgdGhlIFtBZGp1c3QgQ29yZG92YSBTREtdKGh0dHBzOi8vZ2l0aHViLmNvbS9hZGp1c3QvY29yZG92YV9zZGspXG4gKlxuICogQHVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaW1wb3J0IHsgQWRqdXN0LCBBZGp1c3RDb25maWcsIEFkanVzdEVudmlyb25tZW50IH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9hZGp1c3Qvbmd4JztcbiAqXG4gKiAgY29uc3RydWN0b3IocHJpdmF0ZSBhZGp1c3Q6IEFkanVzdCkgeyB9XG4gKlxuICogIC4uLlxuICpcbiAqICBjb25zdCBjb25maWcgPSBuZXcgQWRqdXN0Q29uZmlnKCdBUFAtVE9LRU4tSEVSRScsIEFkanVzdEVudmlyb25tZW50LlNhbmRib3gpO1xuICogIGNvbmZpZy5sb2dMZXZlbCA9IEFkanVzdExvZ0xldmVsLlZlcmJvc2U7XG4gKiAgLy8gU2V0IG90aGVyIGNvbmZpZyBwcm9wZXJ0aWVzLlxuICogIGFkanVzdC5jcmVhdGUoY29uZmlnKTtcbiAqXG4gKiBgYGBcbiAqIEBpbnRlcmZhY2VzXG4gKiBBZGp1c3RBdHRyaWJ1dGlvblxuICogQWRqdXN0U2Vzc2lvblN1Y2Nlc3NcbiAqIEFkanVzdFNlc3Npb25GYWlsdXJlXG4gKiBBZGp1c3RFdmVudFN1Y2Nlc3NcbiAqIEFkanVzdEV2ZW50RmFpbHVyZVxuICogQGNsYXNzZXNcbiAqIEFkanVzdEV2ZW50XG4gKiBBZGp1c3RDb25maWdcbiAqIEFkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9uXG4gKiBBZGp1c3RQbGF5U3RvcmVTdWJzY3JpcHRpb25cbiAqIEFkanVzdFRoaXJkUGFydHlTaGFyaW5nXG4gKiBBZGp1c3RBZFJlZW51ZVxuICogQGVudW1zXG4gKiBBZGp1c3RFbnZpcm9ubWVudFxuICogQWRqdXN0TG9nTGV2ZWxcbiAqIEFkanVzdFVybFN0cmF0ZWd5XG4gKiBBZGp1c3RBZFJldmVudWVTb3VyY2VcbiAqL1xuQFBsdWdpbih7XG4gIHBsdWdpbk5hbWU6ICdBZGp1c3QnLFxuICBwbHVnaW46ICdjb20uYWRqdXN0LnNkaycsXG4gIHBsdWdpblJlZjogJ0FkanVzdCcsXG4gIHJlcG86ICdodHRwczovL2dpdGh1Yi5jb20vYWRqdXN0L2NvcmRvdmFfc2RrJyxcbiAgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFkanVzdCBleHRlbmRzIElvbmljTmF0aXZlUGx1Z2luIHtcbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIEFkanVzdCBTREtcbiAgICogQHBhcmFtIHtBZGp1c3RDb25pZ30gY29uZmlnIEFkanVzdCBjb25maWcgb2JqZWN0IHVzZWQgYXMgc3RhcnRpbmcgb3B0aW9uc1xuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGNyZWF0ZShjb25maWc6IEFkanVzdENvbmZpZyk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIGFuIGV2ZW50XG4gICAqIEBwYXJhbSB7QWRqdXN0RXZlbnR9IGV2ZW50IEFkanVzdCBldmVudCBvYmplY3QgdG8gYmUgdHJhY2tlZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHRyYWNrRXZlbnQoZXZlbnQ6IEFkanVzdEV2ZW50KTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgQXBwIFN0b3JlIHN1YnNjcmlwdGlvblxuICAgKiBAcGFyYW0ge0FkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9ufSBzdWJzY3JpcHRpb24gQWRqdXN0IEFwcCBTdG9yZSBzdWJzY3JpcHRpb24gb2JqZWN0IHRvIGJlIHRyYWNrZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja0FwcFN0b3JlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogQWRqdXN0QXBwU3RvcmVTdWJzY3JpcHRpb24pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBQbGF5IFN0b3JlIHN1YnNjcmlwdGlvblxuICAgKiBAcGFyYW0ge0FkanVzdFBsYXlTdG9yZVN1YnNjcmlwdGlvbn0gc3Vic2NyaXB0aW9uIEFkanVzdCBQbGF5IFN0b3JlIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gYmUgdHJhY2tlZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHRyYWNrUGxheVN0b3JlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogQWRqdXN0UGxheVN0b3JlU3Vic2NyaXB0aW9uKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgdGhpcmQgcGFydHkgc2hhcmluZyBjaG9pY2VcbiAgICogQHBhcmFtIHtBZGp1c3RUaGlyZFBhcnR5U2hhcmluZ30gdGhpcmRQYXJ0eVNoYXJpbmcgQWRqdXN0IHRoaXJkIHBhcnR5IHNoYXJpbmcgb2JqZWN0IHRvIGJlIHRyYWNrZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja1RoaXJkUGFydHlTaGFyaW5nKHRoaXJkUGFydHlTaGFyaW5nOiBBZGp1c3RUaGlyZFBhcnR5U2hhcmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIGFkIHJldmVudWUgZGF0YVxuICAgKiBAcGFyYW0ge0FkanVzdEFkUmV2ZW51ZVNvdXJjZX0gc291cmNlIEFkIHJldmVudWUgc291cmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIEFkIHJldmVudWUgSlNPTiBzdHJpbmcgcGF5bG9hZFxuICAgKi9cbiAgdHJhY2tBZFJldmVudWUoc291cmNlOiBBZGp1c3RBZFJldmVudWVTb3VyY2UsIHBheWxvYWQ6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBhZCByZXZlbnVlIGRhdGFcbiAgICogQHBhcmFtIHtBZGp1c3RBZFJldmVudWV9IGFkUmV2ZW51ZSBBZGp1c3QgYWQgcmV2ZW51ZSBvYmplY3RcbiAgICovXG4gIHRyYWNrQWRSZXZlbnVlKGFkUmV2ZW51ZTogQWRqdXN0QWRSZXZlbnVlKTogdm9pZDtcblxuICAvLyBBbmQgdHlwZXNjcmlwdCBoaWRlcyB0aGlzLCBzbyB0aGUgY2xpZW50IHdpbGwgYmUgYWJsZSBjYWxsIG9ubHkgbWV0aG9kcyBhYm92ZVxuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tBZFJldmVudWUoc291cmNlT3JBZFJldmVudWU6IGFueSwgcGF5bG9hZD86IGFueSk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIG1lYXN1cmVtZW50IGNvbnNlbnQgY2hvaWNlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWVhc3VyZW1lbnRDb25zZW50IHNldCBtZWFzdXJlbWVudCBjb25zZW50IHRvIHRydWUgb3IgZmFsc2VcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja01lYXN1cmVtZW50Q29uc2VudChtZWFzdXJlbWVudENvbnNlbnQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgb2ZmbGluZSBtb2RlIG9uIG9yIG9mZlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgc2V0IHRvIHRydWUgZm9yIG9mZmxpbmUgbW9kZSBvblxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldE9mZmxpbmVNb2RlKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEJ5IG1ha2luZyB0aGlzIGNhbGwsIHRoZSBBZGp1c3QgU0RLIHdpbGwgdHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYW55IG5ldyBhdHRyaWJ1dGlvbiBpbmZvIGluc2lkZSBvZiB0aGUgZGVlcCBsaW5rIGFuZCBpZiBhbnksIGl0IHdpbGwgYmUgc2VudCB0byB0aGUgQWRqdXN0IGJhY2tlbmQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVVJMIG9mIHRoZSBkZWVwbGlua1xuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGFwcFdpbGxPcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIGRpc2FibGUvZW5hYmxlIHRoZSBBZGp1c3QgU0RLIGZyb20gdHJhY2tpbmcgYnkgaW52b2tpbmcgdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHNldCB0byBmYWxzZSB0byBkaXNhYmxlIFNES1xuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldEVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogVG8gc2VuZCB1cyB0aGUgcHVzaCBub3RpZmljYXRpb24gdG9rZW4sIGFkZCB0aGUgZm9sbG93aW5nIGNhbGwgdG8gQWRqdXN0IHdoZW5ldmVyIHlvdSBnZXQgeW91ciB0b2tlbiBpbiB0aGUgYXBwIG9yIHdoZW4gaXQgZ2V0cyB1cGRhdGVkLlxuICAgKiBQdXNoIHRva2VucyBhcmUgdXNlZCBmb3IgQXVkaWVuY2UgQnVpbGRlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYW5kIHRoZXkgYXJlIHJlcXVpcmVkIGZvciB0aGUgdXBjb21pbmcgdW5pbnN0YWxsIHRyYWNraW5nIGZlYXR1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdXNoVG9rZW4gcHVzaCB0b2tlbiB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldFB1c2hUb2tlbihwdXNoVG9rZW46IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIEFkanVzdCBTREsgaXMgY3VycmVudGx5IGVuYWJsZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0VuYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGFjY29yZGFuY2Ugd2l0aCBhcnRpY2xlIDE3IG9mIHRoZSBFVSdzIEdlbmVyYWwgRGF0YSBQcm90ZWN0aW9uIFJlZ3VsYXRpb24gKEdEUFIpLCB5b3UgY2FuIG5vdGlmeSBBZGp1c3Qgd2hlbiBhIHVzZXIgaGFzIGV4ZXJjaXNlZCB0aGVpciByaWdodCB0byBiZSBmb3Jnb3R0ZW4uXG4gICAqIENhbGxpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Qgd2lsbCBpbnN0cnVjdCB0aGUgQWRqdXN0IFNESyB0byBjb21tdW5pY2F0ZSB0aGUgdXNlcidzIGNob2ljZSB0byBiZSBmb3Jnb3R0ZW4gdG8gdGhlIEFkanVzdCBiYWNrZW5kXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZ2RwckZvcmdldE1lKCk6IHZvaWQge31cblxuICAvKipcbiAgICogWW91IGNhbiBub3cgbm90aWZ5IEFkanVzdCB3aGVuIGEgdXNlciBoYXMgZXhlcmNpc2VkIHRoZWlyIHJpZ2h0IHRvIHN0b3Agc2hhcmluZyB0aGVpciBkYXRhIHdpdGggcGFydG5lcnMgZm9yIG1hcmtldGluZyBwdXJwb3NlcywgYnV0IGhhcyBhbGxvd2VkIGl0IHRvIGJlIHNoYXJlZCBmb3Igc3RhdGlzdGljcyBwdXJwb3Nlcy5cbiAgICogQ2FsbGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZCB3aWxsIGluc3RydWN0IHRoZSBBZGp1c3QgU0RLIHRvIGNvbW11bmljYXRlIHRoZSB1c2VyJ3MgY2hvaWNlIHRvIGRpc2FibGUgZGF0YSBzaGFyaW5nIHRvIHRoZSBBZGp1c3QgYmFja2VuZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGRpc2FibGVUaGlyZFBhcnR5U2hhcmluZygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHVzZWQgdG8gZ2V0IEdvb2dsZSBBZElkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBnb29nbGUgQWRJZCB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRHb29nbGVBZElkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHlvdSBuZWVkIHRvIG9idGFpbiB0aGUgQW1hem9uIEFkdmVydGlzaW5nIElELCB5b3UgY2FuIG1ha2UgYSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBhbmF6aWIgYWR2LiBJRFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBbWF6b25BZElkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIG9idGFpbiB0aGUgSURGQSwgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBJREZBIHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRJZGZhKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBldmVyeSBkZXZpY2Ugd2l0aCB5b3VyIGFwcCBpbnN0YWxsZWQgb24gaXQsIHRoZSBBZGp1c3QgYmFja2VuZCBnZW5lcmF0ZXMgYSB1bmlxdWUgQWRqdXN0IGRldmljZSBpZGVudGlmaWVyIChhZGlkKS5cbiAgICogSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgaWRlbnRpZmllciwgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBhZGlkIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFkaWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSWYgeW91IHdhbnQgdG8gYWNjZXNzIGluZm9ybWF0aW9uIGFib3V0IGEgdXNlcidzIGN1cnJlbnQgYXR0cmlidXRpb24gd2hlbmV2ZXIgeW91IG5lZWQgaXQsIHlvdSBjYW4gbWFrZSBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFkanVzdEF0dHJpYnV0aW9uPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBBZGp1c3RBdHRyaWJ1dGlvbiBvYmplY3RcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QXR0cmlidXRpb24oKTogUHJvbWlzZTxBZGp1c3RBdHRyaWJ1dGlvbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHZlcnNpb24gb2YgdGhlIFNESyB1c2VkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBzZGsgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRTZGtWZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBzZXNzaW9uIGNhbGxiYWNrIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgYWRkU2Vzc2lvbkNhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzcGVjaWZpYyBzZXNzaW9uIGNhbGxiYWNrIHBhcmFtZXRlciBieSBwYXNzaW5nIHRoZSBkZXNpcmluZyBrZXkgdG8gdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZW1vdmVTZXNzaW9uQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIElmIGFsbCBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgc2Vzc2lvbiBjYWxsYmFjayBwYXJhbWV0ZXJzIGhhdmUgdG8gYmUgcmVtb3ZlZCwgY2FsbCB0aGlzIG1ldGhvZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHJlc2V0U2Vzc2lvbkNhbGxiYWNrUGFyYW1ldGVycygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBzZXNzaW9uIHBhcnRuZXIgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBhZGRTZXNzaW9uUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlIGEgc3BlY2lmaWMgc2Vzc2lvbiBwYXJ0bmVyIHBhcmFtZXRlciBieSBwYXNzaW5nIHRoZSBkZXNpcmluZyBrZXkgdG8gdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZW1vdmVTZXNzaW9uUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogSWYgYWxsIGtleXMgYW5kIHZhbHVlcyBmcm9tIHRoZSBzZXNzaW9uIHBhcnRuZXIgcGFyYW1ldGVycyBoYXZlIHRvIGJlIHJlbW92ZWQsIGNhbGwgdGhpcyBtZXRob2RcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZXNldFNlc3Npb25QYXJ0bmVyUGFyYW1ldGVycygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGNhbGwgd2lsbCBtYWtlIHRoZSBBZGp1c3QgU0RLIHNlbmQgdGhlIGluaXRpYWwgaW5zdGFsbCBzZXNzaW9uIGFuZCBhbnkgZXZlbnRzIGNyZWF0ZWQsIGlmIHRoZXkgd2VyZSBub3Qgc2VudCBhZnRlciBkZWxheSBzdGFydCB3YXMgc2V0IGFuZCBpdCdzIGRlbGF5IGV4cGlyZWQuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2VuZEZpcnN0UGFja2FnZXMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IEFkanVzdCBTREsgdG8gc2hvdyBwb3AgdXAgZGlhbG9nIGZvciBhc2tpbmcgdXNlcidzIGNvbnNlbnQgdG8gYmUgdHJhY2tlZC5cbiAgICogSW4gb3JkZXIgdG8gZG8gdGhpcywgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8bnVtYmVyPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCB1c2VyJ3MgY29uc2VudCB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICByZXF1ZXN0VHJhY2tpbmdBdXRob3JpemF0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gdXBkYXRlIFNLQWROZXR3b3JrIGNvbnZlcnNpb24gdmFsdWUgd2l0aCBjYWxsaW5nIHRoaXMgbWV0aG9kXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb252ZXJzaW9uVmFsdWUgY29udmVyc2lvbiB2YWx1ZSBmb3IgdGhlIHVzZXJcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB1cGRhdGVDb252ZXJzaW9uVmFsdWUoY29udmVyc2lvblZhbHVlOiBudW1iZXIpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRvIG9idGFpbiB0aGUgYXBwIHRyYWNraW5nIGF1dGhvcml6YXRpb24gc3RhdHVzIGluIGlPUywgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8bnVtYmVyPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBhcHAgdHJhY2tpbmcgYXV0aG9yaXphdGlvbiBzdGF0dXNcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QXBwVHJhY2tpbmdBdXRob3JpemF0aW9uU3RhdHVzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=

@@ -55,2 +55,3 @@ 'use strict';

this.preinstallTrackingEnabled = null; // Android only
this.preinstallFilePath = null; // Android only
this.allowiAdInfoReading = null; // iOS only

@@ -65,2 +66,3 @@ this.allowIdfaReading = null; // iOS only

this.deferredDeeplinkCallback = null;
this.conversionValueUpdatedCallback = null;
this.appToken = appToken;

@@ -115,2 +117,5 @@ this.environment = environment;

};
AdjustConfig.prototype.setPreinstallFilePath = function (preinstallFilePath) {
this.preinstallFilePath = preinstallFilePath;
};
AdjustConfig.prototype.setAllowiAdInfoReading = function (allowiAdInfoReading) {

@@ -143,2 +148,5 @@ this.allowiAdInfoReading = allowiAdInfoReading;

};
AdjustConfig.prototype.setConversionValueUpdatedCallbackListener = function (conversionValueUpdatedCallback) {
this.conversionValueUpdatedCallback = conversionValueUpdatedCallback;
};
AdjustConfig.prototype.getAttributionCallback = function () {

@@ -162,2 +170,5 @@ return this.attributionCallback;

};
AdjustConfig.prototype.getConversionValueUpdatedCallback = function () {
return this.conversionValueUpdatedCallback;
};
AdjustConfig.prototype.hasAttributionListener = function () {

@@ -244,2 +255,34 @@ return this.attributionCallback !== null;

}());
var AdjustAdRevenue = /** @class */ (function () {
function AdjustAdRevenue(source) {
this.callbackParameters = [];
this.partnerParameters = [];
this.source = source;
}
AdjustAdRevenue.prototype.setRevenue = function (revenue, currency) {
this.revenue = revenue;
this.currency = currency;
};
AdjustAdRevenue.prototype.addCallbackParameter = function (key, value) {
this.callbackParameters.push(key);
this.callbackParameters.push(value);
};
AdjustAdRevenue.prototype.addPartnerParameter = function (key, value) {
this.partnerParameters.push(key);
this.partnerParameters.push(value);
};
AdjustAdRevenue.prototype.setAdImpressionsCount = function (adImpressionsCount) {
this.adImpressionsCount = adImpressionsCount;
};
AdjustAdRevenue.prototype.setAdRevenueNetwork = function (adRevenueNetwork) {
this.adRevenueNetwork = adRevenueNetwork;
};
AdjustAdRevenue.prototype.setAdRevenueUnit = function (adRevenueUnit) {
this.adRevenueUnit = adRevenueUnit;
};
AdjustAdRevenue.prototype.setAdRevenuePlacement = function (adRevenuePlacement) {
this.adRevenuePlacement = adRevenuePlacement;
};
return AdjustAdRevenue;
}());
exports.AdjustEnvironment = void 0;

@@ -262,26 +305,14 @@ (function (AdjustEnvironment) {

(function (AdjustUrlStrategy) {
AdjustUrlStrategy["India"] = "India";
AdjustUrlStrategy["China"] = "China";
AdjustUrlStrategy["India"] = "india";
AdjustUrlStrategy["China"] = "china";
AdjustUrlStrategy["DataResidencyEU"] = "data-residency-eu";
AdjustUrlStrategy["DataResidencyTR"] = "data-residency-tr";
AdjustUrlStrategy["DataResidencyUS"] = "data-residency-us";
})(exports.AdjustUrlStrategy || (exports.AdjustUrlStrategy = {}));
exports.AdjustAdRevenueSource = void 0;
(function (AdjustAdRevenueSource) {
AdjustAdRevenueSource["AdRevenueSourceAppLovinMAX"] = "applovin_max_sdk";
AdjustAdRevenueSource["AdRevenueSourceMopub"] = "mopub";
AdjustAdRevenueSource["AdRevenueSourceAdmob"] = "admob";
AdjustAdRevenueSource["AdRevenueSourceFbNativeAd"] = "facebook_native_ad";
AdjustAdRevenueSource["AdRevenueSourceFbAudienceNetwork"] = "facebook_audience_network";
AdjustAdRevenueSource["AdRevenueSourceIronsource"] = "ironsource";
AdjustAdRevenueSource["AdRevenueSourceFyber"] = "fyber";
AdjustAdRevenueSource["AdRevenueSourceAerserv"] = "aerserv";
AdjustAdRevenueSource["AdRevenueSourceAppodeal"] = "appodeal";
AdjustAdRevenueSource["AdRevenueSourceAdincube"] = "adincube";
AdjustAdRevenueSource["AdRevenueSourceFusePowered"] = "fusepowered";
AdjustAdRevenueSource["AdRevenueSourceAddapptr"] = "addapptr";
AdjustAdRevenueSource["AdRevenueSourceMillennialMediation"] = "millennial_mediation";
AdjustAdRevenueSource["AdRevenueSourceFlurry"] = "flurry";
AdjustAdRevenueSource["AdRevenueSourceAdmost"] = "admost";
AdjustAdRevenueSource["AdRevenueSourceDeltadna"] = "deltadna";
AdjustAdRevenueSource["AdRevenueSourceUpsight"] = "upsight";
AdjustAdRevenueSource["AdRevenueSourceUnityAds"] = "unityads";
AdjustAdRevenueSource["AdRevenueSourceAdtoapp"] = "adtoapp";
AdjustAdRevenueSource["AdRevenueSourceTapdaq"] = "tapdaq";
AdjustAdRevenueSource["AdRevenueSourceAdMob"] = "admob_sdk";
AdjustAdRevenueSource["AdRevenueSourceIronsource"] = "ironsource_sdk";
})(exports.AdjustAdRevenueSource || (exports.AdjustAdRevenueSource = {}));

@@ -298,3 +329,3 @@ var Adjust = /** @class */ (function (_super) {

Adjust.prototype.trackThirdPartySharing = function (thirdPartySharing) { return core.cordova(this, "trackThirdPartySharing", { "sync": true }, arguments); };
Adjust.prototype.trackAdRevenue = function (source, payload) { return core.cordova(this, "trackAdRevenue", { "sync": true }, arguments); };
Adjust.prototype.trackAdRevenue = function (sourceOrAdRevenue, payload) { return core.cordova(this, "trackAdRevenue", { "sync": true }, arguments); };
Adjust.prototype.trackMeasurementConsent = function (measurementConsent) { return core.cordova(this, "trackMeasurementConsent", { "sync": true }, arguments); };

@@ -336,2 +367,3 @@ Adjust.prototype.setOfflineMode = function (enabled) { return core.cordova(this, "setOfflineMode", { "sync": true }, arguments); };

exports.Adjust = Adjust;
exports.AdjustAdRevenue = AdjustAdRevenue;
exports.AdjustAppStoreSubscription = AdjustAppStoreSubscription;

@@ -338,0 +370,0 @@ exports.AdjustConfig = AdjustConfig;

@@ -39,2 +39,3 @@ import { IonicNativePlugin } from '@ionic-native/core';

private preinstallTrackingEnabled;
private preinstallFilePath;
private allowiAdInfoReading;

@@ -49,2 +50,3 @@ private allowIdfaReading;

private deferredDeeplinkCallback;
private conversionValueUpdatedCallback;
constructor(appToken: string, environment: AdjustEnvironment);

@@ -65,2 +67,3 @@ setAppSecret(secretId: number, info1: number, info2: number, info3: number, info4: number): void;

setPreinstallTrackingEnabled(preinstallTrackingEnabled: boolean): void;
setPreinstallFilePath(preinstallFilePath: string): void;
setAllowiAdInfoReading(allowiAdInfoReading: boolean): void;

@@ -75,2 +78,3 @@ setAllowIdfaReading(allowIdfaReading: boolean): void;

setDeferredDeeplinkCallbackListener(deferredDeeplinkCallback: (uri: string) => void): void;
setConversionValueUpdatedCallbackListener(conversionValueUpdatedCallback: (conversionValue: number) => void): void;
private getAttributionCallback;

@@ -82,2 +86,3 @@ private getEventTrackingSucceededCallback;

private getDeferredDeeplinkCallback;
private getConversionValueUpdatedCallback;
private hasAttributionListener;

@@ -126,2 +131,21 @@ private hasEventTrackingSucceededListener;

}
export declare class AdjustAdRevenue {
private source;
private revenue;
private currency;
private adImpressionsCount;
private adRevenueNetwork;
private adRevenueUnit;
private adRevenuePlacement;
private callbackParameters;
private partnerParameters;
constructor(source: string);
setRevenue(revenue: number, currency: string): void;
addCallbackParameter(key: string, value: string): void;
addPartnerParameter(key: string, value: string): void;
setAdImpressionsCount(adImpressionsCount: number): void;
setAdRevenueNetwork(adRevenueNetwork: string): void;
setAdRevenueUnit(adRevenueUnit: string): void;
setAdRevenuePlacement(adRevenuePlacement: string): void;
}
export interface AdjustAttribution {

@@ -184,25 +208,13 @@ trackerToken: string;

export declare enum AdjustUrlStrategy {
India = "India",
China = "China"
India = "india",
China = "china",
DataResidencyEU = "data-residency-eu",
DataResidencyTR = "data-residency-tr",
DataResidencyUS = "data-residency-us"
}
export declare enum AdjustAdRevenueSource {
AdRevenueSourceAppLovinMAX = "applovin_max_sdk",
AdRevenueSourceMopub = "mopub",
AdRevenueSourceAdmob = "admob",
AdRevenueSourceFbNativeAd = "facebook_native_ad",
AdRevenueSourceFbAudienceNetwork = "facebook_audience_network",
AdRevenueSourceIronsource = "ironsource",
AdRevenueSourceFyber = "fyber",
AdRevenueSourceAerserv = "aerserv",
AdRevenueSourceAppodeal = "appodeal",
AdRevenueSourceAdincube = "adincube",
AdRevenueSourceFusePowered = "fusepowered",
AdRevenueSourceAddapptr = "addapptr",
AdRevenueSourceMillennialMediation = "millennial_mediation",
AdRevenueSourceFlurry = "flurry",
AdRevenueSourceAdmost = "admost",
AdRevenueSourceDeltadna = "deltadna",
AdRevenueSourceUpsight = "upsight",
AdRevenueSourceUnityAds = "unityads",
AdRevenueSourceAdtoapp = "adtoapp",
AdRevenueSourceTapdaq = "tapdaq"
AdRevenueSourceAdMob = "admob_sdk",
AdRevenueSourceIronsource = "ironsource_sdk"
}

@@ -218,3 +230,3 @@ /**

* ```typescript
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust';
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust/ngx';
*

@@ -243,2 +255,3 @@ * constructor(private adjust: Adjust) { }

* AdjustThirdPartySharing
* AdjustAdReenue
* @enums

@@ -283,2 +296,7 @@ * AdjustEnvironment

/**
* This method tracks ad revenue data
* @param {AdjustAdRevenue} adRevenue Adjust ad revenue object
*/
trackAdRevenue(adRevenue: AdjustAdRevenue): void;
/**
* This method tracks measurement consent choice

@@ -285,0 +303,0 @@ * @param {boolean} measurementConsent set measurement consent to true or false

@@ -51,2 +51,3 @@ import { __extends } from "tslib";

this.preinstallTrackingEnabled = null; // Android only
this.preinstallFilePath = null; // Android only
this.allowiAdInfoReading = null; // iOS only

@@ -61,2 +62,3 @@ this.allowIdfaReading = null; // iOS only

this.deferredDeeplinkCallback = null;
this.conversionValueUpdatedCallback = null;
this.appToken = appToken;

@@ -111,2 +113,5 @@ this.environment = environment;

};
AdjustConfig.prototype.setPreinstallFilePath = function (preinstallFilePath) {
this.preinstallFilePath = preinstallFilePath;
};
AdjustConfig.prototype.setAllowiAdInfoReading = function (allowiAdInfoReading) {

@@ -139,2 +144,5 @@ this.allowiAdInfoReading = allowiAdInfoReading;

};
AdjustConfig.prototype.setConversionValueUpdatedCallbackListener = function (conversionValueUpdatedCallback) {
this.conversionValueUpdatedCallback = conversionValueUpdatedCallback;
};
AdjustConfig.prototype.getAttributionCallback = function () {

@@ -158,2 +166,5 @@ return this.attributionCallback;

};
AdjustConfig.prototype.getConversionValueUpdatedCallback = function () {
return this.conversionValueUpdatedCallback;
};
AdjustConfig.prototype.hasAttributionListener = function () {

@@ -244,2 +255,35 @@ return this.attributionCallback !== null;

export { AdjustThirdPartySharing };
var AdjustAdRevenue = /** @class */ (function () {
function AdjustAdRevenue(source) {
this.callbackParameters = [];
this.partnerParameters = [];
this.source = source;
}
AdjustAdRevenue.prototype.setRevenue = function (revenue, currency) {
this.revenue = revenue;
this.currency = currency;
};
AdjustAdRevenue.prototype.addCallbackParameter = function (key, value) {
this.callbackParameters.push(key);
this.callbackParameters.push(value);
};
AdjustAdRevenue.prototype.addPartnerParameter = function (key, value) {
this.partnerParameters.push(key);
this.partnerParameters.push(value);
};
AdjustAdRevenue.prototype.setAdImpressionsCount = function (adImpressionsCount) {
this.adImpressionsCount = adImpressionsCount;
};
AdjustAdRevenue.prototype.setAdRevenueNetwork = function (adRevenueNetwork) {
this.adRevenueNetwork = adRevenueNetwork;
};
AdjustAdRevenue.prototype.setAdRevenueUnit = function (adRevenueUnit) {
this.adRevenueUnit = adRevenueUnit;
};
AdjustAdRevenue.prototype.setAdRevenuePlacement = function (adRevenuePlacement) {
this.adRevenuePlacement = adRevenuePlacement;
};
return AdjustAdRevenue;
}());
export { AdjustAdRevenue };
export var AdjustEnvironment;

@@ -262,26 +306,14 @@ (function (AdjustEnvironment) {

(function (AdjustUrlStrategy) {
AdjustUrlStrategy["India"] = "India";
AdjustUrlStrategy["China"] = "China";
AdjustUrlStrategy["India"] = "india";
AdjustUrlStrategy["China"] = "china";
AdjustUrlStrategy["DataResidencyEU"] = "data-residency-eu";
AdjustUrlStrategy["DataResidencyTR"] = "data-residency-tr";
AdjustUrlStrategy["DataResidencyUS"] = "data-residency-us";
})(AdjustUrlStrategy || (AdjustUrlStrategy = {}));
export var AdjustAdRevenueSource;
(function (AdjustAdRevenueSource) {
AdjustAdRevenueSource["AdRevenueSourceAppLovinMAX"] = "applovin_max_sdk";
AdjustAdRevenueSource["AdRevenueSourceMopub"] = "mopub";
AdjustAdRevenueSource["AdRevenueSourceAdmob"] = "admob";
AdjustAdRevenueSource["AdRevenueSourceFbNativeAd"] = "facebook_native_ad";
AdjustAdRevenueSource["AdRevenueSourceFbAudienceNetwork"] = "facebook_audience_network";
AdjustAdRevenueSource["AdRevenueSourceIronsource"] = "ironsource";
AdjustAdRevenueSource["AdRevenueSourceFyber"] = "fyber";
AdjustAdRevenueSource["AdRevenueSourceAerserv"] = "aerserv";
AdjustAdRevenueSource["AdRevenueSourceAppodeal"] = "appodeal";
AdjustAdRevenueSource["AdRevenueSourceAdincube"] = "adincube";
AdjustAdRevenueSource["AdRevenueSourceFusePowered"] = "fusepowered";
AdjustAdRevenueSource["AdRevenueSourceAddapptr"] = "addapptr";
AdjustAdRevenueSource["AdRevenueSourceMillennialMediation"] = "millennial_mediation";
AdjustAdRevenueSource["AdRevenueSourceFlurry"] = "flurry";
AdjustAdRevenueSource["AdRevenueSourceAdmost"] = "admost";
AdjustAdRevenueSource["AdRevenueSourceDeltadna"] = "deltadna";
AdjustAdRevenueSource["AdRevenueSourceUpsight"] = "upsight";
AdjustAdRevenueSource["AdRevenueSourceUnityAds"] = "unityads";
AdjustAdRevenueSource["AdRevenueSourceAdtoapp"] = "adtoapp";
AdjustAdRevenueSource["AdRevenueSourceTapdaq"] = "tapdaq";
AdjustAdRevenueSource["AdRevenueSourceAdMob"] = "admob_sdk";
AdjustAdRevenueSource["AdRevenueSourceIronsource"] = "ironsource_sdk";
})(AdjustAdRevenueSource || (AdjustAdRevenueSource = {}));

@@ -298,3 +330,3 @@ var Adjust = /** @class */ (function (_super) {

Adjust.prototype.trackThirdPartySharing = function (thirdPartySharing) { return cordova(this, "trackThirdPartySharing", { "sync": true }, arguments); };
Adjust.prototype.trackAdRevenue = function (source, payload) { return cordova(this, "trackAdRevenue", { "sync": true }, arguments); };
Adjust.prototype.trackAdRevenue = function (sourceOrAdRevenue, payload) { return cordova(this, "trackAdRevenue", { "sync": true }, arguments); };
Adjust.prototype.trackMeasurementConsent = function (measurementConsent) { return cordova(this, "trackMeasurementConsent", { "sync": true }, arguments); };

@@ -335,2 +367,2 @@ Adjust.prototype.setOfflineMode = function (enabled) { return cordova(this, "setOfflineMode", { "sync": true }, arguments); };

export { Adjust };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGlvbmljLW5hdGl2ZS9wbHVnaW5zL2FkanVzdC9uZ3gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyw4QkFBc0MsTUFBTSxvQkFBb0IsQ0FBQzs7SUFXdEUscUJBQVksVUFBa0I7UUFIdEIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0NBQVUsR0FBVixVQUFXLE9BQWUsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsMENBQW9CLEdBQXBCLFVBQXFCLEdBQVcsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUNBQW1CLEdBQW5CLFVBQW9CLEdBQVcsRUFBRSxLQUFhO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLGFBQXFCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQ0FBYSxHQUFiLFVBQWMsVUFBa0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUs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a0MsQ0FBQTtJQUNsQyw2REFBb0MsQ0FBQTtJQUNwQywyREFBa0MsQ0FBQTtJQUNsQyx5REFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBcEJXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFvQmhDOztJQWlEMkIsMEJBQWlCOzs7O0lBTTNDLHVCQUFNLGFBQUMsTUFBb0I7SUFPM0IsMkJBQVUsYUFBQyxLQUFrQjtJQU83QiwwQ0FBeUIsYUFBQyxZQUF3QztJQU9sRSwyQ0FBMEIsYUFBQyxZQUF5QztJQU9wRSx1Q0FBc0IsYUFBQyxpQkFBMEM7SUFRakUsK0JBQWMsYUFBQyxNQUE2QixFQUFFLE9BQWU7SUFPN0Qsd0NBQXVCLGFBQUMsa0JBQTJCO0lBT25ELCtCQUFjLGFBQUMsT0FBZ0I7SUFPL0IsK0JBQWMsYUFBQyxHQUFXO0lBTzFCLDJCQUFVLGFBQUMsT0FBZ0I7SUFRM0IsNkJBQVksYUFBQyxTQUFpQjtJQU85QiwwQkFBUztJQVNULDZCQUFZO0lBT1oseUNBQXdCO0lBT3hCLDhCQUFhO0lBU2IsOEJBQWE7SUFTYix3QkFBTztJQVVQLHdCQUFPO0lBU1AsK0JBQWM7SUFTZCw4QkFBYTtJQVViLDRDQUEyQixhQUFDLEdBQVcsRUFBRSxLQUFhO0lBT3RELCtDQUE4QixhQUFDLEdBQVc7SUFNMUMsK0NBQThCO0lBUTlCLDJDQUEwQixhQUFDLEdBQVcsRUFBRSxLQUFhO0lBT3JELDhDQUE2QixhQUFDLEdBQVc7SUFNekMsOENBQTZCO0lBTTdCLGtDQUFpQjtJQVFqQixrRUFBaUQ7SUFTakQsc0NBQXFCLGFBQUMsZUFBdUI7SUFPN0Msa0RBQWlDOzs7Ozs7O2dCQXJPbEMsVUFBVTs7aUJBL2JYO0VBZ2M0QixpQkFBaUI7U0FBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmRvdmEsIElvbmljTmF0aXZlUGx1Z2luLCBQbHVnaW4gfSBmcm9tICdAaW9uaWMtbmF0aXZlL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQWRqdXN0RXZlbnQge1xuICBwcml2YXRlIGV2ZW50VG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSByZXZlbnVlOiBudW1iZXI7XG4gIHByaXZhdGUgY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGJhY2tJZDogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwYXJ0bmVyUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihldmVudFRva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50VG9rZW4gPSBldmVudFRva2VuO1xuICB9XG5cbiAgc2V0UmV2ZW51ZShyZXZlbnVlOiBudW1iZXIsIGN1cnJlbmN5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJldmVudWUgPSByZXZlbnVlO1xuICAgIHRoaXMuY3VycmVuY3kgPSBjdXJyZW5jeTtcbiAgfVxuXG4gIGFkZENhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgYWRkUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMudHJhbnNhY3Rpb25JZCA9IHRyYW5zYWN0aW9uSWQ7XG4gIH1cblxuICBzZXRDYWxsYmFja0lkKGNhbGxiYWNrSWQ6IHN0cmluZykge1xuICAgIHRoaXMuY2FsbGJhY2tJZCA9IGNhbGxiYWNrSWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkanVzdENvbmZpZyB7XG4gIHByaXZhdGUgYXBwVG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudDogQWRqdXN0RW52aXJvbm1lbnQ7XG4gIHByaXZhdGUgc2RrUHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgZGVsYXlTdGFydCA9IDAuMDtcbiAgcHJpdmF0ZSBsb2dMZXZlbDogQWRqdXN0TG9nTGV2ZWwgPSBudWxsO1xuICBwcml2YXRlIGRlZmF1bHRUcmFja2VyOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIHVybFN0cmF0ZWd5OiBBZGp1c3RVcmxTdHJhdGVneSA9IG51bGw7XG4gIHByaXZhdGUgZXh0ZXJuYWxEZXZpY2VJZDogc3RyaW5nID0gbnVsbDtcbiAgcHJpdmF0ZSBzZW5kSW5CYWNrZ3JvdW5kOiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSBzaG91bGRMYXVuY2hEZWVwbGluazogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgZXZlbnRCdWZmZXJpbmdFbmFibGVkOiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSB1c2VyQWdlbnQ6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgaXNEZXZpY2VLbm93bjogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgbmVlZHNDb3N0OiBib29sZWFuID0gbnVsbDtcbiAgcHJpdmF0ZSBzZWNyZXRJZDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvMTogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvMjogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvMzogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBpbmZvNDogbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSBwcm9jZXNzTmFtZTogc3RyaW5nID0gbnVsbDsgLy8gQW5kcm9pZCBvbmx5XG4gIHByaXZhdGUgcHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZDogYm9vbGVhbiA9IG51bGw7IC8vIEFuZHJvaWQgb25seVxuICBwcml2YXRlIGFsbG93aUFkSW5mb1JlYWRpbmc6IGJvb2xlYW4gPSBudWxsOyAvLyBpT1Mgb25seVxuICBwcml2YXRlIGFsbG93SWRmYVJlYWRpbmc6IGJvb2xlYW4gPSBudWxsOyAvLyBpT1Mgb25seVxuICBwcml2YXRlIGFsbG93QWRTZXJ2aWNlc0luZm9SZWFkaW5nOiBib29sZWFuID0gbnVsbDsgLy8gaU9TIG9ubHlcblxuICBwcml2YXRlIGF0dHJpYnV0aW9uQ2FsbGJhY2s6IChhdHRyaWJ1dGlvbjogQWRqdXN0QXR0cmlidXRpb24pID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudFN1Y2Nlc3MpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudEZhaWx1cmUpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIHNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvblN1Y2Nlc3MpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIHNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvbkZhaWx1cmUpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGRlZmVycmVkRGVlcGxpbmtDYWxsYmFjazogKHVyaTogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihhcHBUb2tlbjogc3RyaW5nLCBlbnZpcm9ubWVudDogQWRqdXN0RW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLmFwcFRva2VuID0gYXBwVG9rZW47XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgc2V0QXBwU2VjcmV0KHNlY3JldElkOiBudW1iZXIsIGluZm8xOiBudW1iZXIsIGluZm8yOiBudW1iZXIsIGluZm8zOiBudW1iZXIsIGluZm80OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlY3JldElkID0gc2VjcmV0SWQ7XG4gICAgdGhpcy5pbmZvMSA9IGluZm8xO1xuICAgIHRoaXMuaW5mbzIgPSBpbmZvMjtcbiAgICB0aGlzLmluZm8zID0gaW5mbzM7XG4gICAgdGhpcy5pbmZvNCA9IGluZm80O1xuICB9XG5cbiAgc2V0RGVsYXlTdGFydChkZWxheVN0YXJ0OiBudW1iZXIpIHtcbiAgICB0aGlzLmRlbGF5U3RhcnQgPSBkZWxheVN0YXJ0O1xuICB9XG5cbiAgc2V0TG9nTGV2ZWwobG9nTGV2ZWw6IEFkanVzdExvZ0xldmVsKSB7XG4gICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsO1xuICB9XG5cbiAgc2V0RGVmYXVsdFRyYWNrZXIoZGVmYXVsdFRyYWNrZXI6IHN0cmluZykge1xuICAgIHRoaXMuZGVmYXVsdFRyYWNrZXIgPSBkZWZhdWx0VHJhY2tlcjtcbiAgfVxuXG4gIHNldEV4dGVybmFsRGV2aWNlSWQoZXh0ZXJuYWxEZXZpY2VJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5leHRlcm5hbERldmljZUlkID0gZXh0ZXJuYWxEZXZpY2VJZDtcbiAgfVxuXG4gIHNldFVybFN0cmF0ZWd5KHVybFN0cmF0ZWd5OiBBZGp1c3RVcmxTdHJhdGVneSkge1xuICAgIHRoaXMudXJsU3RyYXRlZ3kgPSB1cmxTdHJhdGVneTtcbiAgfVxuXG4gIHNldFNlbmRJbkJhY2tncm91bmQoc2VuZEluQmFja2dyb3VuZDogYm9vbGVhbikge1xuICAgIHRoaXMuc2VuZEluQmFja2dyb3VuZCA9IHNlbmRJbkJhY2tncm91bmQ7XG4gIH1cblxuICBzZXRTaG91bGRMYXVuY2hEZWVwbGluayhzaG91bGRMYXVuY2hEZWVwbGluazogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvdWxkTGF1bmNoRGVlcGxpbmsgPSBzaG91bGRMYXVuY2hEZWVwbGluaztcbiAgfVxuXG4gIHNldEV2ZW50QnVmZmVyaW5nRW5hYmxlZChldmVudEJ1ZmZlcmluZ0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmV2ZW50QnVmZmVyaW5nRW5hYmxlZCA9IGV2ZW50QnVmZmVyaW5nRW5hYmxlZDtcbiAgfVxuXG4gIHNldFVzZXJBZ2VudCh1c2VyQWdlbnQ6IHN0cmluZykge1xuICAgIHRoaXMudXNlckFnZW50ID0gdXNlckFnZW50O1xuICB9XG5cbiAgc2V0RGV2aWNlS25vd24oaXNEZXZpY2VLbm93bjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNEZXZpY2VLbm93biA9IGlzRGV2aWNlS25vd247XG4gIH1cblxuICBzZXROZWVkc0Nvc3QobmVlZHNDb3N0OiBib29sZWFuKSB7XG4gICAgdGhpcy5uZWVkc0Nvc3QgPSBuZWVkc0Nvc3Q7XG4gIH1cblxuICBzZXRQcm9jZXNzTmFtZShwcm9jZXNzTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcm9jZXNzTmFtZSA9IHByb2Nlc3NOYW1lO1xuICB9XG5cbiAgc2V0UHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZChwcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wcmVpbnN0YWxsVHJhY2tpbmdFbmFibGVkID0gcHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZDtcbiAgfVxuXG4gIHNldEFsbG93aUFkSW5mb1JlYWRpbmcoYWxsb3dpQWRJbmZvUmVhZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dpQWRJbmZvUmVhZGluZyA9IGFsbG93aUFkSW5mb1JlYWRpbmc7XG4gIH1cblxuICBzZXRBbGxvd0lkZmFSZWFkaW5nKGFsbG93SWRmYVJlYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbG93SWRmYVJlYWRpbmcgPSBhbGxvd0lkZmFSZWFkaW5nO1xuICB9XG5cbiAgc2V0QWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmcoYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbG93QWRTZXJ2aWNlc0luZm9SZWFkaW5nID0gYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmc7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGlvbkNhbGxiYWNrTGlzdGVuZXIoYXR0cmlidXRpb25DYWxsYmFjazogKGF0dHJpYnV0aW9uOiBBZGp1c3RBdHRyaWJ1dGlvbikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXR0cmlidXRpb25DYWxsYmFjayA9IGF0dHJpYnV0aW9uQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRFdmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2tMaXN0ZW5lcihldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s6IChldmVudDogQWRqdXN0RXZlbnRTdWNjZXNzKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2sgPSBldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRFdmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2tMaXN0ZW5lcihldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2s6IChldmVudDogQWRqdXN0RXZlbnRGYWlsdXJlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2sgPSBldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRTZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFja0xpc3RlbmVyKFxuICAgIHNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvblN1Y2Nlc3MpID0+IHZvaWRcbiAgKSB7XG4gICAgdGhpcy5zZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayA9IHNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrO1xuICB9XG5cbiAgc2V0U2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2tMaXN0ZW5lcihzZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjazogKHNlc3Npb246IEFkanVzdFNlc3Npb25GYWlsdXJlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5zZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjayA9IHNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrO1xuICB9XG5cbiAgc2V0RGVmZXJyZWREZWVwbGlua0NhbGxiYWNrTGlzdGVuZXIoZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrOiAodXJpOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICB0aGlzLmRlZmVycmVkRGVlcGxpbmtDYWxsYmFjayA9IGRlZmVycmVkRGVlcGxpbmtDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXR0cmlidXRpb25DYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGlvbkNhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmFja2luZ0ZhaWxlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmVycmVkRGVlcGxpbmtDYWxsYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGhhc0F0dHJpYnV0aW9uTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRpb25DYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRXZlbnRUcmFja2luZ1N1Y2NlZWRlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRXZlbnRUcmFja2luZ0ZhaWxlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc1Nlc3Npb25UcmFja2luZ0ZhaWxlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2tMaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9uIHtcbiAgcHJpdmF0ZSBwcmljZTogc3RyaW5nO1xuICBwcml2YXRlIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlY2VpcHQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbkRhdGU6IHN0cmluZztcbiAgcHJpdmF0ZSBzYWxlc1JlZ2lvbjogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwYXJ0bmVyUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihwcmljZTogc3RyaW5nLCBjdXJyZW5jeTogc3RyaW5nLCB0cmFuc2FjdGlvbklkOiBzdHJpbmcsIHJlY2VpcHQ6IHN0cmluZykge1xuICAgIHRoaXMucHJpY2UgPSBwcmljZTtcbiAgICB0aGlzLmN1cnJlbmN5ID0gY3VycmVuY3k7XG4gICAgdGhpcy50cmFuc2FjdGlvbklkID0gdHJhbnNhY3Rpb25JZDtcbiAgICB0aGlzLnJlY2VpcHQgPSByZWNlaXB0O1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25EYXRlKHRyYW5zYWN0aW9uRGF0ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbkRhdGUgPSB0cmFuc2FjdGlvbkRhdGU7XG4gIH1cblxuICBzZXRTYWxlc1JlZ2lvbihzYWxlc1JlZ2lvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zYWxlc1JlZ2lvbiA9IHNhbGVzUmVnaW9uO1xuICB9XG5cbiAgYWRkQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBhZGRQYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRqdXN0UGxheVN0b3JlU3Vic2NyaXB0aW9uIHtcbiAgcHJpdmF0ZSBwcmljZTogc3RyaW5nO1xuICBwcml2YXRlIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgc2t1OiBzdHJpbmc7XG4gIHByaXZhdGUgb3JkZXJJZDogc3RyaW5nO1xuICBwcml2YXRlIHNpZ25hdHVyZTogc3RyaW5nO1xuICBwcml2YXRlIHB1cmNoYXNlVG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBwdXJjaGFzZVRpbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBjYWxsYmFja1BhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcGFydG5lclBhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpY2U6IHN0cmluZywgY3VycmVuY3k6IHN0cmluZywgc2t1OiBzdHJpbmcsIG9yZGVySWQ6IHN0cmluZywgc2lnbmF0dXJlOiBzdHJpbmcsIHB1cmNoYXNlVG9rZW46IHN0cmluZykge1xuICAgIHRoaXMucHJpY2UgPSBwcmljZTtcbiAgICB0aGlzLmN1cnJlbmN5ID0gY3VycmVuY3k7XG4gICAgdGhpcy5za3UgPSBza3U7XG4gICAgdGhpcy5vcmRlcklkID0gb3JkZXJJZDtcbiAgICB0aGlzLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB0aGlzLnB1cmNoYXNlVG9rZW4gPSBwdXJjaGFzZVRva2VuO1xuICB9XG5cbiAgc2V0UHVyY2hhc2VUaW1lKHB1cmNoYXNlVGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wdXJjaGFzZVRpbWUgPSBwdXJjaGFzZVRpbWU7XG4gIH1cblxuICBhZGRDYWxsYmFja1BhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIGFkZFBhcnRuZXJQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RUaGlyZFBhcnR5U2hhcmluZyB7XG4gIHByaXZhdGUgaXNFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIGdyYW51bGFyT3B0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihpc0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IGlzRW5hYmxlZDtcbiAgfVxuXG4gIGFkZEdyYW51bGFyT3B0aW9uKHBhcnRuZXJOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ncmFudWxhck9wdGlvbnMucHVzaChwYXJ0bmVyTmFtZSk7XG4gICAgdGhpcy5ncmFudWxhck9wdGlvbnMucHVzaChrZXkpO1xuICAgIHRoaXMuZ3JhbnVsYXJPcHRpb25zLnB1c2godmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRqdXN0QXR0cmlidXRpb24ge1xuICB0cmFja2VyVG9rZW46IHN0cmluZztcbiAgdHJhY2tlck5hbWU6IHN0cmluZztcbiAgbmV0d29yazogc3RyaW5nO1xuICBjYW1wYWlnbjogc3RyaW5nO1xuICBhZGdyb3VwOiBzdHJpbmc7XG4gIGNyZWF0aXZlOiBzdHJpbmc7XG4gIGNsaWNrTGFiZWw6IHN0cmluZztcbiAgYWRpZDogc3RyaW5nO1xuICBjb3N0VHlwZTogc3RyaW5nO1xuICBjb3N0QW1vdW50OiBzdHJpbmc7XG4gIGNvc3RDdXJyZW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdFNlc3Npb25TdWNjZXNzIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgYWRpZDogc3RyaW5nO1xuICBqc29uUmVzcG9uc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RTZXNzaW9uRmFpbHVyZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFkaWQ6IHN0cmluZztcbiAgd2lsbFJldHJ5OiBib29sZWFuO1xuICBqc29uUmVzcG9uc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RFdmVudFN1Y2Nlc3Mge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGV2ZW50VG9rZW46IHN0cmluZztcbiAgY2FsbGJhY2tJZDogc3RyaW5nO1xuICBqc29uUmVzcG9uc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RFdmVudEZhaWx1cmUge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGV2ZW50VG9rZW46IHN0cmluZztcbiAgd2lsbFJldHJ5OiBib29sZWFuO1xuICBjYWxsYmFja0lkOiBzdHJpbmc7XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBBZGp1c3RFbnZpcm9ubWVudCB7XG4gIFNhbmRib3ggPSAnc2FuZGJveCcsXG4gIFByb2R1Y3Rpb24gPSAncHJvZHVjdGlvbicsXG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdExvZ0xldmVsIHtcbiAgVmVyYm9zZSA9ICdWRVJCT1NFJyxcbiAgRGVidWcgPSAnREVCVUcnLFxuICBJbmZvID0gJ0lORk8nLFxuICBXYXJuID0gJ1dBUk4nLFxuICBFcnJvciA9ICdFUlJPUicsXG4gIEFzc2VydCA9ICdBU1NFUlQnLFxuICBTdXBwcmVzcyA9ICdTVVBQUkVTUycsXG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdFVybFN0cmF0ZWd5IHtcbiAgSW5kaWEgPSAnSW5kaWEnLFxuICBDaGluYSA9ICdDaGluYScsXG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdEFkUmV2ZW51ZVNvdXJjZSB7XG4gIEFkUmV2ZW51ZVNvdXJjZU1vcHViID0gJ21vcHViJyxcbiAgQWRSZXZlbnVlU291cmNlQWRtb2IgPSAnYWRtb2InLFxuICBBZFJldmVudWVTb3VyY2VGYk5hdGl2ZUFkID0gJ2ZhY2Vib29rX25hdGl2ZV9hZCcsXG4gIEFkUmV2ZW51ZVNvdXJjZUZiQXVkaWVuY2VOZXR3b3JrID0gJ2ZhY2Vib29rX2F1ZGllbmNlX25ldHdvcmsnLFxuICBBZFJldmVudWVTb3VyY2VJcm9uc291cmNlID0gJ2lyb25zb3VyY2UnLFxuICBBZFJldmVudWVTb3VyY2VGeWJlciA9ICdmeWJlcicsXG4gIEFkUmV2ZW51ZVNvdXJjZUFlcnNlcnYgPSAnYWVyc2VydicsXG4gIEFkUmV2ZW51ZVNvdXJjZUFwcG9kZWFsID0gJ2FwcG9kZWFsJyxcbiAgQWRSZXZlbnVlU291cmNlQWRpbmN1YmUgPSAnYWRpbmN1YmUnLFxuICBBZFJldmVudWVTb3VyY2VGdXNlUG93ZXJlZCA9ICdmdXNlcG93ZXJlZCcsXG4gIEFkUmV2ZW51ZVNvdXJjZUFkZGFwcHRyID0gJ2FkZGFwcHRyJyxcbiAgQWRSZXZlbnVlU291cmNlTWlsbGVubmlhbE1lZGlhdGlvbiA9ICdtaWxsZW5uaWFsX21lZGlhdGlvbicsXG4gIEFkUmV2ZW51ZVNvdXJjZUZsdXJyeSA9ICdmbHVycnknLFxuICBBZFJldmVudWVTb3VyY2VBZG1vc3QgPSAnYWRtb3N0JyxcbiAgQWRSZXZlbnVlU291cmNlRGVsdGFkbmEgPSAnZGVsdGFkbmEnLFxuICBBZFJldmVudWVTb3VyY2VVcHNpZ2h0ID0gJ3Vwc2lnaHQnLFxuICBBZFJldmVudWVTb3VyY2VVbml0eUFkcyA9ICd1bml0eWFkcycsXG4gIEFkUmV2ZW51ZVNvdXJjZUFkdG9hcHAgPSAnYWR0b2FwcCcsXG4gIEFkUmV2ZW51ZVNvdXJjZVRhcGRhcSA9ICd0YXBkYXEnLFxufVxuXG4vKipcbiAqIEBuYW1lIEFkanVzdFxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGlzIHRoZSBJb25pYyBDb3Jkb3ZhIFNESyBvZiBBZGp1c3TihKIuIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IEFkanVzdOKEoiBhdCBhZGp1c3QuY29tLlxuICpcbiAqIFJlcXVpcmVzIENvcmRvdmEgcGx1Z2luOiBgY29tLmFkanVzdC5zZGtgLiBGb3IgbW9yZSBpbmZvLCBwbGVhc2Ugc2VlIHRoZSBbQWRqdXN0IENvcmRvdmEgU0RLXShodHRwczovL2dpdGh1Yi5jb20vYWRqdXN0L2NvcmRvdmFfc2RrKVxuICpcbiAqIEB1c2FnZVxuICogYGBgdHlwZXNjcmlwdFxuICogIGltcG9ydCB7IEFkanVzdCwgQWRqdXN0Q29uZmlnLCBBZGp1c3RFbnZpcm9ubWVudCB9IGZyb20gJ0Bpb25pYy1uYXRpdmUvYWRqdXN0JztcbiAqXG4gKiAgY29uc3RydWN0b3IocHJpdmF0ZSBhZGp1c3Q6IEFkanVzdCkgeyB9XG4gKlxuICogIC4uLlxuICpcbiAqICBjb25zdCBjb25maWcgPSBuZXcgQWRqdXN0Q29uZmlnKCdBUFAtVE9LRU4tSEVSRScsIEFkanVzdEVudmlyb25tZW50LlNhbmRib3gpO1xuICogIGNvbmZpZy5sb2dMZXZlbCA9IEFkanVzdExvZ0xldmVsLlZlcmJvc2U7XG4gKiAgLy8gU2V0IG90aGVyIGNvbmZpZyBwcm9wZXJ0aWVzLlxuICogIGFkanVzdC5jcmVhdGUoY29uZmlnKTtcbiAqXG4gKiBgYGBcbiAqIEBpbnRlcmZhY2VzXG4gKiBBZGp1c3RBdHRyaWJ1dGlvblxuICogQWRqdXN0U2Vzc2lvblN1Y2Nlc3NcbiAqIEFkanVzdFNlc3Npb25GYWlsdXJlXG4gKiBBZGp1c3RFdmVudFN1Y2Nlc3NcbiAqIEFkanVzdEV2ZW50RmFpbHVyZVxuICogQGNsYXNzZXNcbiAqIEFkanVzdEV2ZW50XG4gKiBBZGp1c3RDb25maWdcbiAqIEFkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9uXG4gKiBBZGp1c3RQbGF5U3RvcmVTdWJzY3JpcHRpb25cbiAqIEFkanVzdFRoaXJkUGFydHlTaGFyaW5nXG4gKiBAZW51bXNcbiAqIEFkanVzdEVudmlyb25tZW50XG4gKiBBZGp1c3RMb2dMZXZlbFxuICogQWRqdXN0VXJsU3RyYXRlZ3lcbiAqIEFkanVzdEFkUmV2ZW51ZVNvdXJjZVxuICovXG5AUGx1Z2luKHtcbiAgcGx1Z2luTmFtZTogJ0FkanVzdCcsXG4gIHBsdWdpbjogJ2NvbS5hZGp1c3Quc2RrJyxcbiAgcGx1Z2luUmVmOiAnQWRqdXN0JyxcbiAgcmVwbzogJ2h0dHBzOi8vZ2l0aHViLmNvbS9hZGp1c3QvY29yZG92YV9zZGsnLFxuICBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWRqdXN0IGV4dGVuZHMgSW9uaWNOYXRpdmVQbHVnaW4ge1xuICAvKipcbiAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgQWRqdXN0IFNES1xuICAgKiBAcGFyYW0ge0FkanVzdENvbmlnfSBjb25maWcgQWRqdXN0IGNvbmZpZyBvYmplY3QgdXNlZCBhcyBzdGFydGluZyBvcHRpb25zXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgY3JlYXRlKGNvbmZpZzogQWRqdXN0Q29uZmlnKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgYW4gZXZlbnRcbiAgICogQHBhcmFtIHtBZGp1c3RFdmVudH0gZXZlbnQgQWRqdXN0IGV2ZW50IG9iamVjdCB0byBiZSB0cmFja2VkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tFdmVudChldmVudDogQWRqdXN0RXZlbnQpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBBcHAgU3RvcmUgc3Vic2NyaXB0aW9uXG4gICAqIEBwYXJhbSB7QWRqdXN0QXBwU3RvcmVTdWJzY3JpcHRpb259IHN1YnNjcmlwdGlvbiBBZGp1c3QgQXBwIFN0b3JlIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gYmUgdHJhY2tlZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHRyYWNrQXBwU3RvcmVTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uOiBBZGp1c3RBcHBTdG9yZVN1YnNjcmlwdGlvbik6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIFBsYXkgU3RvcmUgc3Vic2NyaXB0aW9uXG4gICAqIEBwYXJhbSB7QWRqdXN0UGxheVN0b3JlU3Vic2NyaXB0aW9ufSBzdWJzY3JpcHRpb24gQWRqdXN0IFBsYXkgU3RvcmUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byBiZSB0cmFja2VkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tQbGF5U3RvcmVTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uOiBBZGp1c3RQbGF5U3RvcmVTdWJzY3JpcHRpb24pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyB0aGlyZCBwYXJ0eSBzaGFyaW5nIGNob2ljZVxuICAgKiBAcGFyYW0ge0FkanVzdFRoaXJkUGFydHlTaGFyaW5nfSB0aGlyZFBhcnR5U2hhcmluZyBBZGp1c3QgdGhpcmQgcGFydHkgc2hhcmluZyBvYmplY3QgdG8gYmUgdHJhY2tlZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHRyYWNrVGhpcmRQYXJ0eVNoYXJpbmcodGhpcmRQYXJ0eVNoYXJpbmc6IEFkanVzdFRoaXJkUGFydHlTaGFyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgYWQgcmV2ZW51ZSBkYXRhXG4gICAqIEBwYXJhbSB7QWRqdXN0QWRSZXZlbnVlU291cmNlfSBzb3VyY2UgQWQgcmV2ZW51ZSBzb3VyY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBheWxvYWQgQWQgcmV2ZW51ZSBKU09OIHN0cmluZyBwYXlsb2FkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tBZFJldmVudWUoc291cmNlOiBBZGp1c3RBZFJldmVudWVTb3VyY2UsIHBheWxvYWQ6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIG1lYXN1cmVtZW50IGNvbnNlbnQgY2hvaWNlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWVhc3VyZW1lbnRDb25zZW50IHNldCBtZWFzdXJlbWVudCBjb25zZW50IHRvIHRydWUgb3IgZmFsc2VcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja01lYXN1cmVtZW50Q29uc2VudChtZWFzdXJlbWVudENvbnNlbnQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgb2ZmbGluZSBtb2RlIG9uIG9yIG9mZlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgc2V0IHRvIHRydWUgZm9yIG9mZmxpbmUgbW9kZSBvblxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldE9mZmxpbmVNb2RlKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEJ5IG1ha2luZyB0aGlzIGNhbGwsIHRoZSBBZGp1c3QgU0RLIHdpbGwgdHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYW55IG5ldyBhdHRyaWJ1dGlvbiBpbmZvIGluc2lkZSBvZiB0aGUgZGVlcCBsaW5rIGFuZCBpZiBhbnksIGl0IHdpbGwgYmUgc2VudCB0byB0aGUgQWRqdXN0IGJhY2tlbmQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVVJMIG9mIHRoZSBkZWVwbGlua1xuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGFwcFdpbGxPcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIGRpc2FibGUvZW5hYmxlIHRoZSBBZGp1c3QgU0RLIGZyb20gdHJhY2tpbmcgYnkgaW52b2tpbmcgdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHNldCB0byBmYWxzZSB0byBkaXNhYmxlIFNES1xuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldEVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge31cblxuICAvKipcbiAgICogVG8gc2VuZCB1cyB0aGUgcHVzaCBub3RpZmljYXRpb24gdG9rZW4sIGFkZCB0aGUgZm9sbG93aW5nIGNhbGwgdG8gQWRqdXN0IHdoZW5ldmVyIHlvdSBnZXQgeW91ciB0b2tlbiBpbiB0aGUgYXBwIG9yIHdoZW4gaXQgZ2V0cyB1cGRhdGVkLlxuICAgKiBQdXNoIHRva2VucyBhcmUgdXNlZCBmb3IgQXVkaWVuY2UgQnVpbGRlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYW5kIHRoZXkgYXJlIHJlcXVpcmVkIGZvciB0aGUgdXBjb21pbmcgdW5pbnN0YWxsIHRyYWNraW5nIGZlYXR1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdXNoVG9rZW4gcHVzaCB0b2tlbiB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNldFB1c2hUb2tlbihwdXNoVG9rZW46IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIEFkanVzdCBTREsgaXMgY3VycmVudGx5IGVuYWJsZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0VuYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGFjY29yZGFuY2Ugd2l0aCBhcnRpY2xlIDE3IG9mIHRoZSBFVSdzIEdlbmVyYWwgRGF0YSBQcm90ZWN0aW9uIFJlZ3VsYXRpb24gKEdEUFIpLCB5b3UgY2FuIG5vdGlmeSBBZGp1c3Qgd2hlbiBhIHVzZXIgaGFzIGV4ZXJjaXNlZCB0aGVpciByaWdodCB0byBiZSBmb3Jnb3R0ZW4uXG4gICAqIENhbGxpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Qgd2lsbCBpbnN0cnVjdCB0aGUgQWRqdXN0IFNESyB0byBjb21tdW5pY2F0ZSB0aGUgdXNlcidzIGNob2ljZSB0byBiZSBmb3Jnb3R0ZW4gdG8gdGhlIEFkanVzdCBiYWNrZW5kXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZ2RwckZvcmdldE1lKCk6IHZvaWQge31cblxuICAvKipcbiAgICogWW91IGNhbiBub3cgbm90aWZ5IEFkanVzdCB3aGVuIGEgdXNlciBoYXMgZXhlcmNpc2VkIHRoZWlyIHJpZ2h0IHRvIHN0b3Agc2hhcmluZyB0aGVpciBkYXRhIHdpdGggcGFydG5lcnMgZm9yIG1hcmtldGluZyBwdXJwb3NlcywgYnV0IGhhcyBhbGxvd2VkIGl0IHRvIGJlIHNoYXJlZCBmb3Igc3RhdGlzdGljcyBwdXJwb3Nlcy5cbiAgICogQ2FsbGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZCB3aWxsIGluc3RydWN0IHRoZSBBZGp1c3QgU0RLIHRvIGNvbW11bmljYXRlIHRoZSB1c2VyJ3MgY2hvaWNlIHRvIGRpc2FibGUgZGF0YSBzaGFyaW5nIHRvIHRoZSBBZGp1c3QgYmFja2VuZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGRpc2FibGVUaGlyZFBhcnR5U2hhcmluZygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHVzZWQgdG8gZ2V0IEdvb2dsZSBBZElkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBnb29nbGUgQWRJZCB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRHb29nbGVBZElkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHlvdSBuZWVkIHRvIG9idGFpbiB0aGUgQW1hem9uIEFkdmVydGlzaW5nIElELCB5b3UgY2FuIG1ha2UgYSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBhbmF6aWIgYWR2LiBJRFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBbWF6b25BZElkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIG9idGFpbiB0aGUgSURGQSwgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBJREZBIHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRJZGZhKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBldmVyeSBkZXZpY2Ugd2l0aCB5b3VyIGFwcCBpbnN0YWxsZWQgb24gaXQsIHRoZSBBZGp1c3QgYmFja2VuZCBnZW5lcmF0ZXMgYSB1bmlxdWUgQWRqdXN0IGRldmljZSBpZGVudGlmaWVyIChhZGlkKS5cbiAgICogSW4gb3JkZXIgdG8gb2J0YWluIHRoaXMgaWRlbnRpZmllciwgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBhZGlkIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFkaWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSWYgeW91IHdhbnQgdG8gYWNjZXNzIGluZm9ybWF0aW9uIGFib3V0IGEgdXNlcidzIGN1cnJlbnQgYXR0cmlidXRpb24gd2hlbmV2ZXIgeW91IG5lZWQgaXQsIHlvdSBjYW4gbWFrZSBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFkanVzdEF0dHJpYnV0aW9uPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBBZGp1c3RBdHRyaWJ1dGlvbiBvYmplY3RcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QXR0cmlidXRpb24oKTogUHJvbWlzZTxBZGp1c3RBdHRyaWJ1dGlvbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHZlcnNpb24gb2YgdGhlIFNESyB1c2VkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBzZGsgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRTZGtWZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBzZXNzaW9uIGNhbGxiYWNrIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgYWRkU2Vzc2lvbkNhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzcGVjaWZpYyBzZXNzaW9uIGNhbGxiYWNrIHBhcmFtZXRlciBieSBwYXNzaW5nIHRoZSBkZXNpcmluZyBrZXkgdG8gdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZW1vdmVTZXNzaW9uQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIElmIGFsbCBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgc2Vzc2lvbiBjYWxsYmFjayBwYXJhbWV0ZXJzIGhhdmUgdG8gYmUgcmVtb3ZlZCwgY2FsbCB0aGlzIG1ldGhvZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHJlc2V0U2Vzc2lvbkNhbGxiYWNrUGFyYW1ldGVycygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGFkZCBzZXNzaW9uIHBhcnRuZXIgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBhZGRTZXNzaW9uUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlIGEgc3BlY2lmaWMgc2Vzc2lvbiBwYXJ0bmVyIHBhcmFtZXRlciBieSBwYXNzaW5nIHRoZSBkZXNpcmluZyBrZXkgdG8gdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZW1vdmVTZXNzaW9uUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogSWYgYWxsIGtleXMgYW5kIHZhbHVlcyBmcm9tIHRoZSBzZXNzaW9uIHBhcnRuZXIgcGFyYW1ldGVycyBoYXZlIHRvIGJlIHJlbW92ZWQsIGNhbGwgdGhpcyBtZXRob2RcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZXNldFNlc3Npb25QYXJ0bmVyUGFyYW1ldGVycygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGNhbGwgd2lsbCBtYWtlIHRoZSBBZGp1c3QgU0RLIHNlbmQgdGhlIGluaXRpYWwgaW5zdGFsbCBzZXNzaW9uIGFuZCBhbnkgZXZlbnRzIGNyZWF0ZWQsIGlmIHRoZXkgd2VyZSBub3Qgc2VudCBhZnRlciBkZWxheSBzdGFydCB3YXMgc2V0IGFuZCBpdCdzIGRlbGF5IGV4cGlyZWQuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgc2VuZEZpcnN0UGFja2FnZXMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IEFkanVzdCBTREsgdG8gc2hvdyBwb3AgdXAgZGlhbG9nIGZvciBhc2tpbmcgdXNlcidzIGNvbnNlbnQgdG8gYmUgdHJhY2tlZC5cbiAgICogSW4gb3JkZXIgdG8gZG8gdGhpcywgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8bnVtYmVyPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCB1c2VyJ3MgY29uc2VudCB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICByZXF1ZXN0VHJhY2tpbmdBdXRob3JpemF0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gdXBkYXRlIFNLQWROZXR3b3JrIGNvbnZlcnNpb24gdmFsdWUgd2l0aCBjYWxsaW5nIHRoaXMgbWV0aG9kXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb252ZXJzaW9uVmFsdWUgY29udmVyc2lvbiB2YWx1ZSBmb3IgdGhlIHVzZXJcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB1cGRhdGVDb252ZXJzaW9uVmFsdWUoY29udmVyc2lvblZhbHVlOiBudW1iZXIpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRvIG9idGFpbiB0aGUgYXBwIHRyYWNraW5nIGF1dGhvcml6YXRpb24gc3RhdHVzIGluIGlPUywgY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8bnVtYmVyPn0gUmV0dXJucyBhIHByb21pc2Ugd2l0aCBhcHAgdHJhY2tpbmcgYXV0aG9yaXphdGlvbiBzdGF0dXNcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QXBwVHJhY2tpbmdBdXRob3JpemF0aW9uU3RhdHVzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGlvbmljLW5hdGl2ZS9wbHVnaW5zL2FkanVzdC9uZ3gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyw4QkFBc0MsTUFBTSxvQkFBb0IsQ0FBQzs7SUFXdEUscUJBQVksVUFBa0I7UUFIdEIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0NBQVUsR0FBVixVQUFXLE9BQWUsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsMENBQW9CLEdBQXBCLFVBQXFCLEdBQVcsRUFBRSxLQUFhO1FBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUNBQW1CLEdBQW5CLFVBQW9CLEdBQVcsRUFBRSxLQUFhO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0NBQWdCLEdBQWhCLFVBQWlCLGFBQXFCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQ0FBYSxHQUFiLFVBQWMsVUFBa0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUs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QU01QjtBQUVELE1BQU0sQ0FBTixJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0Isd0VBQStDLENBQUE7SUFDL0MsdURBQThCLENBQUE7SUFDOUIsMkRBQWtDLENBQUE7SUFDbEMscUVBQTRDLENBQUE7QUFDOUMsQ0FBQyxFQUxXLHFCQUFxQixLQUFyQixxQkFBcUIsUUFLaEM7O0lBa0QyQiwwQkFBaUI7Ozs7SUFNM0MsdUJBQU0sYUFBQyxNQUFvQjtJQU8zQiwyQkFBVSxhQUFDLEtBQWtCO0lBTzdCLDBDQUF5QixhQUFDLFlBQXdDO0lBT2xFLDJDQUEwQixhQUFDLFlBQXlDO0lBT3BFLHVDQUFzQixhQUFDLGlCQUEwQztJQWlCakUsK0JBQWMsYUFBQyxpQkFBc0IsRUFBRSxPQUFhO0lBT3BELHdDQUF1QixhQUFDLGtCQUEyQjtJQU9uRCwrQkFBYyxhQUFDLE9BQWdCO0lBTy9CLCtCQUFjLGFBQUMsR0FBVztJQU8xQiwyQkFBVSxhQUFDLE9BQWdCO0lBUTNCLDZCQUFZLGFBQUMsU0FBaUI7SUFPOUIsMEJBQVM7SUFTVCw2QkFBWTtJQU9aLHlDQUF3QjtJQU94Qiw4QkFBYTtJQVNiLDhCQUFhO0lBU2Isd0JBQU87SUFVUCx3QkFBTztJQVNQLCtCQUFjO0lBU2QsOEJBQWE7SUFVYiw0Q0FBMkIsYUFBQyxHQUFXLEVBQUUsS0FBYTtJQU90RCwrQ0FBOEIsYUFBQyxHQUFXO0lBTTFDLCtDQUE4QjtJQVE5QiwyQ0FBMEIsYUFBQyxHQUFXLEVBQUUsS0FBYTtJQU9yRCw4Q0FBNkIsYUFBQyxHQUFXO0lBTXpDLDhDQUE2QjtJQU03QixrQ0FBaUI7SUFRakIsa0VBQWlEO0lBU2pELHNDQUFxQixhQUFDLGVBQXVCO0lBTzdDLGtEQUFpQzs7Ozs7OztnQkE5T2xDLFVBQVU7O2lCQWpmWDtFQWtmNEIsaUJBQWlCO1NBQWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3Jkb3ZhLCBJb25pY05hdGl2ZVBsdWdpbiwgUGx1Z2luIH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9jb3JlJztcblxuZXhwb3J0IGNsYXNzIEFkanVzdEV2ZW50IHtcbiAgcHJpdmF0ZSBldmVudFRva2VuOiBzdHJpbmc7XG4gIHByaXZhdGUgcmV2ZW51ZTogbnVtYmVyO1xuICBwcml2YXRlIGN1cnJlbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBjYWxsYmFja1BhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcGFydG5lclBhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoZXZlbnRUb2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5ldmVudFRva2VuID0gZXZlbnRUb2tlbjtcbiAgfVxuXG4gIHNldFJldmVudWUocmV2ZW51ZTogbnVtYmVyLCBjdXJyZW5jeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZXZlbnVlID0gcmV2ZW51ZTtcbiAgICB0aGlzLmN1cnJlbmN5ID0gY3VycmVuY3k7XG4gIH1cblxuICBhZGRDYWxsYmFja1BhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIGFkZFBhcnRuZXJQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2goa2V5KTtcbiAgICB0aGlzLnBhcnRuZXJQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uSWQgPSB0cmFuc2FjdGlvbklkO1xuICB9XG5cbiAgc2V0Q2FsbGJhY2tJZChjYWxsYmFja0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhbGxiYWNrSWQgPSBjYWxsYmFja0lkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RDb25maWcge1xuICBwcml2YXRlIGFwcFRva2VuOiBzdHJpbmc7XG4gIHByaXZhdGUgZW52aXJvbm1lbnQ6IEFkanVzdEVudmlyb25tZW50O1xuICBwcml2YXRlIHNka1ByZWZpeDogc3RyaW5nO1xuICBwcml2YXRlIGRlbGF5U3RhcnQgPSAwLjA7XG4gIHByaXZhdGUgbG9nTGV2ZWw6IEFkanVzdExvZ0xldmVsID0gbnVsbDtcbiAgcHJpdmF0ZSBkZWZhdWx0VHJhY2tlcjogc3RyaW5nID0gbnVsbDtcbiAgcHJpdmF0ZSB1cmxTdHJhdGVneTogQWRqdXN0VXJsU3RyYXRlZ3kgPSBudWxsO1xuICBwcml2YXRlIGV4dGVybmFsRGV2aWNlSWQ6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgc2VuZEluQmFja2dyb3VuZDogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgc2hvdWxkTGF1bmNoRGVlcGxpbms6IGJvb2xlYW4gPSBudWxsO1xuICBwcml2YXRlIGV2ZW50QnVmZmVyaW5nRW5hYmxlZDogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgdXNlckFnZW50OiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIGlzRGV2aWNlS25vd246IGJvb2xlYW4gPSBudWxsO1xuICBwcml2YXRlIG5lZWRzQ29zdDogYm9vbGVhbiA9IG51bGw7XG4gIHByaXZhdGUgc2VjcmV0SWQ6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgaW5mbzE6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgaW5mbzI6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgaW5mbzM6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgaW5mbzQ6IG51bWJlciA9IG51bGw7XG4gIHByaXZhdGUgcHJvY2Vzc05hbWU6IHN0cmluZyA9IG51bGw7IC8vIEFuZHJvaWQgb25seVxuICBwcml2YXRlIHByZWluc3RhbGxUcmFja2luZ0VuYWJsZWQ6IGJvb2xlYW4gPSBudWxsOyAvLyBBbmRyb2lkIG9ubHlcbiAgcHJpdmF0ZSBwcmVpbnN0YWxsRmlsZVBhdGg6IHN0cmluZyA9IG51bGw7IC8vIEFuZHJvaWQgb25seVxuICBwcml2YXRlIGFsbG93aUFkSW5mb1JlYWRpbmc6IGJvb2xlYW4gPSBudWxsOyAvLyBpT1Mgb25seVxuICBwcml2YXRlIGFsbG93SWRmYVJlYWRpbmc6IGJvb2xlYW4gPSBudWxsOyAvLyBpT1Mgb25seVxuICBwcml2YXRlIGFsbG93QWRTZXJ2aWNlc0luZm9SZWFkaW5nOiBib29sZWFuID0gbnVsbDsgLy8gaU9TIG9ubHlcblxuICBwcml2YXRlIGF0dHJpYnV0aW9uQ2FsbGJhY2s6IChhdHRyaWJ1dGlvbjogQWRqdXN0QXR0cmlidXRpb24pID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudFN1Y2Nlc3MpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjazogKGV2ZW50OiBBZGp1c3RFdmVudEZhaWx1cmUpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIHNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvblN1Y2Nlc3MpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIHNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvbkZhaWx1cmUpID0+IHZvaWQgPSBudWxsO1xuICBwcml2YXRlIGRlZmVycmVkRGVlcGxpbmtDYWxsYmFjazogKHVyaTogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcbiAgcHJpdmF0ZSBjb252ZXJzaW9uVmFsdWVVcGRhdGVkQ2FsbGJhY2s6IChjb252ZXJzaW9uVmFsdWU6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoYXBwVG9rZW46IHN0cmluZywgZW52aXJvbm1lbnQ6IEFkanVzdEVudmlyb25tZW50KSB7XG4gICAgdGhpcy5hcHBUb2tlbiA9IGFwcFRva2VuO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldEFwcFNlY3JldChzZWNyZXRJZDogbnVtYmVyLCBpbmZvMTogbnVtYmVyLCBpbmZvMjogbnVtYmVyLCBpbmZvMzogbnVtYmVyLCBpbmZvNDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZWNyZXRJZCA9IHNlY3JldElkO1xuICAgIHRoaXMuaW5mbzEgPSBpbmZvMTtcbiAgICB0aGlzLmluZm8yID0gaW5mbzI7XG4gICAgdGhpcy5pbmZvMyA9IGluZm8zO1xuICAgIHRoaXMuaW5mbzQgPSBpbmZvNDtcbiAgfVxuXG4gIHNldERlbGF5U3RhcnQoZGVsYXlTdGFydDogbnVtYmVyKSB7XG4gICAgdGhpcy5kZWxheVN0YXJ0ID0gZGVsYXlTdGFydDtcbiAgfVxuXG4gIHNldExvZ0xldmVsKGxvZ0xldmVsOiBBZGp1c3RMb2dMZXZlbCkge1xuICAgIHRoaXMubG9nTGV2ZWwgPSBsb2dMZXZlbDtcbiAgfVxuXG4gIHNldERlZmF1bHRUcmFja2VyKGRlZmF1bHRUcmFja2VyOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlZmF1bHRUcmFja2VyID0gZGVmYXVsdFRyYWNrZXI7XG4gIH1cblxuICBzZXRFeHRlcm5hbERldmljZUlkKGV4dGVybmFsRGV2aWNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuZXh0ZXJuYWxEZXZpY2VJZCA9IGV4dGVybmFsRGV2aWNlSWQ7XG4gIH1cblxuICBzZXRVcmxTdHJhdGVneSh1cmxTdHJhdGVneTogQWRqdXN0VXJsU3RyYXRlZ3kpIHtcbiAgICB0aGlzLnVybFN0cmF0ZWd5ID0gdXJsU3RyYXRlZ3k7XG4gIH1cblxuICBzZXRTZW5kSW5CYWNrZ3JvdW5kKHNlbmRJbkJhY2tncm91bmQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbmRJbkJhY2tncm91bmQgPSBzZW5kSW5CYWNrZ3JvdW5kO1xuICB9XG5cbiAgc2V0U2hvdWxkTGF1bmNoRGVlcGxpbmsoc2hvdWxkTGF1bmNoRGVlcGxpbms6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3VsZExhdW5jaERlZXBsaW5rID0gc2hvdWxkTGF1bmNoRGVlcGxpbms7XG4gIH1cblxuICBzZXRFdmVudEJ1ZmZlcmluZ0VuYWJsZWQoZXZlbnRCdWZmZXJpbmdFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5ldmVudEJ1ZmZlcmluZ0VuYWJsZWQgPSBldmVudEJ1ZmZlcmluZ0VuYWJsZWQ7XG4gIH1cblxuICBzZXRVc2VyQWdlbnQodXNlckFnZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVzZXJBZ2VudCA9IHVzZXJBZ2VudDtcbiAgfVxuXG4gIHNldERldmljZUtub3duKGlzRGV2aWNlS25vd246IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRGV2aWNlS25vd24gPSBpc0RldmljZUtub3duO1xuICB9XG5cbiAgc2V0TmVlZHNDb3N0KG5lZWRzQ29zdDogYm9vbGVhbikge1xuICAgIHRoaXMubmVlZHNDb3N0ID0gbmVlZHNDb3N0O1xuICB9XG5cbiAgc2V0UHJvY2Vzc05hbWUocHJvY2Vzc05hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHJvY2Vzc05hbWUgPSBwcm9jZXNzTmFtZTtcbiAgfVxuXG4gIHNldFByZWluc3RhbGxUcmFja2luZ0VuYWJsZWQocHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucHJlaW5zdGFsbFRyYWNraW5nRW5hYmxlZCA9IHByZWluc3RhbGxUcmFja2luZ0VuYWJsZWQ7XG4gIH1cblxuICBzZXRQcmVpbnN0YWxsRmlsZVBhdGgocHJlaW5zdGFsbEZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByZWluc3RhbGxGaWxlUGF0aCA9IHByZWluc3RhbGxGaWxlUGF0aDtcbiAgfVxuXG4gIHNldEFsbG93aUFkSW5mb1JlYWRpbmcoYWxsb3dpQWRJbmZvUmVhZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dpQWRJbmZvUmVhZGluZyA9IGFsbG93aUFkSW5mb1JlYWRpbmc7XG4gIH1cblxuICBzZXRBbGxvd0lkZmFSZWFkaW5nKGFsbG93SWRmYVJlYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbG93SWRmYVJlYWRpbmcgPSBhbGxvd0lkZmFSZWFkaW5nO1xuICB9XG5cbiAgc2V0QWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmcoYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbG93QWRTZXJ2aWNlc0luZm9SZWFkaW5nID0gYWxsb3dBZFNlcnZpY2VzSW5mb1JlYWRpbmc7XG4gIH1cblxuICBzZXRBdHRyaWJ1dGlvbkNhbGxiYWNrTGlzdGVuZXIoYXR0cmlidXRpb25DYWxsYmFjazogKGF0dHJpYnV0aW9uOiBBZGp1c3RBdHRyaWJ1dGlvbikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXR0cmlidXRpb25DYWxsYmFjayA9IGF0dHJpYnV0aW9uQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRFdmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2tMaXN0ZW5lcihldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s6IChldmVudDogQWRqdXN0RXZlbnRTdWNjZXNzKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2sgPSBldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRFdmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2tMaXN0ZW5lcihldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2s6IChldmVudDogQWRqdXN0RXZlbnRGYWlsdXJlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2sgPSBldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2s7XG4gIH1cblxuICBzZXRTZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFja0xpc3RlbmVyKFxuICAgIHNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrOiAoc2Vzc2lvbjogQWRqdXN0U2Vzc2lvblN1Y2Nlc3MpID0+IHZvaWRcbiAgKSB7XG4gICAgdGhpcy5zZXNzaW9uVHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjayA9IHNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrO1xuICB9XG5cbiAgc2V0U2Vzc2lvblRyYWNraW5nRmFpbGVkQ2FsbGJhY2tMaXN0ZW5lcihzZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjazogKHNlc3Npb246IEFkanVzdFNlc3Npb25GYWlsdXJlKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5zZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjayA9IHNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrO1xuICB9XG5cbiAgc2V0RGVmZXJyZWREZWVwbGlua0NhbGxiYWNrTGlzdGVuZXIoZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrOiAodXJpOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICB0aGlzLmRlZmVycmVkRGVlcGxpbmtDYWxsYmFjayA9IGRlZmVycmVkRGVlcGxpbmtDYWxsYmFjaztcbiAgfVxuXG4gIHNldENvbnZlcnNpb25WYWx1ZVVwZGF0ZWRDYWxsYmFja0xpc3RlbmVyKGNvbnZlcnNpb25WYWx1ZVVwZGF0ZWRDYWxsYmFjazogKGNvbnZlcnNpb25WYWx1ZTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5jb252ZXJzaW9uVmFsdWVVcGRhdGVkQ2FsbGJhY2sgPSBjb252ZXJzaW9uVmFsdWVVcGRhdGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldEF0dHJpYnV0aW9uQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRpb25DYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRUcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJhY2tpbmdTdWNjZWVkZWRDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRUcmFja2luZ0ZhaWxlZENhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJhY2tpbmdGYWlsZWRDYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2s7XG4gIH1cblxuICBwcml2YXRlIGdldFNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrKCkge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25UcmFja2luZ0ZhaWxlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZlcnJlZERlZXBsaW5rQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb252ZXJzaW9uVmFsdWVVcGRhdGVkQ2FsbGJhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udmVyc2lvblZhbHVlVXBkYXRlZENhbGxiYWNrO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBdHRyaWJ1dGlvbkxpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0aW9uQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc0V2ZW50VHJhY2tpbmdTdWNjZWVkZWRMaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyYWNraW5nU3VjY2VlZGVkQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc0V2ZW50VHJhY2tpbmdGYWlsZWRMaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyYWNraW5nRmFpbGVkQ2FsbGJhY2sgIT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGhhc1Nlc3Npb25UcmFja2luZ1N1Y2NlZWRlZExpc3RlbmVyKCkge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25UcmFja2luZ1N1Y2NlZWRlZENhbGxiYWNrICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTZXNzaW9uVHJhY2tpbmdGYWlsZWRMaXN0ZW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uVHJhY2tpbmdGYWlsZWRDYWxsYmFjayAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRGVmZXJyZWREZWVwbGlua0NhbGxiYWNrTGlzdGVuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmZXJyZWREZWVwbGlua0NhbGxiYWNrICE9PSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGp1c3RBcHBTdG9yZVN1YnNjcmlwdGlvbiB7XG4gIHByaXZhdGUgcHJpY2U6IHN0cmluZztcbiAgcHJpdmF0ZSBjdXJyZW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHRyYW5zYWN0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWNlaXB0OiBzdHJpbmc7XG4gIHByaXZhdGUgdHJhbnNhY3Rpb25EYXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgc2FsZXNSZWdpb246IHN0cmluZztcbiAgcHJpdmF0ZSBjYWxsYmFja1BhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcGFydG5lclBhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpY2U6IHN0cmluZywgY3VycmVuY3k6IHN0cmluZywgdHJhbnNhY3Rpb25JZDogc3RyaW5nLCByZWNlaXB0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnByaWNlID0gcHJpY2U7XG4gICAgdGhpcy5jdXJyZW5jeSA9IGN1cnJlbmN5O1xuICAgIHRoaXMudHJhbnNhY3Rpb25JZCA9IHRyYW5zYWN0aW9uSWQ7XG4gICAgdGhpcy5yZWNlaXB0ID0gcmVjZWlwdDtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uRGF0ZSh0cmFuc2FjdGlvbkRhdGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb25EYXRlID0gdHJhbnNhY3Rpb25EYXRlO1xuICB9XG5cbiAgc2V0U2FsZXNSZWdpb24oc2FsZXNSZWdpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2FsZXNSZWdpb24gPSBzYWxlc1JlZ2lvbjtcbiAgfVxuXG4gIGFkZENhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgYWRkUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkanVzdFBsYXlTdG9yZVN1YnNjcmlwdGlvbiB7XG4gIHByaXZhdGUgcHJpY2U6IHN0cmluZztcbiAgcHJpdmF0ZSBjdXJyZW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHNrdTogc3RyaW5nO1xuICBwcml2YXRlIG9yZGVySWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBzaWduYXR1cmU6IHN0cmluZztcbiAgcHJpdmF0ZSBwdXJjaGFzZVRva2VuOiBzdHJpbmc7XG4gIHByaXZhdGUgcHVyY2hhc2VUaW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FsbGJhY2tQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHBhcnRuZXJQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaWNlOiBzdHJpbmcsIGN1cnJlbmN5OiBzdHJpbmcsIHNrdTogc3RyaW5nLCBvcmRlcklkOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBwdXJjaGFzZVRva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByaWNlID0gcHJpY2U7XG4gICAgdGhpcy5jdXJyZW5jeSA9IGN1cnJlbmN5O1xuICAgIHRoaXMuc2t1ID0gc2t1O1xuICAgIHRoaXMub3JkZXJJZCA9IG9yZGVySWQ7XG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5wdXJjaGFzZVRva2VuID0gcHVyY2hhc2VUb2tlbjtcbiAgfVxuXG4gIHNldFB1cmNoYXNlVGltZShwdXJjaGFzZVRpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHVyY2hhc2VUaW1lID0gcHVyY2hhc2VUaW1lO1xuICB9XG5cbiAgYWRkQ2FsbGJhY2tQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBhZGRQYXJ0bmVyUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKGtleSk7XG4gICAgdGhpcy5wYXJ0bmVyUGFyYW1ldGVycy5wdXNoKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRqdXN0VGhpcmRQYXJ0eVNoYXJpbmcge1xuICBwcml2YXRlIGlzRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBncmFudWxhck9wdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc0VuYWJsZWQgPSBpc0VuYWJsZWQ7XG4gIH1cblxuICBhZGRHcmFudWxhck9wdGlvbihwYXJ0bmVyTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZ3JhbnVsYXJPcHRpb25zLnB1c2gocGFydG5lck5hbWUpO1xuICAgIHRoaXMuZ3JhbnVsYXJPcHRpb25zLnB1c2goa2V5KTtcbiAgICB0aGlzLmdyYW51bGFyT3B0aW9ucy5wdXNoKHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRqdXN0QWRSZXZlbnVlIHtcbiAgcHJpdmF0ZSBzb3VyY2U6IHN0cmluZztcbiAgcHJpdmF0ZSByZXZlbnVlOiBudW1iZXI7XG4gIHByaXZhdGUgY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBhZEltcHJlc3Npb25zQ291bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBhZFJldmVudWVOZXR3b3JrOiBzdHJpbmc7XG4gIHByaXZhdGUgYWRSZXZlbnVlVW5pdDogc3RyaW5nO1xuICBwcml2YXRlIGFkUmV2ZW51ZVBsYWNlbWVudDogc3RyaW5nO1xuICBwcml2YXRlIGNhbGxiYWNrUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwYXJ0bmVyUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IHN0cmluZykge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgc2V0UmV2ZW51ZShyZXZlbnVlOiBudW1iZXIsIGN1cnJlbmN5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJldmVudWUgPSByZXZlbnVlO1xuICAgIHRoaXMuY3VycmVuY3kgPSBjdXJyZW5jeTtcbiAgfVxuXG4gIGFkZENhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja1BhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMuY2FsbGJhY2tQYXJhbWV0ZXJzLnB1c2godmFsdWUpO1xuICB9XG5cbiAgYWRkUGFydG5lclBhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaChrZXkpO1xuICAgIHRoaXMucGFydG5lclBhcmFtZXRlcnMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBzZXRBZEltcHJlc3Npb25zQ291bnQoYWRJbXByZXNzaW9uc0NvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLmFkSW1wcmVzc2lvbnNDb3VudCA9IGFkSW1wcmVzc2lvbnNDb3VudDtcbiAgfVxuXG4gIHNldEFkUmV2ZW51ZU5ldHdvcmsoYWRSZXZlbnVlTmV0d29yazogc3RyaW5nKSB7XG4gICAgdGhpcy5hZFJldmVudWVOZXR3b3JrID0gYWRSZXZlbnVlTmV0d29yaztcbiAgfVxuXG4gIHNldEFkUmV2ZW51ZVVuaXQoYWRSZXZlbnVlVW5pdDogc3RyaW5nKSB7XG4gICAgdGhpcy5hZFJldmVudWVVbml0ID0gYWRSZXZlbnVlVW5pdDtcbiAgfVxuXG4gIHNldEFkUmV2ZW51ZVBsYWNlbWVudChhZFJldmVudWVQbGFjZW1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuYWRSZXZlbnVlUGxhY2VtZW50ID0gYWRSZXZlbnVlUGxhY2VtZW50O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRqdXN0QXR0cmlidXRpb24ge1xuICB0cmFja2VyVG9rZW46IHN0cmluZztcbiAgdHJhY2tlck5hbWU6IHN0cmluZztcbiAgbmV0d29yazogc3RyaW5nO1xuICBjYW1wYWlnbjogc3RyaW5nO1xuICBhZGdyb3VwOiBzdHJpbmc7XG4gIGNyZWF0aXZlOiBzdHJpbmc7XG4gIGNsaWNrTGFiZWw6IHN0cmluZztcbiAgYWRpZDogc3RyaW5nO1xuICBjb3N0VHlwZTogc3RyaW5nO1xuICBjb3N0QW1vdW50OiBzdHJpbmc7XG4gIGNvc3RDdXJyZW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkanVzdFNlc3Npb25TdWNjZXNzIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgYWRpZDogc3RyaW5nO1xuICBqc29uUmVzcG9uc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RTZXNzaW9uRmFpbHVyZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFkaWQ6IHN0cmluZztcbiAgd2lsbFJldHJ5OiBib29sZWFuO1xuICBqc29uUmVzcG9uc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RFdmVudFN1Y2Nlc3Mge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGV2ZW50VG9rZW46IHN0cmluZztcbiAgY2FsbGJhY2tJZDogc3RyaW5nO1xuICBqc29uUmVzcG9uc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGp1c3RFdmVudEZhaWx1cmUge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBhZGlkOiBzdHJpbmc7XG4gIGV2ZW50VG9rZW46IHN0cmluZztcbiAgd2lsbFJldHJ5OiBib29sZWFuO1xuICBjYWxsYmFja0lkOiBzdHJpbmc7XG4gIGpzb25SZXNwb25zZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBBZGp1c3RFbnZpcm9ubWVudCB7XG4gIFNhbmRib3ggPSAnc2FuZGJveCcsXG4gIFByb2R1Y3Rpb24gPSAncHJvZHVjdGlvbicsXG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdExvZ0xldmVsIHtcbiAgVmVyYm9zZSA9ICdWRVJCT1NFJyxcbiAgRGVidWcgPSAnREVCVUcnLFxuICBJbmZvID0gJ0lORk8nLFxuICBXYXJuID0gJ1dBUk4nLFxuICBFcnJvciA9ICdFUlJPUicsXG4gIEFzc2VydCA9ICdBU1NFUlQnLFxuICBTdXBwcmVzcyA9ICdTVVBQUkVTUycsXG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdFVybFN0cmF0ZWd5IHtcbiAgSW5kaWEgPSAnaW5kaWEnLFxuICBDaGluYSA9ICdjaGluYScsXG4gIERhdGFSZXNpZGVuY3lFVSA9ICdkYXRhLXJlc2lkZW5jeS1ldScsXG4gIERhdGFSZXNpZGVuY3lUUiA9ICdkYXRhLXJlc2lkZW5jeS10cicsXG4gIERhdGFSZXNpZGVuY3lVUyA9ICdkYXRhLXJlc2lkZW5jeS11cycsXG59XG5cbmV4cG9ydCBlbnVtIEFkanVzdEFkUmV2ZW51ZVNvdXJjZSB7XG4gIEFkUmV2ZW51ZVNvdXJjZUFwcExvdmluTUFYID0gJ2FwcGxvdmluX21heF9zZGsnLFxuICBBZFJldmVudWVTb3VyY2VNb3B1YiA9ICdtb3B1YicsXG4gIEFkUmV2ZW51ZVNvdXJjZUFkTW9iID0gJ2FkbW9iX3NkaycsXG4gIEFkUmV2ZW51ZVNvdXJjZUlyb25zb3VyY2UgPSAnaXJvbnNvdXJjZV9zZGsnLFxufVxuXG4vKipcbiAqIEBuYW1lIEFkanVzdFxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGlzIHRoZSBJb25pYyBDb3Jkb3ZhIFNESyBvZiBBZGp1c3TihKIuIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IEFkanVzdOKEoiBhdCBhZGp1c3QuY29tLlxuICpcbiAqIFJlcXVpcmVzIENvcmRvdmEgcGx1Z2luOiBgY29tLmFkanVzdC5zZGtgLiBGb3IgbW9yZSBpbmZvLCBwbGVhc2Ugc2VlIHRoZSBbQWRqdXN0IENvcmRvdmEgU0RLXShodHRwczovL2dpdGh1Yi5jb20vYWRqdXN0L2NvcmRvdmFfc2RrKVxuICpcbiAqIEB1c2FnZVxuICogYGBgdHlwZXNjcmlwdFxuICogIGltcG9ydCB7IEFkanVzdCwgQWRqdXN0Q29uZmlnLCBBZGp1c3RFbnZpcm9ubWVudCB9IGZyb20gJ0Bpb25pYy1uYXRpdmUvYWRqdXN0L25neCc7XG4gKlxuICogIGNvbnN0cnVjdG9yKHByaXZhdGUgYWRqdXN0OiBBZGp1c3QpIHsgfVxuICpcbiAqICAuLi5cbiAqXG4gKiAgY29uc3QgY29uZmlnID0gbmV3IEFkanVzdENvbmZpZygnQVBQLVRPS0VOLUhFUkUnLCBBZGp1c3RFbnZpcm9ubWVudC5TYW5kYm94KTtcbiAqICBjb25maWcubG9nTGV2ZWwgPSBBZGp1c3RMb2dMZXZlbC5WZXJib3NlO1xuICogIC8vIFNldCBvdGhlciBjb25maWcgcHJvcGVydGllcy5cbiAqICBhZGp1c3QuY3JlYXRlKGNvbmZpZyk7XG4gKlxuICogYGBgXG4gKiBAaW50ZXJmYWNlc1xuICogQWRqdXN0QXR0cmlidXRpb25cbiAqIEFkanVzdFNlc3Npb25TdWNjZXNzXG4gKiBBZGp1c3RTZXNzaW9uRmFpbHVyZVxuICogQWRqdXN0RXZlbnRTdWNjZXNzXG4gKiBBZGp1c3RFdmVudEZhaWx1cmVcbiAqIEBjbGFzc2VzXG4gKiBBZGp1c3RFdmVudFxuICogQWRqdXN0Q29uZmlnXG4gKiBBZGp1c3RBcHBTdG9yZVN1YnNjcmlwdGlvblxuICogQWRqdXN0UGxheVN0b3JlU3Vic2NyaXB0aW9uXG4gKiBBZGp1c3RUaGlyZFBhcnR5U2hhcmluZ1xuICogQWRqdXN0QWRSZWVudWVcbiAqIEBlbnVtc1xuICogQWRqdXN0RW52aXJvbm1lbnRcbiAqIEFkanVzdExvZ0xldmVsXG4gKiBBZGp1c3RVcmxTdHJhdGVneVxuICogQWRqdXN0QWRSZXZlbnVlU291cmNlXG4gKi9cbkBQbHVnaW4oe1xuICBwbHVnaW5OYW1lOiAnQWRqdXN0JyxcbiAgcGx1Z2luOiAnY29tLmFkanVzdC5zZGsnLFxuICBwbHVnaW5SZWY6ICdBZGp1c3QnLFxuICByZXBvOiAnaHR0cHM6Ly9naXRodWIuY29tL2FkanVzdC9jb3Jkb3ZhX3NkaycsXG4gIHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddLFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZGp1c3QgZXh0ZW5kcyBJb25pY05hdGl2ZVBsdWdpbiB7XG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyBBZGp1c3QgU0RLXG4gICAqIEBwYXJhbSB7QWRqdXN0Q29uaWd9IGNvbmZpZyBBZGp1c3QgY29uZmlnIG9iamVjdCB1c2VkIGFzIHN0YXJ0aW5nIG9wdGlvbnNcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBjcmVhdGUoY29uZmlnOiBBZGp1c3RDb25maWcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBhbiBldmVudFxuICAgKiBAcGFyYW0ge0FkanVzdEV2ZW50fSBldmVudCBBZGp1c3QgZXZlbnQgb2JqZWN0IHRvIGJlIHRyYWNrZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja0V2ZW50KGV2ZW50OiBBZGp1c3RFdmVudCk6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIEFwcCBTdG9yZSBzdWJzY3JpcHRpb25cbiAgICogQHBhcmFtIHtBZGp1c3RBcHBTdG9yZVN1YnNjcmlwdGlvbn0gc3Vic2NyaXB0aW9uIEFkanVzdCBBcHAgU3RvcmUgc3Vic2NyaXB0aW9uIG9iamVjdCB0byBiZSB0cmFja2VkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tBcHBTdG9yZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb246IEFkanVzdEFwcFN0b3JlU3Vic2NyaXB0aW9uKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgUGxheSBTdG9yZSBzdWJzY3JpcHRpb25cbiAgICogQHBhcmFtIHtBZGp1c3RQbGF5U3RvcmVTdWJzY3JpcHRpb259IHN1YnNjcmlwdGlvbiBBZGp1c3QgUGxheSBTdG9yZSBzdWJzY3JpcHRpb24gb2JqZWN0IHRvIGJlIHRyYWNrZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICB0cmFja1BsYXlTdG9yZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb246IEFkanVzdFBsYXlTdG9yZVN1YnNjcmlwdGlvbik6IHZvaWQge31cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdHJhY2tzIHRoaXJkIHBhcnR5IHNoYXJpbmcgY2hvaWNlXG4gICAqIEBwYXJhbSB7QWRqdXN0VGhpcmRQYXJ0eVNoYXJpbmd9IHRoaXJkUGFydHlTaGFyaW5nIEFkanVzdCB0aGlyZCBwYXJ0eSBzaGFyaW5nIG9iamVjdCB0byBiZSB0cmFja2VkXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tUaGlyZFBhcnR5U2hhcmluZyh0aGlyZFBhcnR5U2hhcmluZzogQWRqdXN0VGhpcmRQYXJ0eVNoYXJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBhZCByZXZlbnVlIGRhdGFcbiAgICogQHBhcmFtIHtBZGp1c3RBZFJldmVudWVTb3VyY2V9IHNvdXJjZSBBZCByZXZlbnVlIHNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF5bG9hZCBBZCByZXZlbnVlIEpTT04gc3RyaW5nIHBheWxvYWRcbiAgICovXG4gIHRyYWNrQWRSZXZlbnVlKHNvdXJjZTogQWRqdXN0QWRSZXZlbnVlU291cmNlLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgYWQgcmV2ZW51ZSBkYXRhXG4gICAqIEBwYXJhbSB7QWRqdXN0QWRSZXZlbnVlfSBhZFJldmVudWUgQWRqdXN0IGFkIHJldmVudWUgb2JqZWN0XG4gICAqL1xuICB0cmFja0FkUmV2ZW51ZShhZFJldmVudWU6IEFkanVzdEFkUmV2ZW51ZSk6IHZvaWQ7XG5cbiAgLy8gQW5kIHR5cGVzY3JpcHQgaGlkZXMgdGhpcywgc28gdGhlIGNsaWVudCB3aWxsIGJlIGFibGUgY2FsbCBvbmx5IG1ldGhvZHMgYWJvdmVcbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHRyYWNrQWRSZXZlbnVlKHNvdXJjZU9yQWRSZXZlbnVlOiBhbnksIHBheWxvYWQ/OiBhbnkpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRyYWNrcyBtZWFzdXJlbWVudCBjb25zZW50IGNob2ljZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1lYXN1cmVtZW50Q29uc2VudCBzZXQgbWVhc3VyZW1lbnQgY29uc2VudCB0byB0cnVlIG9yIGZhbHNlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdHJhY2tNZWFzdXJlbWVudENvbnNlbnQobWVhc3VyZW1lbnRDb25zZW50OiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIG9mZmxpbmUgbW9kZSBvbiBvciBvZmZcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHNldCB0byB0cnVlIGZvciBvZmZsaW5lIG1vZGUgb25cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRPZmZsaW5lTW9kZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBCeSBtYWtpbmcgdGhpcyBjYWxsLCB0aGUgQWRqdXN0IFNESyB3aWxsIHRyeSB0byBmaW5kIGlmIHRoZXJlIGlzIGFueSBuZXcgYXR0cmlidXRpb24gaW5mbyBpbnNpZGUgb2YgdGhlIGRlZXAgbGluayBhbmQgaWYgYW55LCBpdCB3aWxsIGJlIHNlbnQgdG8gdGhlIEFkanVzdCBiYWNrZW5kLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIFVSTCBvZiB0aGUgZGVlcGxpbmtcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBhcHBXaWxsT3BlblVybCh1cmw6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogWW91IGNhbiBkaXNhYmxlL2VuYWJsZSB0aGUgQWRqdXN0IFNESyBmcm9tIHRyYWNraW5nIGJ5IGludm9raW5nIHRoaXMgbWV0aG9kXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBzZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBTREtcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFRvIHNlbmQgdXMgdGhlIHB1c2ggbm90aWZpY2F0aW9uIHRva2VuLCBhZGQgdGhlIGZvbGxvd2luZyBjYWxsIHRvIEFkanVzdCB3aGVuZXZlciB5b3UgZ2V0IHlvdXIgdG9rZW4gaW4gdGhlIGFwcCBvciB3aGVuIGl0IGdldHMgdXBkYXRlZC5cbiAgICogUHVzaCB0b2tlbnMgYXJlIHVzZWQgZm9yIEF1ZGllbmNlIEJ1aWxkZXIgYW5kIGNsaWVudCBjYWxsYmFja3MsIGFuZCB0aGV5IGFyZSByZXF1aXJlZCBmb3IgdGhlIHVwY29taW5nIHVuaW5zdGFsbCB0cmFja2luZyBmZWF0dXJlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHVzaFRva2VuIHB1c2ggdG9rZW4gdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBzZXRQdXNoVG9rZW4ocHVzaFRva2VuOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBBZGp1c3QgU0RLIGlzIGN1cnJlbnRseSBlbmFibGVkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhY2NvcmRhbmNlIHdpdGggYXJ0aWNsZSAxNyBvZiB0aGUgRVUncyBHZW5lcmFsIERhdGEgUHJvdGVjdGlvbiBSZWd1bGF0aW9uIChHRFBSKSwgeW91IGNhbiBub3RpZnkgQWRqdXN0IHdoZW4gYSB1c2VyIGhhcyBleGVyY2lzZWQgdGhlaXIgcmlnaHQgdG8gYmUgZm9yZ290dGVuLlxuICAgKiBDYWxsaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kIHdpbGwgaW5zdHJ1Y3QgdGhlIEFkanVzdCBTREsgdG8gY29tbXVuaWNhdGUgdGhlIHVzZXIncyBjaG9pY2UgdG8gYmUgZm9yZ290dGVuIHRvIHRoZSBBZGp1c3QgYmFja2VuZFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGdkcHJGb3JnZXRNZSgpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gbm93IG5vdGlmeSBBZGp1c3Qgd2hlbiBhIHVzZXIgaGFzIGV4ZXJjaXNlZCB0aGVpciByaWdodCB0byBzdG9wIHNoYXJpbmcgdGhlaXIgZGF0YSB3aXRoIHBhcnRuZXJzIGZvciBtYXJrZXRpbmcgcHVycG9zZXMsIGJ1dCBoYXMgYWxsb3dlZCBpdCB0byBiZSBzaGFyZWQgZm9yIHN0YXRpc3RpY3MgcHVycG9zZXMuXG4gICAqIENhbGxpbmcgdGhlIGZvbGxvd2luZyBtZXRob2Qgd2lsbCBpbnN0cnVjdCB0aGUgQWRqdXN0IFNESyB0byBjb21tdW5pY2F0ZSB0aGUgdXNlcidzIGNob2ljZSB0byBkaXNhYmxlIGRhdGEgc2hhcmluZyB0byB0aGUgQWRqdXN0IGJhY2tlbmRcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBkaXNhYmxlVGhpcmRQYXJ0eVNoYXJpbmcoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGdldCBHb29nbGUgQWRJZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFJldHVybnMgYSBwcm9taXNlIHdpdGggZ29vZ2xlIEFkSWQgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0R29vZ2xlQWRJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB5b3UgbmVlZCB0byBvYnRhaW4gdGhlIEFtYXpvbiBBZHZlcnRpc2luZyBJRCwgeW91IGNhbiBtYWtlIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFJldHVybnMgYSBwcm9taXNlIHdpdGggYW5hemliIGFkdi4gSURcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QW1hem9uQWRJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBvYnRhaW4gdGhlIElERkEsIGNhbGwgdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFJldHVybnMgYSBwcm9taXNlIHdpdGggSURGQSBzdHJpbmcgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0SWRmYSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgZXZlcnkgZGV2aWNlIHdpdGggeW91ciBhcHAgaW5zdGFsbGVkIG9uIGl0LCB0aGUgQWRqdXN0IGJhY2tlbmQgZ2VuZXJhdGVzIGEgdW5pcXVlIEFkanVzdCBkZXZpY2UgaWRlbnRpZmllciAoYWRpZCkuXG4gICAqIEluIG9yZGVyIHRvIG9idGFpbiB0aGlzIGlkZW50aWZpZXIsIGNhbGwgdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFJldHVybnMgYSBwcm9taXNlIHdpdGggYWRpZCB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBZGlkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHlvdSB3YW50IHRvIGFjY2VzcyBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIncyBjdXJyZW50IGF0dHJpYnV0aW9uIHdoZW5ldmVyIHlvdSBuZWVkIGl0LCB5b3UgY2FuIG1ha2UgYSBjYWxsIHRvIHRoaXMgZnVuY3Rpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxBZGp1c3RBdHRyaWJ1dGlvbj59IFJldHVybnMgYSBwcm9taXNlIHdpdGggQWRqdXN0QXR0cmlidXRpb24gb2JqZWN0XG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEF0dHJpYnV0aW9uKCk6IFByb21pc2U8QWRqdXN0QXR0cmlidXRpb24+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB2ZXJzaW9uIG9mIHRoZSBTREsgdXNlZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFJldHVybnMgYSBwcm9taXNlIHdpdGggc2RrIHZlcnNpb24gaW5mb3JtYXRpb25cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0U2RrVmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCB0byBhZGQgc2Vzc2lvbiBjYWxsYmFjayBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBrZXkga2V5XG4gICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZVxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGFkZFNlc3Npb25DYWxsYmFja1BhcmFtZXRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVtb3ZlIGEgc3BlY2lmaWMgc2Vzc2lvbiBjYWxsYmFjayBwYXJhbWV0ZXIgYnkgcGFzc2luZyB0aGUgZGVzaXJpbmcga2V5IHRvIHRoaXMgbWV0aG9kXG4gICAqIEBwYXJhbSBrZXkga2V5XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgcmVtb3ZlU2Vzc2lvbkNhbGxiYWNrUGFyYW1ldGVyKGtleTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBJZiBhbGwga2V5cyBhbmQgdmFsdWVzIGZyb20gdGhlIHNlc3Npb24gY2FsbGJhY2sgcGFyYW1ldGVycyBoYXZlIHRvIGJlIHJlbW92ZWQsIGNhbGwgdGhpcyBtZXRob2RcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZXNldFNlc3Npb25DYWxsYmFja1BhcmFtZXRlcnMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCB0byBhZGQgc2Vzc2lvbiBwYXJ0bmVyIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIGtleSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgYWRkU2Vzc2lvblBhcnRuZXJQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHNwZWNpZmljIHNlc3Npb24gcGFydG5lciBwYXJhbWV0ZXIgYnkgcGFzc2luZyB0aGUgZGVzaXJpbmcga2V5IHRvIHRoaXMgbWV0aG9kXG4gICAqIEBwYXJhbSBrZXkga2V5XG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgcmVtb3ZlU2Vzc2lvblBhcnRuZXJQYXJhbWV0ZXIoa2V5OiBzdHJpbmcpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIElmIGFsbCBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgc2Vzc2lvbiBwYXJ0bmVyIHBhcmFtZXRlcnMgaGF2ZSB0byBiZSByZW1vdmVkLCBjYWxsIHRoaXMgbWV0aG9kXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgcmVzZXRTZXNzaW9uUGFydG5lclBhcmFtZXRlcnMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBjYWxsIHdpbGwgbWFrZSB0aGUgQWRqdXN0IFNESyBzZW5kIHRoZSBpbml0aWFsIGluc3RhbGwgc2Vzc2lvbiBhbmQgYW55IGV2ZW50cyBjcmVhdGVkLCBpZiB0aGV5IHdlcmUgbm90IHNlbnQgYWZ0ZXIgZGVsYXkgc3RhcnQgd2FzIHNldCBhbmQgaXQncyBkZWxheSBleHBpcmVkLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIHNlbmRGaXJzdFBhY2thZ2VzKCk6IHZvaWQge31cblxuICAvKipcbiAgICogUmVxdWVzdCBBZGp1c3QgU0RLIHRvIHNob3cgcG9wIHVwIGRpYWxvZyBmb3IgYXNraW5nIHVzZXIncyBjb25zZW50IHRvIGJlIHRyYWNrZWQuXG4gICAqIEluIG9yZGVyIHRvIGRvIHRoaXMsIGNhbGwgdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPG51bWJlcj59IFJldHVybnMgYSBwcm9taXNlIHdpdGggdXNlcidzIGNvbnNlbnQgdmFsdWVcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgcmVxdWVzdFRyYWNraW5nQXV0aG9yaXphdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHVwZGF0ZSBTS0FkTmV0d29yayBjb252ZXJzaW9uIHZhbHVlIHdpdGggY2FsbGluZyB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0ge251bWJlcn0gY29udmVyc2lvblZhbHVlIGNvbnZlcnNpb24gdmFsdWUgZm9yIHRoZSB1c2VyXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgdXBkYXRlQ29udmVyc2lvblZhbHVlKGNvbnZlcnNpb25WYWx1ZTogbnVtYmVyKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBUbyBvYnRhaW4gdGhlIGFwcCB0cmFja2luZyBhdXRob3JpemF0aW9uIHN0YXR1cyBpbiBpT1MsIGNhbGwgdGhpcyBmdW5jdGlvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPG51bWJlcj59IFJldHVybnMgYSBwcm9taXNlIHdpdGggYXBwIHRyYWNraW5nIGF1dGhvcml6YXRpb24gc3RhdHVzXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFwcFRyYWNraW5nQXV0aG9yaXphdGlvblN0YXR1cygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybjtcbiAgfVxufVxuIl19

@@ -1,1 +0,1 @@

[{"__symbolic":"module","version":4,"metadata":{"AdjustEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"setRevenue":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}],"setTransactionId":[{"__symbolic":"method"}],"setCallbackId":[{"__symbolic":"method"}]}},"AdjustConfig":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":73,"character":45,"context":{"typeName":"AdjustEnvironment"}}]}],"setAppSecret":[{"__symbolic":"method"}],"setDelayStart":[{"__symbolic":"method"}],"setLogLevel":[{"__symbolic":"method"}],"setDefaultTracker":[{"__symbolic":"method"}],"setExternalDeviceId":[{"__symbolic":"method"}],"setUrlStrategy":[{"__symbolic":"method"}],"setSendInBackground":[{"__symbolic":"method"}],"setShouldLaunchDeeplink":[{"__symbolic":"method"}],"setEventBufferingEnabled":[{"__symbolic":"method"}],"setUserAgent":[{"__symbolic":"method"}],"setDeviceKnown":[{"__symbolic":"method"}],"setNeedsCost":[{"__symbolic":"method"}],"setProcessName":[{"__symbolic":"method"}],"setPreinstallTrackingEnabled":[{"__symbolic":"method"}],"setAllowiAdInfoReading":[{"__symbolic":"method"}],"setAllowIdfaReading":[{"__symbolic":"method"}],"setAllowAdServicesInfoReading":[{"__symbolic":"method"}],"setAttributionCallbackListener":[{"__symbolic":"method"}],"setEventTrackingSucceededCallbackListener":[{"__symbolic":"method"}],"setEventTrackingFailedCallbackListener":[{"__symbolic":"method"}],"setSessionTrackingSucceededCallbackListener":[{"__symbolic":"method"}],"setSessionTrackingFailedCallbackListener":[{"__symbolic":"method"}],"setDeferredDeeplinkCallbackListener":[{"__symbolic":"method"}],"getAttributionCallback":[{"__symbolic":"method"}],"getEventTrackingSucceededCallback":[{"__symbolic":"method"}],"getEventTrackingFailedCallback":[{"__symbolic":"method"}],"getSessionTrackingSucceededCallback":[{"__symbolic":"method"}],"getSessionTrackingFailedCallback":[{"__symbolic":"method"}],"getDeferredDeeplinkCallback":[{"__symbolic":"method"}],"hasAttributionListener":[{"__symbolic":"method"}],"hasEventTrackingSucceededListener":[{"__symbolic":"method"}],"hasEventTrackingFailedListener":[{"__symbolic":"method"}],"hasSessionTrackingSucceededListener":[{"__symbolic":"method"}],"hasSessionTrackingFailedListener":[{"__symbolic":"method"}],"hasDeferredDeeplinkCallbackListener":[{"__symbolic":"method"}]}},"AdjustAppStoreSubscription":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}],"setTransactionDate":[{"__symbolic":"method"}],"setSalesRegion":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}]}},"AdjustPlayStoreSubscription":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}],"setPurchaseTime":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}]}},"AdjustThirdPartySharing":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"boolean"}]}],"addGranularOption":[{"__symbolic":"method"}]}},"AdjustAttribution":{"__symbolic":"interface"},"AdjustSessionSuccess":{"__symbolic":"interface"},"AdjustSessionFailure":{"__symbolic":"interface"},"AdjustEventSuccess":{"__symbolic":"interface"},"AdjustEventFailure":{"__symbolic":"interface"},"AdjustEnvironment":{"Sandbox":"sandbox","Production":"production"},"AdjustLogLevel":{"Verbose":"VERBOSE","Debug":"DEBUG","Info":"INFO","Warn":"WARN","Error":"ERROR","Assert":"ASSERT","Suppress":"SUPPRESS"},"AdjustUrlStrategy":{"India":"India","China":"China"},"AdjustAdRevenueSource":{"AdRevenueSourceMopub":"mopub","AdRevenueSourceAdmob":"admob","AdRevenueSourceFbNativeAd":"facebook_native_ad","AdRevenueSourceFbAudienceNetwork":"facebook_audience_network","AdRevenueSourceIronsource":"ironsource","AdRevenueSourceFyber":"fyber","AdRevenueSourceAerserv":"aerserv","AdRevenueSourceAppodeal":"appodeal","AdRevenueSourceAdincube":"adincube","AdRevenueSourceFusePowered":"fusepowered","AdRevenueSourceAddapptr":"addapptr","AdRevenueSourceMillennialMediation":"millennial_mediation","AdRevenueSourceFlurry":"flurry","AdRevenueSourceAdmost":"admost","AdRevenueSourceDeltadna":"deltadna","AdRevenueSourceUpsight":"upsight","AdRevenueSourceUnityAds":"unityads","AdRevenueSourceAdtoapp":"adtoapp","AdRevenueSourceTapdaq":"tapdaq"},"Adjust":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ionic-native/core","name":"IonicNativePlugin","line":448,"character":28},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":447,"character":1}}],"members":{"create":[{"__symbolic":"method"}],"trackEvent":[{"__symbolic":"method"}],"trackAppStoreSubscription":[{"__symbolic":"method"}],"trackPlayStoreSubscription":[{"__symbolic":"method"}],"trackThirdPartySharing":[{"__symbolic":"method"}],"trackAdRevenue":[{"__symbolic":"method"}],"trackMeasurementConsent":[{"__symbolic":"method"}],"setOfflineMode":[{"__symbolic":"method"}],"appWillOpenUrl":[{"__symbolic":"method"}],"setEnabled":[{"__symbolic":"method"}],"setPushToken":[{"__symbolic":"method"}],"isEnabled":[{"__symbolic":"method"}],"gdprForgetMe":[{"__symbolic":"method"}],"disableThirdPartySharing":[{"__symbolic":"method"}],"getGoogleAdId":[{"__symbolic":"method"}],"getAmazonAdId":[{"__symbolic":"method"}],"getIdfa":[{"__symbolic":"method"}],"getAdid":[{"__symbolic":"method"}],"getAttribution":[{"__symbolic":"method"}],"getSdkVersion":[{"__symbolic":"method"}],"addSessionCallbackParameter":[{"__symbolic":"method"}],"removeSessionCallbackParameter":[{"__symbolic":"method"}],"resetSessionCallbackParameters":[{"__symbolic":"method"}],"addSessionPartnerParameter":[{"__symbolic":"method"}],"removeSessionPartnerParameter":[{"__symbolic":"method"}],"resetSessionPartnerParameters":[{"__symbolic":"method"}],"sendFirstPackages":[{"__symbolic":"method"}],"requestTrackingAuthorizationWithCompletionHandler":[{"__symbolic":"method"}],"updateConversionValue":[{"__symbolic":"method"}],"getAppTrackingAuthorizationStatus":[{"__symbolic":"method"}]}}}}]
[{"__symbolic":"module","version":4,"metadata":{"AdjustEvent":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"setRevenue":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}],"setTransactionId":[{"__symbolic":"method"}],"setCallbackId":[{"__symbolic":"method"}]}},"AdjustConfig":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Could not resolve type","line":75,"character":45,"context":{"typeName":"AdjustEnvironment"}}]}],"setAppSecret":[{"__symbolic":"method"}],"setDelayStart":[{"__symbolic":"method"}],"setLogLevel":[{"__symbolic":"method"}],"setDefaultTracker":[{"__symbolic":"method"}],"setExternalDeviceId":[{"__symbolic":"method"}],"setUrlStrategy":[{"__symbolic":"method"}],"setSendInBackground":[{"__symbolic":"method"}],"setShouldLaunchDeeplink":[{"__symbolic":"method"}],"setEventBufferingEnabled":[{"__symbolic":"method"}],"setUserAgent":[{"__symbolic":"method"}],"setDeviceKnown":[{"__symbolic":"method"}],"setNeedsCost":[{"__symbolic":"method"}],"setProcessName":[{"__symbolic":"method"}],"setPreinstallTrackingEnabled":[{"__symbolic":"method"}],"setPreinstallFilePath":[{"__symbolic":"method"}],"setAllowiAdInfoReading":[{"__symbolic":"method"}],"setAllowIdfaReading":[{"__symbolic":"method"}],"setAllowAdServicesInfoReading":[{"__symbolic":"method"}],"setAttributionCallbackListener":[{"__symbolic":"method"}],"setEventTrackingSucceededCallbackListener":[{"__symbolic":"method"}],"setEventTrackingFailedCallbackListener":[{"__symbolic":"method"}],"setSessionTrackingSucceededCallbackListener":[{"__symbolic":"method"}],"setSessionTrackingFailedCallbackListener":[{"__symbolic":"method"}],"setDeferredDeeplinkCallbackListener":[{"__symbolic":"method"}],"setConversionValueUpdatedCallbackListener":[{"__symbolic":"method"}],"getAttributionCallback":[{"__symbolic":"method"}],"getEventTrackingSucceededCallback":[{"__symbolic":"method"}],"getEventTrackingFailedCallback":[{"__symbolic":"method"}],"getSessionTrackingSucceededCallback":[{"__symbolic":"method"}],"getSessionTrackingFailedCallback":[{"__symbolic":"method"}],"getDeferredDeeplinkCallback":[{"__symbolic":"method"}],"getConversionValueUpdatedCallback":[{"__symbolic":"method"}],"hasAttributionListener":[{"__symbolic":"method"}],"hasEventTrackingSucceededListener":[{"__symbolic":"method"}],"hasEventTrackingFailedListener":[{"__symbolic":"method"}],"hasSessionTrackingSucceededListener":[{"__symbolic":"method"}],"hasSessionTrackingFailedListener":[{"__symbolic":"method"}],"hasDeferredDeeplinkCallbackListener":[{"__symbolic":"method"}]}},"AdjustAppStoreSubscription":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}],"setTransactionDate":[{"__symbolic":"method"}],"setSalesRegion":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}]}},"AdjustPlayStoreSubscription":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}],"setPurchaseTime":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}]}},"AdjustThirdPartySharing":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"boolean"}]}],"addGranularOption":[{"__symbolic":"method"}]}},"AdjustAdRevenue":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"setRevenue":[{"__symbolic":"method"}],"addCallbackParameter":[{"__symbolic":"method"}],"addPartnerParameter":[{"__symbolic":"method"}],"setAdImpressionsCount":[{"__symbolic":"method"}],"setAdRevenueNetwork":[{"__symbolic":"method"}],"setAdRevenueUnit":[{"__symbolic":"method"}],"setAdRevenuePlacement":[{"__symbolic":"method"}]}},"AdjustAttribution":{"__symbolic":"interface"},"AdjustSessionSuccess":{"__symbolic":"interface"},"AdjustSessionFailure":{"__symbolic":"interface"},"AdjustEventSuccess":{"__symbolic":"interface"},"AdjustEventFailure":{"__symbolic":"interface"},"AdjustEnvironment":{"Sandbox":"sandbox","Production":"production"},"AdjustLogLevel":{"Verbose":"VERBOSE","Debug":"DEBUG","Info":"INFO","Warn":"WARN","Error":"ERROR","Assert":"ASSERT","Suppress":"SUPPRESS"},"AdjustUrlStrategy":{"India":"india","China":"china","DataResidencyEU":"data-residency-eu","DataResidencyTR":"data-residency-tr","DataResidencyUS":"data-residency-us"},"AdjustAdRevenueSource":{"AdRevenueSourceAppLovinMAX":"applovin_max_sdk","AdRevenueSourceMopub":"mopub","AdRevenueSourceAdMob":"admob_sdk","AdRevenueSourceIronsource":"ironsource_sdk"},"Adjust":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ionic-native/core","name":"IonicNativePlugin","line":498,"character":28},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":497,"character":1}}],"members":{"create":[{"__symbolic":"method"}],"trackEvent":[{"__symbolic":"method"}],"trackAppStoreSubscription":[{"__symbolic":"method"}],"trackPlayStoreSubscription":[{"__symbolic":"method"}],"trackThirdPartySharing":[{"__symbolic":"method"}],"trackAdRevenue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ionic-native/core","name":"Cordova","line":548,"character":3},"arguments":[{"sync":true}]}]}],"trackMeasurementConsent":[{"__symbolic":"method"}],"setOfflineMode":[{"__symbolic":"method"}],"appWillOpenUrl":[{"__symbolic":"method"}],"setEnabled":[{"__symbolic":"method"}],"setPushToken":[{"__symbolic":"method"}],"isEnabled":[{"__symbolic":"method"}],"gdprForgetMe":[{"__symbolic":"method"}],"disableThirdPartySharing":[{"__symbolic":"method"}],"getGoogleAdId":[{"__symbolic":"method"}],"getAmazonAdId":[{"__symbolic":"method"}],"getIdfa":[{"__symbolic":"method"}],"getAdid":[{"__symbolic":"method"}],"getAttribution":[{"__symbolic":"method"}],"getSdkVersion":[{"__symbolic":"method"}],"addSessionCallbackParameter":[{"__symbolic":"method"}],"removeSessionCallbackParameter":[{"__symbolic":"method"}],"resetSessionCallbackParameters":[{"__symbolic":"method"}],"addSessionPartnerParameter":[{"__symbolic":"method"}],"removeSessionPartnerParameter":[{"__symbolic":"method"}],"resetSessionPartnerParameters":[{"__symbolic":"method"}],"sendFirstPackages":[{"__symbolic":"method"}],"requestTrackingAuthorizationWithCompletionHandler":[{"__symbolic":"method"}],"updateConversionValue":[{"__symbolic":"method"}],"getAppTrackingAuthorizationStatus":[{"__symbolic":"method"}]}}}}]

@@ -1,1 +0,1 @@

{"description":"Ionic Native - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/ionic-team/ionic-native.git"},"name":"@ionic-native/adjust","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0","@ionic-native/core":"^5.1.0"},"version":"5.35.0"}
{"description":"Ionic Native - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/ionic-team/ionic-native.git"},"name":"@ionic-native/adjust","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0","@ionic-native/core":"^5.1.0"},"version":"5.36.0"}

@@ -1,1 +0,1 @@

{"description":"Ionic Native - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/ionic-team/ionic-native.git"},"name":"@ionic-native/adjust","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0","@ionic-native/core":"^5.1.0"},"version":"5.35.0"}
{"description":"Ionic Native - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/ionic-team/ionic-native.git"},"name":"@ionic-native/adjust","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0","@ionic-native/core":"^5.1.0"},"version":"5.36.0"}

@@ -1,2 +0,2 @@

<a style="float:right;font-size:12px;" href="http://github.com/ionic-team/ionic-native/edit/master/src/@ionic-native/plugins/adjust/index.ts#L399">
<a style="float:right;font-size:12px;" href="http://github.com/ionic-team/ionic-native/edit/master/src/@ionic-native/plugins/adjust/index.ts#L448">
Improve this doc

@@ -3,0 +3,0 @@ </a>

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc