@cdktf/provider-aws
Version:
Prebuilt aws Provider for Terraform CDK (cdktf)
476 lines • 74.3 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lexv2ModelsIntent = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
// generated from terraform resource schema
const index_structs_1 = require("./index-structs");
__exportStar(require("./index-structs"), exports);
const cdktf = require("cdktf");
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/5.84.0/docs/resources/lexv2models_intent aws_lexv2models_intent}
*/
class Lexv2ModelsIntent extends cdktf.TerraformResource {
// ==============
// STATIC Methods
// ==============
/**
* Generates CDKTF code for importing a Lexv2ModelsIntent resource upon running "cdktf plan <stack-name>"
* @param scope The scope in which to define this construct
* @param importToId The construct id used in the generated config for the Lexv2ModelsIntent to import
* @param importFromId The id of the existing Lexv2ModelsIntent that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/5.84.0/docs/resources/lexv2models_intent#import import section} in the documentation of this resource for the id to use
* @param provider? Optional instance of the provider where the Lexv2ModelsIntent to import is found
*/
static generateConfigForImport(scope, importToId, importFromId, provider) {
return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "aws_lexv2models_intent", importId: importFromId, provider });
}
// ===========
// INITIALIZER
// ===========
/**
* Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/5.84.0/docs/resources/lexv2models_intent aws_lexv2models_intent} Resource
*
* @param scope The scope in which to define this construct
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
* @param options Lexv2ModelsIntentConfig
*/
constructor(scope, id, config) {
super(scope, id, {
terraformResourceType: 'aws_lexv2models_intent',
terraformGeneratorMetadata: {
providerName: 'aws',
providerVersion: '5.84.0',
providerVersionConstraint: '~> 5.0'
},
provider: config.provider,
dependsOn: config.dependsOn,
count: config.count,
lifecycle: config.lifecycle,
provisioners: config.provisioners,
connection: config.connection,
forEach: config.forEach
});
// closing_setting - computed: false, optional: true, required: false
this._closingSetting = new index_structs_1.Lexv2ModelsIntentClosingSettingList(this, "closing_setting", false);
// confirmation_setting - computed: false, optional: true, required: false
this._confirmationSetting = new index_structs_1.Lexv2ModelsIntentConfirmationSettingList(this, "confirmation_setting", false);
// dialog_code_hook - computed: false, optional: true, required: false
this._dialogCodeHook = new index_structs_1.Lexv2ModelsIntentDialogCodeHookList(this, "dialog_code_hook", false);
// fulfillment_code_hook - computed: false, optional: true, required: false
this._fulfillmentCodeHook = new index_structs_1.Lexv2ModelsIntentFulfillmentCodeHookList(this, "fulfillment_code_hook", false);
// initial_response_setting - computed: false, optional: true, required: false
this._initialResponseSetting = new index_structs_1.Lexv2ModelsIntentInitialResponseSettingList(this, "initial_response_setting", false);
// input_context - computed: false, optional: true, required: false
this._inputContext = new index_structs_1.Lexv2ModelsIntentInputContextList(this, "input_context", false);
// kendra_configuration - computed: false, optional: true, required: false
this._kendraConfiguration = new index_structs_1.Lexv2ModelsIntentKendraConfigurationList(this, "kendra_configuration", false);
// output_context - computed: false, optional: true, required: false
this._outputContext = new index_structs_1.Lexv2ModelsIntentOutputContextList(this, "output_context", false);
// sample_utterance - computed: false, optional: true, required: false
this._sampleUtterance = new index_structs_1.Lexv2ModelsIntentSampleUtteranceList(this, "sample_utterance", false);
// slot_priority - computed: false, optional: true, required: false
this._slotPriority = new index_structs_1.Lexv2ModelsIntentSlotPriorityList(this, "slot_priority", false);
// timeouts - computed: false, optional: true, required: false
this._timeouts = new index_structs_1.Lexv2ModelsIntentTimeoutsOutputReference(this, "timeouts");
this._botId = config.botId;
this._botVersion = config.botVersion;
this._description = config.description;
this._localeId = config.localeId;
this._name = config.name;
this._parentIntentSignature = config.parentIntentSignature;
this._closingSetting.internalValue = config.closingSetting;
this._confirmationSetting.internalValue = config.confirmationSetting;
this._dialogCodeHook.internalValue = config.dialogCodeHook;
this._fulfillmentCodeHook.internalValue = config.fulfillmentCodeHook;
this._initialResponseSetting.internalValue = config.initialResponseSetting;
this._inputContext.internalValue = config.inputContext;
this._kendraConfiguration.internalValue = config.kendraConfiguration;
this._outputContext.internalValue = config.outputContext;
this._sampleUtterance.internalValue = config.sampleUtterance;
this._slotPriority.internalValue = config.slotPriority;
this._timeouts.internalValue = config.timeouts;
}
get botId() {
return this.getStringAttribute('bot_id');
}
set botId(value) {
this._botId = value;
}
// Temporarily expose input value. Use with caution.
get botIdInput() {
return this._botId;
}
get botVersion() {
return this.getStringAttribute('bot_version');
}
set botVersion(value) {
this._botVersion = value;
}
// Temporarily expose input value. Use with caution.
get botVersionInput() {
return this._botVersion;
}
// creation_date_time - computed: true, optional: false, required: false
get creationDateTime() {
return this.getStringAttribute('creation_date_time');
}
get description() {
return this.getStringAttribute('description');
}
set description(value) {
this._description = value;
}
resetDescription() {
this._description = undefined;
}
// Temporarily expose input value. Use with caution.
get descriptionInput() {
return this._description;
}
// id - computed: true, optional: false, required: false
get id() {
return this.getStringAttribute('id');
}
// intent_id - computed: true, optional: false, required: false
get intentId() {
return this.getStringAttribute('intent_id');
}
// last_updated_date_time - computed: true, optional: false, required: false
get lastUpdatedDateTime() {
return this.getStringAttribute('last_updated_date_time');
}
get localeId() {
return this.getStringAttribute('locale_id');
}
set localeId(value) {
this._localeId = value;
}
// Temporarily expose input value. Use with caution.
get localeIdInput() {
return this._localeId;
}
get name() {
return this.getStringAttribute('name');
}
set name(value) {
this._name = value;
}
// Temporarily expose input value. Use with caution.
get nameInput() {
return this._name;
}
get parentIntentSignature() {
return this.getStringAttribute('parent_intent_signature');
}
set parentIntentSignature(value) {
this._parentIntentSignature = value;
}
resetParentIntentSignature() {
this._parentIntentSignature = undefined;
}
// Temporarily expose input value. Use with caution.
get parentIntentSignatureInput() {
return this._parentIntentSignature;
}
get closingSetting() {
return this._closingSetting;
}
putClosingSetting(value) {
this._closingSetting.internalValue = value;
}
resetClosingSetting() {
this._closingSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get closingSettingInput() {
return this._closingSetting.internalValue;
}
get confirmationSetting() {
return this._confirmationSetting;
}
putConfirmationSetting(value) {
this._confirmationSetting.internalValue = value;
}
resetConfirmationSetting() {
this._confirmationSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get confirmationSettingInput() {
return this._confirmationSetting.internalValue;
}
get dialogCodeHook() {
return this._dialogCodeHook;
}
putDialogCodeHook(value) {
this._dialogCodeHook.internalValue = value;
}
resetDialogCodeHook() {
this._dialogCodeHook.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get dialogCodeHookInput() {
return this._dialogCodeHook.internalValue;
}
get fulfillmentCodeHook() {
return this._fulfillmentCodeHook;
}
putFulfillmentCodeHook(value) {
this._fulfillmentCodeHook.internalValue = value;
}
resetFulfillmentCodeHook() {
this._fulfillmentCodeHook.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get fulfillmentCodeHookInput() {
return this._fulfillmentCodeHook.internalValue;
}
get initialResponseSetting() {
return this._initialResponseSetting;
}
putInitialResponseSetting(value) {
this._initialResponseSetting.internalValue = value;
}
resetInitialResponseSetting() {
this._initialResponseSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get initialResponseSettingInput() {
return this._initialResponseSetting.internalValue;
}
get inputContext() {
return this._inputContext;
}
putInputContext(value) {
this._inputContext.internalValue = value;
}
resetInputContext() {
this._inputContext.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get inputContextInput() {
return this._inputContext.internalValue;
}
get kendraConfiguration() {
return this._kendraConfiguration;
}
putKendraConfiguration(value) {
this._kendraConfiguration.internalValue = value;
}
resetKendraConfiguration() {
this._kendraConfiguration.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get kendraConfigurationInput() {
return this._kendraConfiguration.internalValue;
}
get outputContext() {
return this._outputContext;
}
putOutputContext(value) {
this._outputContext.internalValue = value;
}
resetOutputContext() {
this._outputContext.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get outputContextInput() {
return this._outputContext.internalValue;
}
get sampleUtterance() {
return this._sampleUtterance;
}
putSampleUtterance(value) {
this._sampleUtterance.internalValue = value;
}
resetSampleUtterance() {
this._sampleUtterance.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get sampleUtteranceInput() {
return this._sampleUtterance.internalValue;
}
get slotPriority() {
return this._slotPriority;
}
putSlotPriority(value) {
this._slotPriority.internalValue = value;
}
resetSlotPriority() {
this._slotPriority.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get slotPriorityInput() {
return this._slotPriority.internalValue;
}
get timeouts() {
return this._timeouts;
}
putTimeouts(value) {
this._timeouts.internalValue = value;
}
resetTimeouts() {
this._timeouts.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get timeoutsInput() {
return this._timeouts.internalValue;
}
// =========
// SYNTHESIS
// =========
synthesizeAttributes() {
return {
bot_id: cdktf.stringToTerraform(this._botId),
bot_version: cdktf.stringToTerraform(this._botVersion),
description: cdktf.stringToTerraform(this._description),
locale_id: cdktf.stringToTerraform(this._localeId),
name: cdktf.stringToTerraform(this._name),
parent_intent_signature: cdktf.stringToTerraform(this._parentIntentSignature),
closing_setting: cdktf.listMapper(index_structs_1.lexv2ModelsIntentClosingSettingToTerraform, true)(this._closingSetting.internalValue),
confirmation_setting: cdktf.listMapper(index_structs_1.lexv2ModelsIntentConfirmationSettingToTerraform, true)(this._confirmationSetting.internalValue),
dialog_code_hook: cdktf.listMapper(index_structs_1.lexv2ModelsIntentDialogCodeHookToTerraform, true)(this._dialogCodeHook.internalValue),
fulfillment_code_hook: cdktf.listMapper(index_structs_1.lexv2ModelsIntentFulfillmentCodeHookToTerraform, true)(this._fulfillmentCodeHook.internalValue),
initial_response_setting: cdktf.listMapper(index_structs_1.lexv2ModelsIntentInitialResponseSettingToTerraform, true)(this._initialResponseSetting.internalValue),
input_context: cdktf.listMapper(index_structs_1.lexv2ModelsIntentInputContextToTerraform, true)(this._inputContext.internalValue),
kendra_configuration: cdktf.listMapper(index_structs_1.lexv2ModelsIntentKendraConfigurationToTerraform, true)(this._kendraConfiguration.internalValue),
output_context: cdktf.listMapper(index_structs_1.lexv2ModelsIntentOutputContextToTerraform, true)(this._outputContext.internalValue),
sample_utterance: cdktf.listMapper(index_structs_1.lexv2ModelsIntentSampleUtteranceToTerraform, true)(this._sampleUtterance.internalValue),
slot_priority: cdktf.listMapper(index_structs_1.lexv2ModelsIntentSlotPriorityToTerraform, true)(this._slotPriority.internalValue),
timeouts: (0, index_structs_1.lexv2ModelsIntentTimeoutsToTerraform)(this._timeouts.internalValue),
};
}
synthesizeHclAttributes() {
const attrs = {
bot_id: {
value: cdktf.stringToHclTerraform(this._botId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
bot_version: {
value: cdktf.stringToHclTerraform(this._botVersion),
isBlock: false,
type: "simple",
storageClassType: "string",
},
description: {
value: cdktf.stringToHclTerraform(this._description),
isBlock: false,
type: "simple",
storageClassType: "string",
},
locale_id: {
value: cdktf.stringToHclTerraform(this._localeId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
name: {
value: cdktf.stringToHclTerraform(this._name),
isBlock: false,
type: "simple",
storageClassType: "string",
},
parent_intent_signature: {
value: cdktf.stringToHclTerraform(this._parentIntentSignature),
isBlock: false,
type: "simple",
storageClassType: "string",
},
closing_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentClosingSettingToHclTerraform, true)(this._closingSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentClosingSettingList",
},
confirmation_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentConfirmationSettingToHclTerraform, true)(this._confirmationSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentConfirmationSettingList",
},
dialog_code_hook: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentDialogCodeHookToHclTerraform, true)(this._dialogCodeHook.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentDialogCodeHookList",
},
fulfillment_code_hook: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentFulfillmentCodeHookToHclTerraform, true)(this._fulfillmentCodeHook.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentFulfillmentCodeHookList",
},
initial_response_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentInitialResponseSettingToHclTerraform, true)(this._initialResponseSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentInitialResponseSettingList",
},
input_context: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentInputContextToHclTerraform, true)(this._inputContext.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentInputContextList",
},
kendra_configuration: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentKendraConfigurationToHclTerraform, true)(this._kendraConfiguration.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentKendraConfigurationList",
},
output_context: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentOutputContextToHclTerraform, true)(this._outputContext.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentOutputContextList",
},
sample_utterance: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentSampleUtteranceToHclTerraform, true)(this._sampleUtterance.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentSampleUtteranceList",
},
slot_priority: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsIntentSlotPriorityToHclTerraform, true)(this._slotPriority.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsIntentSlotPriorityList",
},
timeouts: {
value: (0, index_structs_1.lexv2ModelsIntentTimeoutsToHclTerraform)(this._timeouts.internalValue),
isBlock: true,
type: "struct",
storageClassType: "Lexv2ModelsIntentTimeouts",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
}
exports.Lexv2ModelsIntent = Lexv2ModelsIntent;
_a = JSII_RTTI_SYMBOL_1;
Lexv2ModelsIntent[_a] = { fqn: "@cdktf/provider-aws.lexv2ModelsIntent.Lexv2ModelsIntent", version: "19.50.0" };
// =================
// STATIC PROPERTIES
// =================
Lexv2ModelsIntent.tfResourceType = "aws_lexv2models_intent";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGV4djJtb2RlbHMtaW50ZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0dBR0c7QUFFSCwyQ0FBMkM7QUFFM0MsbURBMkNnRTtBQUNoRSxrREFBK0I7QUFFL0IsK0JBQStCO0FBOEYvQjs7RUFFRTtBQUNGLE1BQWEsaUJBQWtCLFNBQVEsS0FBSyxDQUFDLGlCQUFpQjtJQU81RCxpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQjs7Ozs7O01BTUU7SUFDSyxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBZ0IsRUFBRSxVQUFrQixFQUFFLFlBQW9CLEVBQUUsUUFBa0M7UUFDOUgsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2hKLENBQUM7SUFFTCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFFZDs7Ozs7O01BTUU7SUFDRixZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxNQUErQjtRQUM5RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLHFCQUFxQixFQUFFLHdCQUF3QjtZQUMvQywwQkFBMEIsRUFBRTtnQkFDMUIsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLGVBQWUsRUFBRSxRQUFRO2dCQUN6Qix5QkFBeUIsRUFBRSxRQUFRO2FBQ3BDO1lBQ0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLFlBQVksRUFBRSxNQUFNLENBQUMs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QUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztnQkFDckgsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osZ0JBQWdCLEVBQUUsc0NBQXNDO2FBQ3pEO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLDJEQUEyQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUMvRyxPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsTUFBTTtnQkFDWixnQkFBZ0IsRUFBRSxtQ0FBbUM7YUFDdEQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLElBQUEsdURBQXVDLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQzVFLE9BQU8sRUFBRSxJQUFJO2dCQUNiLElBQUksRUFBRSxRQUFRO2dCQUNkLGdCQUFnQixFQUFFLDJCQUEyQjthQUM5QztTQUNGLENBQUM7UUFFRiw4QkFBOEI7UUFDOUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUUsQ0FBQyxDQUFBO0lBQzVILENBQUM7O0FBcmVILDhDQXNlQzs7O0FBcGVDLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ0csZ0NBQWMsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbi8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFcblxuaW1wb3J0IHsgTGV4djJNb2RlbHNJbnRlbnRDbG9zaW5nU2V0dGluZywgXG5sZXh2Mk1vZGVsc0ludGVudENsb3NpbmdTZXR0aW5nVG9UZXJyYWZvcm0sIFxubGV4djJNb2RlbHNJbnRlbnRDbG9zaW5nU2V0dGluZ1RvSGNsVGVycmFmb3JtLCBcbkxleHYyTW9kZWxzSW50ZW50Q2xvc2luZ1NldHRpbmdMaXN0LCBcbkxleHYyTW9kZWxzSW50ZW50Q29uZmlybWF0aW9uU2V0dGluZywgXG5sZXh2Mk1vZGVsc0ludGVudENvbmZpcm1hdGlvblNldHRpbmdUb1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc0ludGVudENvbmZpcm1hdGlvblNldHRpbmdUb0hjbFRlcnJhZm9ybSwgXG5MZXh2Mk1vZGVsc0ludGVudENvbmZpcm1hdGlvblNldHRpbmdMaXN0LCBcbkxleHYyTW9kZWxzSW50ZW50RGlhbG9nQ29kZUhvb2ssIFxubGV4djJNb2RlbHNJbnRlbnREaWFsb2dDb2RlSG9va1RvVGVycmFmb3JtLCBcbmxleHYyTW9kZWxzSW50ZW50RGlhbG9nQ29kZUhvb2tUb0hjbFRlcnJhZm9ybSwgXG5MZXh2Mk1vZGVsc0ludGVudERpYWxvZ0NvZGVIb29rTGlzdCwgXG5MZXh2Mk1vZGVsc0ludGVudEZ1bGZpbGxtZW50Q29kZUhvb2ssIFxubGV4djJNb2RlbHNJbnRlbnRGdWxmaWxsbWVudENvZGVIb29rVG9UZXJyYWZvcm0sIFxubGV4djJNb2RlbHNJbnRlbnRGdWxmaWxsbWVudENvZGVIb29rVG9IY2xUZXJyYWZvcm0sIFxuTGV4djJNb2RlbHNJbnRlbnRGdWxmaWxsbWVudENvZGVIb29rTGlzdCwgXG5MZXh2Mk1vZGVsc0ludGVudEluaXRpYWxSZXNwb25zZVNldHRpbmcsIFxubGV4djJNb2RlbHNJbnRlbnRJbml0aWFsUmVzcG9uc2VTZXR0aW5nVG9UZXJyYWZvcm0sIFxubGV4djJNb2RlbHNJbnRlbnRJbml0aWFsUmVzcG9uc2VTZXR0aW5nVG9IY2xUZXJyYWZvcm0sIFxuTGV4djJNb2RlbHNJbnRlbnRJbml0aWFsUmVzcG9uc2VTZXR0aW5nTGlzdCwgXG5MZXh2Mk1vZGVsc0ludGVudElucHV0Q29udGV4dCwgXG5sZXh2Mk1vZGVsc0ludGVudElucHV0Q29udGV4dFRvVGVycmFmb3JtLCBcbmxleHYyTW9kZWxzSW50ZW50SW5wdXRDb250ZXh0VG9IY2xUZXJyYWZvcm0sIFxuTGV4djJNb2RlbHNJbnRlbnRJbnB1dENvbnRleHRMaXN0LCBcbkxleHYyTW9kZWxzSW50ZW50S2VuZHJhQ29uZmlndXJhdGlvbiwgXG5sZXh2Mk1vZGVsc0ludGVudEtlbmRyYUNvbmZpZ3VyYXRpb25Ub1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc0ludGVudEtlbmRyYUNvbmZpZ3VyYXRpb25Ub0hjbFRlcnJhZm9ybSwgXG5MZXh2Mk1vZGVsc0ludGVudEtlbmRyYUNvbmZpZ3VyYXRpb25MaXN0LCBcbkxleHYyTW9kZWxzSW50ZW50T3V0cHV0Q29udGV4dCwgXG5sZXh2Mk1vZGVsc0ludGVudE91dHB1dENvbnRleHRUb1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc0ludGVudE91dHB1dENvbnRleHRUb0hjbFRlcnJhZm9ybSwgXG5MZXh2Mk1vZGVsc0ludGVudE91dHB1dENvbnRleHRMaXN0LCBcbkxleHYyTW9kZWxzSW50ZW50U2FtcGxlVXR0ZXJhbmNlLCBcbmxleHYyTW9kZWxzSW50ZW50U2FtcGxlVXR0ZXJhbmNlVG9UZXJyYWZvcm0sIFxubGV4djJNb2RlbHNJbnRlbnRTYW1wbGVVdHRlcmFuY2VUb0hjbFRlcnJhZm9ybSwgXG5MZXh2Mk1vZGVsc0ludGVudFNhbXBsZVV0dGVyYW5jZUxpc3QsIFxuTGV4djJNb2RlbHNJbnRlbnRTbG90UHJpb3JpdHksIFxubGV4djJNb2RlbHNJbnRlbnRTbG90UHJpb3JpdHlUb1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc0ludGVudFNsb3RQcmlvcml0eVRvSGNsVGVycmFmb3JtLCBcbkxleHYyTW9kZWxzSW50ZW50U2xvdFByaW9yaXR5TGlzdCwgXG5MZXh2Mk1vZGVsc0ludGVudFRpbWVvdXRzLCBcbmxleHYyTW9kZWxzSW50ZW50VGltZW91dHNUb1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc0ludGVudFRpbWVvdXRzVG9IY2xUZXJyYWZvcm0sIFxuTGV4djJNb2RlbHNJbnRlbnRUaW1lb3V0c091dHB1dFJlZmVyZW5jZX0gZnJvbSAnLi9pbmRleC1zdHJ1Y3RzJ1xuZXhwb3J0ICogZnJvbSAnLi9pbmRleC1zdHJ1Y3RzJ1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tICdjZGt0Zic7XG5leHBvcnQgaW50ZXJmYWNlIExleHYyTW9kZWxzSW50ZW50Q29uZmlnIGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCNib3RfaWQgTGV4djJNb2RlbHNJbnRlbnQjYm90X2lkfVxuICAqL1xuICByZWFkb25seSBib3RJZDogc3RyaW5nO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjYm90X3ZlcnNpb24gTGV4djJNb2RlbHNJbnRlbnQjYm90X3ZlcnNpb259XG4gICovXG4gIHJlYWRvbmx5IGJvdFZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81Ljg0LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfaW50ZW50I2Rlc2NyaXB0aW9uIExleHYyTW9kZWxzSW50ZW50I2Rlc2NyaXB0aW9ufVxuICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81Ljg0LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfaW50ZW50I2xvY2FsZV9pZCBMZXh2Mk1vZGVsc0ludGVudCNsb2NhbGVfaWR9XG4gICovXG4gIHJlYWRvbmx5IGxvY2FsZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCNuYW1lIExleHYyTW9kZWxzSW50ZW50I25hbWV9XG4gICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81Ljg0LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfaW50ZW50I3BhcmVudF9pbnRlbnRfc2lnbmF0dXJlIExleHYyTW9kZWxzSW50ZW50I3BhcmVudF9pbnRlbnRfc2lnbmF0dXJlfVxuICAqL1xuICByZWFkb25seSBwYXJlbnRJbnRlbnRTaWduYXR1cmU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIGNsb3Npbmdfc2V0dGluZyBibG9ja1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81Ljg0LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfaW50ZW50I2Nsb3Npbmdfc2V0dGluZyBMZXh2Mk1vZGVsc0ludGVudCNjbG9zaW5nX3NldHRpbmd9XG4gICovXG4gIHJlYWRvbmx5IGNsb3NpbmdTZXR0aW5nPzogTGV4djJNb2RlbHNJbnRlbnRDbG9zaW5nU2V0dGluZ1tdIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIGNvbmZpcm1hdGlvbl9zZXR0aW5nIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjY29uZmlybWF0aW9uX3NldHRpbmcgTGV4djJNb2RlbHNJbnRlbnQjY29uZmlybWF0aW9uX3NldHRpbmd9XG4gICovXG4gIHJlYWRvbmx5IGNvbmZpcm1hdGlvblNldHRpbmc/OiBMZXh2Mk1vZGVsc0ludGVudENvbmZpcm1hdGlvblNldHRpbmdbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBkaWFsb2dfY29kZV9ob29rIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjZGlhbG9nX2NvZGVfaG9vayBMZXh2Mk1vZGVsc0ludGVudCNkaWFsb2dfY29kZV9ob29rfVxuICAqL1xuICByZWFkb25seSBkaWFsb2dDb2RlSG9vaz86IExleHYyTW9kZWxzSW50ZW50RGlhbG9nQ29kZUhvb2tbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBmdWxmaWxsbWVudF9jb2RlX2hvb2sgYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCNmdWxmaWxsbWVudF9jb2RlX2hvb2sgTGV4djJNb2RlbHNJbnRlbnQjZnVsZmlsbG1lbnRfY29kZV9ob29rfVxuICAqL1xuICByZWFkb25seSBmdWxmaWxsbWVudENvZGVIb29rPzogTGV4djJNb2RlbHNJbnRlbnRGdWxmaWxsbWVudENvZGVIb29rW10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogaW5pdGlhbF9yZXNwb25zZV9zZXR0aW5nIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjaW5pdGlhbF9yZXNwb25zZV9zZXR0aW5nIExleHYyTW9kZWxzSW50ZW50I2luaXRpYWxfcmVzcG9uc2Vfc2V0dGluZ31cbiAgKi9cbiAgcmVhZG9ubHkgaW5pdGlhbFJlc3BvbnNlU2V0dGluZz86IExleHYyTW9kZWxzSW50ZW50SW5pdGlhbFJlc3BvbnNlU2V0dGluZ1tdIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIGlucHV0X2NvbnRleHQgYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCNpbnB1dF9jb250ZXh0IExleHYyTW9kZWxzSW50ZW50I2lucHV0X2NvbnRleHR9XG4gICovXG4gIHJlYWRvbmx5IGlucHV0Q29udGV4dD86IExleHYyTW9kZWxzSW50ZW50SW5wdXRDb250ZXh0W10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICoga2VuZHJhX2NvbmZpZ3VyYXRpb24gYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCNrZW5kcmFfY29uZmlndXJhdGlvbiBMZXh2Mk1vZGVsc0ludGVudCNrZW5kcmFfY29uZmlndXJhdGlvbn1cbiAgKi9cbiAgcmVhZG9ubHkga2VuZHJhQ29uZmlndXJhdGlvbj86IExleHYyTW9kZWxzSW50ZW50S2VuZHJhQ29uZmlndXJhdGlvbltdIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIG91dHB1dF9jb250ZXh0IGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjb3V0cHV0X2NvbnRleHQgTGV4djJNb2RlbHNJbnRlbnQjb3V0cHV0X2NvbnRleHR9XG4gICovXG4gIHJlYWRvbmx5IG91dHB1dENvbnRleHQ/OiBMZXh2Mk1vZGVsc0ludGVudE91dHB1dENvbnRleHRbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBzYW1wbGVfdXR0ZXJhbmNlIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjc2FtcGxlX3V0dGVyYW5jZSBMZXh2Mk1vZGVsc0ludGVudCNzYW1wbGVfdXR0ZXJhbmNlfVxuICAqL1xuICByZWFkb25seSBzYW1wbGVVdHRlcmFuY2U/OiBMZXh2Mk1vZGVsc0ludGVudFNhbXBsZVV0dGVyYW5jZVtdIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIHNsb3RfcHJpb3JpdHkgYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCNzbG90X3ByaW9yaXR5IExleHYyTW9kZWxzSW50ZW50I3Nsb3RfcHJpb3JpdHl9XG4gICovXG4gIHJlYWRvbmx5IHNsb3RQcmlvcml0eT86IExleHYyTW9kZWxzSW50ZW50U2xvdFByaW9yaXR5W10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogdGltZW91dHMgYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44NC4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX2ludGVudCN0aW1lb3V0cyBMZXh2Mk1vZGVsc0ludGVudCN0aW1lb3V0c31cbiAgKi9cbiAgcmVhZG9ubHkgdGltZW91dHM/OiBMZXh2Mk1vZGVsc0ludGVudFRpbWVvdXRzO1xufVxuXG4vKipcbiogUmVwcmVzZW50cyBhIHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81Ljg0LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfaW50ZW50IGF3c19sZXh2Mm1vZGVsc19pbnRlbnR9XG4qL1xuZXhwb3J0IGNsYXNzIExleHYyTW9kZWxzSW50ZW50IGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtUmVzb3VyY2Uge1xuXG4gIC8vID09PT09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBQUk9QRVJUSUVTXG4gIC8vID09PT09PT09PT09PT09PT09XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdGZSZXNvdXJjZVR5cGUgPSBcImF3c19sZXh2Mm1vZGVsc19pbnRlbnRcIjtcblxuICAvLyA9PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PVxuICAvKipcbiAgKiBHZW5lcmF0ZXMgQ0RLVEYgY29kZSBmb3IgaW1wb3J0aW5nIGEgTGV4djJNb2RlbHNJbnRlbnQgcmVzb3VyY2UgdXBvbiBydW5uaW5nIFwiY2RrdGYgcGxhbiA8c3RhY2stbmFtZT5cIlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGltcG9ydFRvSWQgVGhlIGNvbnN0cnVjdCBpZCB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGZvciB0aGUgTGV4djJNb2RlbHNJbnRlbnQgdG8gaW1wb3J0XG4gICogQHBhcmFtIGltcG9ydEZyb21JZCBUaGUgaWQgb2YgdGhlIGV4aXN0aW5nIExleHYyTW9kZWxzSW50ZW50IHRoYXQgc2hvdWxkIGJlIGltcG9ydGVkLiBSZWZlciB0byB0aGUge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQjaW1wb3J0IGltcG9ydCBzZWN0aW9ufSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJlc291cmNlIGZvciB0aGUgaWQgdG8gdXNlXG4gICogQHBhcmFtIHByb3ZpZGVyPyBPcHRpb25hbCBpbnN0YW5jZSBvZiB0aGUgcHJvdmlkZXIgd2hlcmUgdGhlIExleHYyTW9kZWxzSW50ZW50IHRvIGltcG9ydCBpcyBmb3VuZFxuICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlQ29uZmlnRm9ySW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGltcG9ydFRvSWQ6IHN0cmluZywgaW1wb3J0RnJvbUlkOiBzdHJpbmcsIHByb3ZpZGVyPzogY2RrdGYuVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjZGt0Zi5JbXBvcnRhYmxlUmVzb3VyY2Uoc2NvcGUsIGltcG9ydFRvSWQsIHsgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBcImF3c19sZXh2Mm1vZGVsc19pbnRlbnRcIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODQuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19pbnRlbnQgYXdzX2xleHYybW9kZWxzX2ludGVudH0gUmVzb3VyY2VcbiAgKlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGlkIFRoZSBzY29wZWQgY29uc3RydWN0IElELiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHNpYmxpbmdzIGluIHRoZSBzYW1lIHNjb3BlXG4gICogQHBhcmFtIG9wdGlvbnMgTGV4djJNb2RlbHNJbnRlbnRDb25maWdcbiAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogTGV4djJNb2RlbHNJbnRlbnRDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbi