diff --git a/build.gradle.kts b/build.gradle.kts index 9f67de3cd4..ad0360d6e4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,6 +7,7 @@ buildscript { } dependencies { classpath(Plugins.androidGradlePlugin) + classpath(Plugins.kspGradlePlugin) classpath(Plugins.benchmarkGradlePlugin) classpath(Plugins.flankGradlePlugin) classpath(Plugins.kotlinGradlePlugin) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index 5469d71f81..6b511ac067 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -249,7 +249,7 @@ object Dependencies { object Kotlin { const val kotlinCoroutinesCore = "1.7.2" - const val stdlib = "1.8.20" + const val stdlib = "1.9.22" } const val androidFhirCommon = "0.1.0-alpha05" diff --git a/buildSrc/src/main/kotlin/Plugins.kt b/buildSrc/src/main/kotlin/Plugins.kt index f622301398..a28bfd9f3d 100644 --- a/buildSrc/src/main/kotlin/Plugins.kt +++ b/buildSrc/src/main/kotlin/Plugins.kt @@ -20,11 +20,10 @@ object Plugins { const val androidLib = "com.android.library" const val application = "com.android.application" const val benchmark = "androidx.benchmark" - const val jetbrainsKotlinAndroid = "org.jetbrains.kotlin.android" const val dokka = "org.jetbrains.dokka" const val kotlin = "kotlin" const val kotlinAndroid = "kotlin-android" - const val kotlinKapt = "kotlin-kapt" + const val kotlinKsp = "com.google.devtools.ksp" const val mavenPublish = "maven-publish" const val fladle = "com.osacky.fladle" const val navSafeArgs = "androidx.navigation.safeargs.kotlin" @@ -42,10 +41,13 @@ object Plugins { "androidx.navigation:navigation-safe-args-gradle-plugin:${Dependencies.Versions.Androidx.navigation}" const val rulerGradlePlugin = "com.spotify.ruler:ruler-gradle-plugin:1.2.1" const val flankGradlePlugin = "com.osacky.flank.gradle:fladle:0.17.4" + const val kspGradlePlugin = + "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:${Versions.kspPlugin}" object Versions { const val androidGradlePlugin = "8.0.2" const val benchmarkPlugin = "1.1.0" const val dokka = "1.9.20" + const val kspPlugin = "1.9.22-1.0.18" } } diff --git a/catalog/src/main/assets/behavior_questionnaire_constraint.json b/catalog/src/main/assets/behavior_questionnaire_constraint.json new file mode 100644 index 0000000000..a592ccb466 --- /dev/null +++ b/catalog/src/main/assets/behavior_questionnaire_constraint.json @@ -0,0 +1,86 @@ +{ + "resourceType": "Questionnaire", + "item": [ + { + "linkId": "1", + "text": "Password", + "type": "string", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-displayCategory", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-display-category", + "code": "instructions" + } + ] + } + } + ], + "linkId": "1.1", + "text": "Fill the password first", + "type": "display" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint", + "extension": [ + { + "url": "key", + "valueId": "constraint-1" + }, + { + "url": "requirements", + "valueString": "Confirm password field must have the same value as password field" + }, + { + "url": "severity", + "valueCode": "error" + }, + { + "url": "expression", + "valueString": "%context.answer.value = %resource.descendants().where(linkId='1').answer.value" + }, + { + "url": "human", + "valueString": "Password does not match" + }, + { + "url": "location", + "valueString": "1" + } + ] + } + ], + "linkId": "2", + "text": "Confirm password", + "type": "string", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-displayCategory", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-display-category", + "code": "instructions" + } + ] + } + } + ], + "linkId": "2.1", + "text": "Show error message if confirm password does not match with password", + "type": "display" + } + ] + } + ] +} \ No newline at end of file diff --git a/catalog/src/main/java/com/google/android/fhir/catalog/BehaviorListViewModel.kt b/catalog/src/main/java/com/google/android/fhir/catalog/BehaviorListViewModel.kt index f7e7f10232..e5cbe1618d 100644 --- a/catalog/src/main/java/com/google/android/fhir/catalog/BehaviorListViewModel.kt +++ b/catalog/src/main/java/com/google/android/fhir/catalog/BehaviorListViewModel.kt @@ -63,6 +63,11 @@ class BehaviorListViewModel(application: Application) : AndroidViewModel(applica R.string.behavior_name_dynamic_question_text, "behavior_dynamic_question_text.json", ), + QUESTIONNAIRE_CONSTRAINT( + R.drawable.ic_rule, + R.string.behavior_name_questionnaire_constraint, + "behavior_questionnaire_constraint.json", + ), } fun isBehavior(context: Context, title: String) = diff --git a/catalog/src/main/res/drawable/ic_rule.xml b/catalog/src/main/res/drawable/ic_rule.xml new file mode 100644 index 0000000000..5f9363d680 --- /dev/null +++ b/catalog/src/main/res/drawable/ic_rule.xml @@ -0,0 +1,12 @@ + + + diff --git a/catalog/src/main/res/layout/behavior_list_fragment.xml b/catalog/src/main/res/layout/behavior_list_fragment.xml index f0f2979d60..0d06e5cb0c 100644 --- a/catalog/src/main/res/layout/behavior_list_fragment.xml +++ b/catalog/src/main/res/layout/behavior_list_fragment.xml @@ -11,6 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/component_horizontal_margin" + android:layout_marginBottom="@dimen/bottom_navigation_view_height" /> diff --git a/catalog/src/main/res/values/strings.xml b/catalog/src/main/res/values/strings.xml index 5509e201a6..8934420572 100644 --- a/catalog/src/main/res/values/strings.xml +++ b/catalog/src/main/res/values/strings.xml @@ -52,6 +52,9 @@ Dynamic question text + Questionnaire constraint Initial Value { - val appContext = extractDependentVariables(expression, questionnaireItem) + val appContext = extractItemDependentVariables(expression, questionnaireItem) return evaluateToBase( questionnaireResponse, questionnaireResponseItem, @@ -222,7 +244,7 @@ internal class ExpressionEvaluator( ) { "The expression should come from the same questionnaire item" } - extractDependentVariables( + extractItemDependentVariables( expression, questionnaireItem, variablesMap, @@ -243,21 +265,23 @@ internal class ExpressionEvaluator( * @param variablesMap the [Map] of variables, the default value is empty map is * defined */ - internal suspend fun extractDependentVariables( + internal suspend fun extractItemDependentVariables( expression: Expression, questionnaireItem: QuestionnaireItemComponent, variablesMap: MutableMap = mutableMapOf(), ): MutableMap { questionnaireLaunchContextMap?.let { variablesMap.putAll(it) } - findDependentVariables(expression).forEach { variableName -> - if (variablesMap[variableName] == null) { - findAndEvaluateVariable( - variableName, - questionnaireItem, - variablesMap, - ) + findDependentVariables(expression) + .filterNot { variable -> reservedItemVariables.contains(variable) } + .forEach { variableName -> + if (variablesMap[variableName] == null) { + findAndEvaluateVariable( + variableName, + questionnaireItem, + variablesMap, + ) + } } - } return variablesMap.apply { put(questionnaireFhirPathSupplement, questionnaire) put(questionnaireItemFhirPathSupplement, questionnaireItem) @@ -282,17 +306,19 @@ internal class ExpressionEvaluator( expression: Expression, variablesMap: MutableMap = mutableMapOf(), ): Base? { - findDependentVariables(expression).forEach { variableName -> - questionnaire.findVariableExpression(variableName)?.let { expression -> - if (variablesMap[expression.name] == null) { - variablesMap[expression.name] = - evaluateQuestionnaireVariableExpression( - expression, - variablesMap, - ) + findDependentVariables(expression) + .filterNot { variable -> reservedRootVariables.contains(variable) } + .forEach { variableName -> + questionnaire.findVariableExpression(variableName)?.let { expression -> + if (variablesMap[expression.name] == null) { + variablesMap[expression.name] = + evaluateQuestionnaireVariableExpression( + expression, + variablesMap, + ) + } } } - } return evaluateVariable( expression, @@ -371,11 +397,7 @@ internal class ExpressionEvaluator( } private fun findDependentVariables(expression: Expression) = - variableRegex - .findAll(expression.expression) - .map { it.groupValues[1] } - .toList() - .filterNot { variable -> reservedVariables.contains(variable) } + variableRegex.findAll(expression.expression).map { it.groupValues[1] }.toList() /** * Finds the dependent variables at questionnaire item level first, then in ancestors and then at diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerConstraintValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerConstraintValidator.kt index 20759607af..7aa49b4953 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerConstraintValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerConstraintValidator.kt @@ -23,10 +23,10 @@ import org.hl7.fhir.r4.model.QuestionnaireResponse import org.hl7.fhir.r4.model.Type /** - * Validates [QuestionnaireResponse.QuestionnaireResponseItemComponent] against a particular + * Validates [QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent] against a particular * constraint. */ -internal interface AnswerConstraintValidator { +internal interface AnswerConstraintValidator : ConstraintValidator { /** * Validates whether the [answer] satisfies any constraints of the [questionnaireItem] according * to the [Structured Data Capture Implementation Guide] @@ -42,11 +42,5 @@ internal interface AnswerConstraintValidator { answer: QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent, context: Context, expressionEvaluator: suspend (Expression) -> Type?, - ): Result - - /** - * The validation result containing whether the answer is valid and any error message if it is not - * valid. - */ - data class Result(val isValid: Boolean, val errorMessage: String?) + ): ConstraintValidator.Result } diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerExtensionConstraintValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerExtensionConstraintValidator.kt index 2d8397b912..0bf32d1a06 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerExtensionConstraintValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/AnswerExtensionConstraintValidator.kt @@ -50,7 +50,7 @@ internal open class AnswerExtensionConstraintValidator( answer: QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent, context: Context, expressionEvaluator: suspend (Expression) -> Type?, - ): AnswerConstraintValidator.Result { + ): ConstraintValidator.Result { if (questionnaireItem.hasExtension(url)) { val extension = questionnaireItem.getExtensionByUrl(url) val extensionValue = @@ -61,12 +61,12 @@ internal open class AnswerExtensionConstraintValidator( if ( extensionValue.hasValue() && answer.value.hasValue() && predicate(extensionValue, answer) ) { - return AnswerConstraintValidator.Result( + return ConstraintValidator.Result( false, messageGenerator(extensionValue, context), ) } } - return AnswerConstraintValidator.Result(true, null) + return ConstraintValidator.Result(true, null) } } diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/ConstraintItemExtensionValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/ConstraintItemExtensionValidator.kt new file mode 100644 index 0000000000..940fb0d73f --- /dev/null +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/ConstraintItemExtensionValidator.kt @@ -0,0 +1,87 @@ +/* + * Copyright 2022-2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.fhir.datacapture.validation + +import android.content.Context +import com.google.android.fhir.datacapture.extensions.ConstraintSeverityTypes +import com.google.android.fhir.datacapture.extensions.EXTENSION_QUESTIONNAIRE_CONSTRAINT_EXPRESSION +import com.google.android.fhir.datacapture.extensions.EXTENSION_QUESTIONNAIRE_CONSTRAINT_HUMAN +import com.google.android.fhir.datacapture.extensions.EXTENSION_QUESTIONNAIRE_CONSTRAINT_SEVERITY +import com.google.android.fhir.datacapture.extensions.EXTENSION_QUESTIONNAIRE_CONSTRAINT_URL +import com.google.android.fhir.datacapture.extensions.asStringValue +import com.google.android.fhir.datacapture.fhirpath.ExpressionEvaluator +import com.google.android.fhir.datacapture.fhirpath.convertToBoolean +import org.hl7.fhir.r4.model.CodeType +import org.hl7.fhir.r4.model.Expression +import org.hl7.fhir.r4.model.Questionnaire.QuestionnaireItemComponent +import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseItemComponent + +/** + * TODO: Add constraint support for global case, create a separate validator, + * https://github.com/google/android-fhir/issues/2479 + */ +internal class ConstraintItemExtensionValidator( + private val expressionEvaluator: ExpressionEvaluator, +) : QuestionnaireResponseItemConstraintValidator { + override suspend fun validate( + questionnaireItem: QuestionnaireItemComponent, + questionnaireResponseItem: QuestionnaireResponseItemComponent, + context: Context, + ): List { + return questionnaireItem.extension + .filter { extension -> + /** + * TODO: Add constraint support for warning case, update the [ConstraintValidator.Result] + * data class to also include warning state, + * https://github.com/google/android-fhir/issues/2480 + */ + extension.url == EXTENSION_QUESTIONNAIRE_CONSTRAINT_URL && + (extension.getExtensionByUrl(EXTENSION_QUESTIONNAIRE_CONSTRAINT_SEVERITY).value + as CodeType) + .valueAsString == ConstraintSeverityTypes.ERROR.code + } + .map { extension -> + val expression = + Expression().apply { + language = "text/fhirpath" + expression = + extension + .getExtensionByUrl(EXTENSION_QUESTIONNAIRE_CONSTRAINT_EXPRESSION) + .value + .asStringValue() + } + val isValid = + expressionEvaluator + .evaluateExpression( + questionnaireItem, + questionnaireResponseItem, + expression, + ) + .let { convertToBoolean(it) } + if (isValid) { + ConstraintValidator.Result(true, null) + } else { + val errorMessage = + extension + .getExtensionByUrl(EXTENSION_QUESTIONNAIRE_CONSTRAINT_HUMAN) + .value + .asStringValue() + ConstraintValidator.Result(false, errorMessage) + } + } + } +} diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/ConstraintValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/ConstraintValidator.kt new file mode 100644 index 0000000000..7d1ae69979 --- /dev/null +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/ConstraintValidator.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2022-2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.fhir.datacapture.validation + +/** Validator base interface. */ +internal interface ConstraintValidator { + + /** + * The validation result containing whether the response item is valid and any error message if it + * is not valid. + */ + data class Result(val isValid: Boolean, val errorMessage: String?) +} diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/MaxLengthValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/MaxLengthValidator.kt index 0d3fb6aa55..51e35674bb 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/MaxLengthValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/MaxLengthValidator.kt @@ -35,18 +35,18 @@ internal object MaxLengthValidator : AnswerConstraintValidator { answer: QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent, context: Context, expressionEvaluator: suspend (Expression) -> Type?, - ): AnswerConstraintValidator.Result { + ): ConstraintValidator.Result { if ( questionnaireItem.hasMaxLength() && answer.value.isPrimitive && answer.value.asStringValue().length > questionnaireItem.maxLength ) { - return AnswerConstraintValidator.Result( + return ConstraintValidator.Result( false, "The maximum number of characters that are permitted in the answer is: " + questionnaireItem.maxLength, ) } - return AnswerConstraintValidator.Result(true, null) + return ConstraintValidator.Result(true, null) } } diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemConstraintValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemConstraintValidator.kt index c2cb275333..828a16af84 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemConstraintValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemConstraintValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,26 +24,20 @@ import org.hl7.fhir.r4.model.QuestionnaireResponse * Validates [QuestionnaireResponse.QuestionnaireResponseItemComponent] against a particular * constraint. */ -internal interface QuestionnaireResponseItemConstraintValidator { +internal interface QuestionnaireResponseItemConstraintValidator : ConstraintValidator { /** - * Validates that [answers] satisfy a particular constraint of the [questionnaireItem] according - * to the [structured data capture implementation guide] + * Validates that [questionnaireResponseItem] satisfy a particular constraint of the + * [questionnaireItem] according to the [structured data capture implementation guide] * (http://build.fhir.org/ig/HL7/sdc/behavior.html). * - * This does not validate the consistency between the structure of the [answers] and their - * descendants and that of the [questionnaireItem] and its descendants. + * This does not validate the consistency between the structure of the [questionnaireResponseItem] + * and their descendants and that of the [questionnaireItem] and its descendants. * * [Learn more](https://www.hl7.org/fhir/questionnaireresponse.html#link). */ - fun validate( + suspend fun validate( questionnaireItem: Questionnaire.QuestionnaireItemComponent, - answers: List, + questionnaireResponseItem: QuestionnaireResponse.QuestionnaireResponseItemComponent, context: Context, - ): Result - - /** - * The validation result containing whether the response item is valid and any error message if it - * is not valid. - */ - data class Result(val isValid: Boolean, val errorMessage: String?) + ): List } diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidator.kt index 7a386e48b2..bdd2fbea78 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidator.kt @@ -18,17 +18,19 @@ package com.google.android.fhir.datacapture.validation import android.content.Context import com.google.android.fhir.datacapture.extensions.isHidden -import org.hl7.fhir.r4.model.Expression +import com.google.android.fhir.datacapture.fhirpath.ExpressionEvaluator import org.hl7.fhir.r4.model.Questionnaire import org.hl7.fhir.r4.model.QuestionnaireResponse -import org.hl7.fhir.r4.model.Type -internal object QuestionnaireResponseItemValidator { +internal class QuestionnaireResponseItemValidator( + val expressionEvaluator: ExpressionEvaluator, +) { /** Validators for [QuestionnaireResponse.QuestionnaireResponseItemComponent]. */ private val questionnaireResponseItemConstraintValidators = listOf( RequiredValidator, + ConstraintItemExtensionValidator(expressionEvaluator), ) /** Validators for [QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent]. */ @@ -42,23 +44,28 @@ internal object QuestionnaireResponseItemValidator { RegexValidator, ) - /** Validates [answers] contains valid answer(s) to [questionnaireItem]. */ + /** Validates [questionnaireResponseItem] contains valid answer(s) to [questionnaireItem]. */ suspend fun validate( questionnaireItem: Questionnaire.QuestionnaireItemComponent, - answers: List, + questionnaireResponseItem: QuestionnaireResponse.QuestionnaireResponseItemComponent, context: Context, - expressionEvaluator: suspend (Expression) -> Type?, ): ValidationResult { if (questionnaireItem.isHidden) return NotValidated val questionnaireResponseItemConstraintValidationResult = - questionnaireResponseItemConstraintValidators.map { - it.validate(questionnaireItem, answers, context) + questionnaireResponseItemConstraintValidators.flatMap { + it.validate(questionnaireItem, questionnaireResponseItem, context) } val questionnaireResponseItemAnswerConstraintValidationResult = answerConstraintValidators.flatMap { validator -> - answers.map { answer -> - validator.validate(questionnaireItem, answer, context, expressionEvaluator) + questionnaireResponseItem.answer.map { answer -> + validator.validate(questionnaireItem, answer, context) { + expressionEvaluator.evaluateExpressionValue( + questionnaireItem, + questionnaireResponseItem, + it, + ) + } } } diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt index ec449b36d9..fce6d84d0e 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt @@ -71,25 +71,31 @@ object QuestionnaireResponseValidator { "Mismatching Questionnaire ${questionnaire.url} and QuestionnaireResponse (for Questionnaire ${questionnaireResponse.questionnaire})" } - val linkIdToValidationResultMap = mutableMapOf>() - - validateQuestionnaireResponseItems( - questionnaire.item, - questionnaireResponse.item, - context, + val enablementEvaluator = EnablementEvaluator( questionnaire, questionnaireResponse, questionnaireItemParentMap, launchContextMap, xFhirQueryResolver, - ), - ExpressionEvaluator( - questionnaire, - questionnaireResponse, - questionnaireItemParentMap, - launchContextMap, - ), + ) + val questionnaireResponseItemValidator = + QuestionnaireResponseItemValidator( + ExpressionEvaluator( + questionnaire, + questionnaireResponse, + questionnaireItemParentMap, + launchContextMap, + ), + ) + val linkIdToValidationResultMap = mutableMapOf>() + + validateQuestionnaireResponseItems( + questionnaire.item, + questionnaireResponse.item, + context, + enablementEvaluator, + questionnaireResponseItemValidator, linkIdToValidationResultMap, ) @@ -101,7 +107,7 @@ object QuestionnaireResponseValidator { questionnaireResponseItemList: List, context: Context, enablementEvaluator: EnablementEvaluator, - expressionEvaluator: ExpressionEvaluator, + questionnaireResponseItemValidator: QuestionnaireResponseItemValidator, linkIdToValidationResultMap: MutableMap>, ): Map> { val questionnaireItemListIterator = questionnaireItemList.iterator() @@ -129,7 +135,7 @@ object QuestionnaireResponseValidator { questionnaireResponseItem, context, enablementEvaluator, - expressionEvaluator, + questionnaireResponseItemValidator, linkIdToValidationResultMap, ) } @@ -142,7 +148,7 @@ object QuestionnaireResponseValidator { questionnaireResponseItem: QuestionnaireResponse.QuestionnaireResponseItemComponent, context: Context, enablementEvaluator: EnablementEvaluator, - expressionEvaluator: ExpressionEvaluator, + questionnaireResponseItemValidator: QuestionnaireResponseItemValidator, linkIdToValidationResultMap: MutableMap>, ): Map> { when (checkNotNull(questionnaireItem.type) { "Questionnaire item must have type" }) { @@ -156,7 +162,7 @@ object QuestionnaireResponseValidator { questionnaireResponseItem.item, context, enablementEvaluator, - expressionEvaluator, + questionnaireResponseItemValidator, linkIdToValidationResultMap, ) else -> { @@ -170,24 +176,18 @@ object QuestionnaireResponseValidator { it.item, context, enablementEvaluator, - expressionEvaluator, + questionnaireResponseItemValidator, linkIdToValidationResultMap, ) } linkIdToValidationResultMap[questionnaireItem.linkId] = mutableListOf() linkIdToValidationResultMap[questionnaireItem.linkId]?.add( - QuestionnaireResponseItemValidator.validate( + questionnaireResponseItemValidator.validate( questionnaireItem, - questionnaireResponseItem.answer, + questionnaireResponseItem, context, - ) { - expressionEvaluator.evaluateExpressionValue( - questionnaireItem, - questionnaireResponseItem, - it, - ) - }, + ), ) } } diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/RequiredValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/RequiredValidator.kt index 87cad9c630..fabdeb9a45 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/RequiredValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/RequiredValidator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,17 +22,19 @@ import org.hl7.fhir.r4.model.Questionnaire import org.hl7.fhir.r4.model.QuestionnaireResponse internal object RequiredValidator : QuestionnaireResponseItemConstraintValidator { - override fun validate( + override suspend fun validate( questionnaireItem: Questionnaire.QuestionnaireItemComponent, - answers: List, + questionnaireResponseItem: QuestionnaireResponse.QuestionnaireResponseItemComponent, context: Context, - ): QuestionnaireResponseItemConstraintValidator.Result { - if (!questionnaireItem.required || answers.any { it.hasValue() }) { - return QuestionnaireResponseItemConstraintValidator.Result(true, null) + ): List { + if (!questionnaireItem.required || questionnaireResponseItem.answer.any { it.hasValue() }) { + return listOf(ConstraintValidator.Result(true, null)) } - return QuestionnaireResponseItemConstraintValidator.Result( - false, - context.getString(R.string.required_constraint_validation_error_msg), + return listOf( + ConstraintValidator.Result( + false, + context.getString(R.string.required_constraint_validation_error_msg), + ), ) } } diff --git a/datacapture/src/test/java/com/google/android/fhir/datacapture/fhirpath/ExpressionEvaluatorTest.kt b/datacapture/src/test/java/com/google/android/fhir/datacapture/fhirpath/ExpressionEvaluatorTest.kt index 6046edbefb..adee75520c 100644 --- a/datacapture/src/test/java/com/google/android/fhir/datacapture/fhirpath/ExpressionEvaluatorTest.kt +++ b/datacapture/src/test/java/com/google/android/fhir/datacapture/fhirpath/ExpressionEvaluatorTest.kt @@ -1155,7 +1155,7 @@ class ExpressionEvaluatorTest { runBlocking { val variablesMap = - expressionEvaluator.extractDependentVariables( + expressionEvaluator.extractItemDependentVariables( questionnaire.item[0].item[0].answerExpression!!, questionnaire.item[0], ) @@ -1230,7 +1230,7 @@ class ExpressionEvaluatorTest { runBlocking { val variablesMap = - expressionEvaluator.extractDependentVariables( + expressionEvaluator.extractItemDependentVariables( questionnaire.item[0].item[0].answerExpression!!, questionnaire.item[0], ) diff --git a/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt b/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt index a0219d3f27..47b71e1553 100644 --- a/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt +++ b/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt @@ -19,12 +19,14 @@ package com.google.android.fhir.datacapture.validation import android.content.Context import android.os.Build import androidx.test.core.app.ApplicationProvider +import com.google.android.fhir.datacapture.fhirpath.ExpressionEvaluator import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runTest import org.hl7.fhir.r4.model.Extension import org.hl7.fhir.r4.model.IntegerType import org.hl7.fhir.r4.model.Questionnaire import org.hl7.fhir.r4.model.QuestionnaireResponse +import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseItemComponent import org.hl7.fhir.r4.model.StringType import org.junit.Before import org.junit.Test @@ -72,15 +74,26 @@ class QuestionnaireResponseItemValidatorTest { value = IntegerType(275) }, ) + val questionnaire = Questionnaire().apply { addItem(questionnaireItem) } + val questionnaireResponse = + QuestionnaireResponse().apply { + addItem( + QuestionnaireResponseItemComponent().apply { answer = answers }, + ) + } + val expressionEvaluator = + ExpressionEvaluator( + questionnaire, + questionnaireResponse, + ) val validationResult = - QuestionnaireResponseItemValidator.validate( - questionnaireItem, - answers, - context, - ) { - TestExpressionValueEvaluator.evaluate(questionnaireItem, it) - } + QuestionnaireResponseItemValidator(expressionEvaluator) + .validate( + questionnaire.item.first(), + questionnaireResponse.item.first(), + context, + ) assertThat(validationResult).isEqualTo(Valid) } @@ -116,15 +129,26 @@ class QuestionnaireResponseItemValidatorTest { value = IntegerType(250) }, ) + val questionnaire = Questionnaire().apply { addItem(questionnaireItem) } + val questionnaireResponse = + QuestionnaireResponse().apply { + addItem( + QuestionnaireResponseItemComponent().apply { answer = answers }, + ) + } + val expressionEvaluator = + ExpressionEvaluator( + questionnaire, + questionnaireResponse, + ) val validationResult = - QuestionnaireResponseItemValidator.validate( - questionnaireItem, - answers, - context, - ) { - TestExpressionValueEvaluator.evaluate(questionnaireItem, it) - } + QuestionnaireResponseItemValidator(expressionEvaluator) + .validate( + questionnaire.item.first(), + questionnaireResponse.item.first(), + context, + ) assertThat(validationResult).isInstanceOf(Invalid::class.java) val invalidValidationResult = validationResult as Invalid @@ -140,15 +164,27 @@ class QuestionnaireResponseItemValidatorTest { required = true } val answers = listOf() + val questionnaire = Questionnaire().apply { addItem(questionnaireItem) } + val questionnaireResponse = + QuestionnaireResponse().apply { + addItem( + QuestionnaireResponseItemComponent().apply { answer = answers }, + ) + } + + val expressionEvaluator = + ExpressionEvaluator( + questionnaire, + questionnaireResponse, + ) val validationResult = - QuestionnaireResponseItemValidator.validate( - questionnaireItem, - answers, - context, - ) { - TestExpressionValueEvaluator.evaluate(questionnaireItem, it) - } + QuestionnaireResponseItemValidator(expressionEvaluator) + .validate( + questionnaire.item.first(), + questionnaireResponse.item.first(), + context, + ) assertThat(validationResult).isInstanceOf(Invalid::class.java) val invalidValidationResult = validationResult as Invalid diff --git a/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/RequiredValidatorTest.kt b/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/RequiredValidatorTest.kt index 4f6b500cc4..cbb021d9b7 100644 --- a/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/RequiredValidatorTest.kt +++ b/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/RequiredValidatorTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package com.google.android.fhir.datacapture.validation import android.os.Build import androidx.test.platform.app.InstrumentationRegistry import com.google.common.truth.Truth.assertThat +import kotlinx.coroutines.test.runTest import org.hl7.fhir.r4.model.IntegerType import org.hl7.fhir.r4.model.Questionnaire import org.hl7.fhir.r4.model.QuestionnaireResponse @@ -33,55 +34,71 @@ class RequiredValidatorTest { @Test fun shouldReturnValidResult() { - val questionnaireItem = Questionnaire.QuestionnaireItemComponent().apply { required = true } - val response = - listOf( - QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent().apply { - value = IntegerType(9) - }, - ) + runTest { + val questionnaireItem = Questionnaire.QuestionnaireItemComponent().apply { required = true } + val questionnaireResponseItem = + QuestionnaireResponse.QuestionnaireResponseItemComponent().apply { + answer = + listOf( + QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent().apply { + value = IntegerType(9) + }, + ) + } - val validationResult = - RequiredValidator.validate( - questionnaireItem, - response, - InstrumentationRegistry.getInstrumentation().context, - ) - assertThat(validationResult.isValid).isTrue() + val validationResult = + RequiredValidator.validate( + questionnaireItem, + questionnaireResponseItem, + InstrumentationRegistry.getInstrumentation().context, + ) + assertThat(validationResult.first().isValid).isTrue() + } } @Test fun shouldReturnInvalidResult() { - val questionnaireItem = Questionnaire.QuestionnaireItemComponent().apply { required = true } + runTest { + val questionnaireItem = Questionnaire.QuestionnaireItemComponent().apply { required = true } + val questionnaireResponseItem = + QuestionnaireResponse.QuestionnaireResponseItemComponent().apply { answer = listOf() } - val validationResult = - RequiredValidator.validate( - questionnaireItem, - listOf(), - InstrumentationRegistry.getInstrumentation().context, - ) - assertThat(validationResult.isValid).isFalse() - assertThat(validationResult.errorMessage).isEqualTo("Missing answer for required field.") + val validationResult = + RequiredValidator.validate( + questionnaireItem, + questionnaireResponseItem, + InstrumentationRegistry.getInstrumentation().context, + ) + assertThat(validationResult.first().isValid).isFalse() + assertThat(validationResult.first().errorMessage) + .isEqualTo("Missing answer for required field.") + } } @Test fun noAnswerHasValue_shouldReturnInvalidResult() { - val questionnaireItem = Questionnaire.QuestionnaireItemComponent().apply { required = true } - val response = - listOf( - // one answer with no value - QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent(), - // second answer with no value - QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent(), - ) + runTest { + val questionnaireItem = Questionnaire.QuestionnaireItemComponent().apply { required = true } + val questionnaireResponseItem = + QuestionnaireResponse.QuestionnaireResponseItemComponent().apply { + answer = + listOf( + // one answer with no value + QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent(), + // second answer with no value + QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent(), + ) + } - val validationResult = - RequiredValidator.validate( - questionnaireItem, - response, - InstrumentationRegistry.getInstrumentation().context, - ) - assertThat(validationResult.isValid).isFalse() - assertThat(validationResult.errorMessage).isEqualTo("Missing answer for required field.") + val validationResult = + RequiredValidator.validate( + questionnaireItem, + questionnaireResponseItem, + InstrumentationRegistry.getInstrumentation().context, + ) + assertThat(validationResult.first().isValid).isFalse() + assertThat(validationResult.first().errorMessage) + .isEqualTo("Missing answer for required field.") + } } } diff --git a/demo/build.gradle.kts b/demo/build.gradle.kts index 0e53d5f6ba..8c2ee36a28 100644 --- a/demo/build.gradle.kts +++ b/demo/build.gradle.kts @@ -1,7 +1,6 @@ plugins { id(Plugins.BuildPlugins.application) id(Plugins.BuildPlugins.kotlinAndroid) - id(Plugins.BuildPlugins.kotlinKapt) id(Plugins.BuildPlugins.navSafeArgs) } diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.common.datatype/as-string-value.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.common.datatype/as-string-value.html deleted file mode 100644 index 96af3d7104..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.common.datatype/as-string-value.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - asStringValue - - - - -
-
-
-
-
-
- -
-

asStringValue

-
-
fun <ERROR CLASS>.asStringValue(): String

Returns the string representation of a PrimitiveType.

If the type isn't a [PrimitiveType], an empty string is returned.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.common.datatype/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.common.datatype/index.html deleted file mode 100644 index 22a7394861..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.common.datatype/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - com.google.android.fhir.datacapture.common.datatype - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture.common.datatype

-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun <ERROR CLASS>.asStringValue(): String

Returns the string representation of a PrimitiveType.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/get-questionnaire-item-view-holder-delegate.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/get-questionnaire-item-view-holder-delegate.html deleted file mode 100644 index 891a76a0f6..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/get-questionnaire-item-view-holder-delegate.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getQuestionnaireItemViewHolderDelegate - - - - -
-
-
-
-
-
- -
-

getQuestionnaireItemViewHolderDelegate

-
-
open override fun getQuestionnaireItemViewHolderDelegate(): QuestionnaireItemViewHolderDelegate

Returns a QuestionnaireItemViewHolderDelegate that handles the initialization of views and binding of items in RecyclerView.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/index.html deleted file mode 100644 index e826564eb6..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - QuestionnaireItemPhoneNumberViewHolderFactory - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemPhoneNumberViewHolderFactory

- -
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open override fun getQuestionnaireItemViewHolderDelegate(): QuestionnaireItemViewHolderDelegate

Returns a QuestionnaireItemViewHolderDelegate that handles the initialization of views and binding of items in RecyclerView.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/index.html deleted file mode 100644 index 938e4ea189..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.contrib.views/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - com.google.android.fhir.datacapture.contrib.views - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture.contrib.views

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
- -
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/evaluate-calculated-expressions.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/evaluate-calculated-expressions.html deleted file mode 100644 index 7908e0568e..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/evaluate-calculated-expressions.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - evaluateCalculatedExpressions - - - - -
-
-
-
-
-
- -
-

evaluateCalculatedExpressions

-
-
fun evaluateCalculatedExpressions(updatedQuestionnaireItem: <ERROR CLASS>, questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>, questionnaireItemParentMap: Map<<ERROR CLASS>, <ERROR CLASS>>): List<<ERROR CLASS><<ERROR CLASS>, List<<ERROR CLASS>>>>

Returns a list of pair of item and the calculated and evaluated value for all items with calculated expression extension, which is dependent on value of updated response

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/index.html deleted file mode 100644 index 903a14c132..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - ExpressionEvaluator - - - - -
-
-
-
-
-
- -
-

ExpressionEvaluator

-
object ExpressionEvaluator

Evaluates an expression and returns its result.

Expressions can be defined at questionnaire level and questionnaire item level. This ExpressionEvaluator supports evaluation of variable expression defined at either questionnaire level or questionnaire item level.

-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun evaluateCalculatedExpressions(updatedQuestionnaireItem: <ERROR CLASS>, questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>, questionnaireItemParentMap: Map<<ERROR CLASS>, <ERROR CLASS>>): List<<ERROR CLASS><<ERROR CLASS>, List<<ERROR CLASS>>>>

Returns a list of pair of item and the calculated and evaluated value for all items with calculated expression extension, which is dependent on value of updated response

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/index.html deleted file mode 100644 index 8d89246fb5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.fhirpath/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - com.google.android.fhir.datacapture.fhirpath - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture.fhirpath

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
object ExpressionEvaluator

Evaluates an expression and returns its result.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/extract.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/extract.html deleted file mode 100644 index 9eefbc11b2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/extract.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - extract - - - - -
-
-
-
-
-
- -
-

extract

-
-
suspend fun extract(questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>, structureMapExtractionContext: StructureMapExtractionContext? = null): <ERROR CLASS>

Extract FHIR resources from a questionnaire and questionnaireResponse.

This method will perform StructureMap-based extraction if the Questionnaire specified by questionnaire includes a targetStructureMap extension. In this case structureMapExtractionContext is required; extraction will fail and an empty Bundle is returned if structureMapExtractionContext is not provided.

Otherwise, this method will perform Definition-based extraction .

Return

Bundle containing the extracted Resources or empty Bundle if the extraction fails. An exception might also be thrown in a few cases

Parameters

questionnaire

A Questionnaire with data extraction extensions.

questionnaireResponse

A QuestionnaireResponse with answers for questionnaire.

structureMapExtractionContext

The IWorkerContext may be used along with StructureMapUtilities to parse the script and convert it into StructureMap.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/index.html deleted file mode 100644 index 0ede198f27..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - ResourceMapper - - - - -
-
-
-
-
-
- -
-

ResourceMapper

-
object ResourceMapper

Maps a QuestionnaireResponse to FHIR resources and vice versa.

The process of converting QuestionnaireResponse s to other FHIR resources is called extraction. The reverse process of converting existing FHIR resources to QuestionnaireResponse s to be used to pre-fill the UI is called population.

This class supports Definition-based extraction , StructureMap-based extraction , and expression-based population .

See the developer guide for more information.

-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
suspend fun extract(questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>, structureMapExtractionContext: StructureMapExtractionContext? = null): <ERROR CLASS>

Extract FHIR resources from a questionnaire and questionnaireResponse.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
suspend fun populate(questionnaire: <ERROR CLASS>, vararg resources: <ERROR CLASS>): <ERROR CLASS>

Performs Expression-based population and returns a QuestionnaireResponse for the questionnaire that is populated from the resources.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/populate.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/populate.html deleted file mode 100644 index aa091fc910..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/populate.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - populate - - - - -
-
-
-
-
-
- -
-

populate

-
-
suspend fun populate(questionnaire: <ERROR CLASS>, vararg resources: <ERROR CLASS>): <ERROR CLASS>

Performs Expression-based population and returns a QuestionnaireResponse for the questionnaire that is populated from the resources.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/-structure-map-extraction-context.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/-structure-map-extraction-context.html deleted file mode 100644 index 897bcdba73..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/-structure-map-extraction-context.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - StructureMapExtractionContext - - - - -
-
-
-
-
-
- -
-

StructureMapExtractionContext

-
-
fun StructureMapExtractionContext(context: <ERROR CLASS>, transformSupportServices: <ERROR CLASS>? = null, structureMapProvider: suspend (String, <ERROR CLASS>) -> <ERROR CLASS>?)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/context.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/context.html deleted file mode 100644 index 041b00c3b7..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/context.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - context - - - - -
-
-
-
-
-
- -
-

context

-
-
val context: <ERROR CLASS>

The application context.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/index.html deleted file mode 100644 index 8ea025f979..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/index.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - StructureMapExtractionContext - - - - -
-
-
-
-
-
- -
-

StructureMapExtractionContext

-
data class StructureMapExtractionContext(context: <ERROR CLASS>, transformSupportServices: <ERROR CLASS>?, structureMapProvider: suspend (String, <ERROR CLASS>) -> <ERROR CLASS>?)

Data used during StructureMap-based extraction.

-
-
-
-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun StructureMapExtractionContext(context: <ERROR CLASS>, transformSupportServices: <ERROR CLASS>? = null, structureMapProvider: suspend (String, <ERROR CLASS>) -> <ERROR CLASS>?)
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val context: <ERROR CLASS>

The application context.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val structureMapProvider: suspend (String, <ERROR CLASS>) -> <ERROR CLASS>?

A lambda function which returns a StructureMap. Depending on your app this could be hard-coded or use the String parameter to fetch the appropriate structure map.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val transformSupportServices: <ERROR CLASS>? = null

Optionally pass a custom version of StructureMapUtilities.ITransformerServices to support specific use cases.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/structure-map-provider.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/structure-map-provider.html deleted file mode 100644 index 9f73508e24..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/structure-map-provider.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - structureMapProvider - - - - -
-
-
-
-
-
- -
-

structureMapProvider

-
-
val structureMapProvider: suspend (String, <ERROR CLASS>) -> <ERROR CLASS>?

A lambda function which returns a StructureMap. Depending on your app this could be hard-coded or use the String parameter to fetch the appropriate structure map.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/transform-support-services.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/transform-support-services.html deleted file mode 100644 index 5f81872530..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/transform-support-services.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - transformSupportServices - - - - -
-
-
-
-
-
- -
-

transformSupportServices

-
-
val transformSupportServices: <ERROR CLASS>? = null

Optionally pass a custom version of StructureMapUtilities.ITransformerServices to support specific use cases.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/index.html deleted file mode 100644 index 54c94f49d0..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.mapping/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - com.google.android.fhir.datacapture.mapping - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture.mapping

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
object ResourceMapper

Maps a QuestionnaireResponse to FHIR resources and vice versa.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
data class StructureMapExtractionContext(context: <ERROR CLASS>, transformSupportServices: <ERROR CLASS>?, structureMapProvider: suspend (String, <ERROR CLASS>) -> <ERROR CLASS>?)

Data used during StructureMap-based extraction.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/-invalid.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/-invalid.html deleted file mode 100644 index 09a6540c7d..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/-invalid.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - Invalid - - - - -
-
-
-
-
-
- -
-

Invalid

-
-
fun Invalid(validationMessages: List<String>)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/get-single-string-validation-message.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/get-single-string-validation-message.html deleted file mode 100644 index 8a3ab481cc..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/get-single-string-validation-message.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getSingleStringValidationMessage - - - - -
-
-
-
-
-
- -
-

getSingleStringValidationMessage

-
-
fun getSingleStringValidationMessage(): <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/index.html deleted file mode 100644 index d825ad93fb..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-invalid/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - Invalid - - - - -
-
-
-
-
-
- -
-

Invalid

-
data class Invalid(validationMessages: List<String>) : ValidationResult
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun getSingleStringValidationMessage(): <ERROR CLASS>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-not-validated/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-not-validated/index.html deleted file mode 100644 index a644f16765..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-not-validated/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - NotValidated - - - - -
-
-
-
-
-
- -
-

NotValidated

-
object NotValidated : ValidationResult
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/check-questionnaire-response.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/check-questionnaire-response.html deleted file mode 100644 index f36ff2d70b..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/check-questionnaire-response.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - checkQuestionnaireResponse - - - - -
-
-
-
-
-
- -
-

checkQuestionnaireResponse

-
-
fun checkQuestionnaireResponse(questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>)

Checks that the QuestionnaireResponse is structurally consistent with the Questionnaire.

  • Each item in the QuestionnaireResponse must have a corresponding item in the Questionnaire with the same linkId and type

  • The order of items in the QuestionnaireResponse must be the same as the order of the items in the Questionnaire

Items nested under group and items nested under answer should follow the same rules recursively

Note that although all the items in the Questionnaire SHOULD be included in the QuestionnaireResponse, we do not throw an exception for missing items. This allows the QuestionnaireResponse to not include items that are not enabled due to enableWhen.

Throws

if multiple answers are provided for a non-repeat questionnaire item

See http://www.hl7.org/fhir/questionnaireresponse.html#link for more information.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/index.html deleted file mode 100644 index b8cee567c5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - QuestionnaireResponseValidator - - - - -
-
-
-
-
-
- -
-

QuestionnaireResponseValidator

-
object QuestionnaireResponseValidator
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun checkQuestionnaireResponse(questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>)

Checks that the QuestionnaireResponse is structurally consistent with the Questionnaire.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun validateQuestionnaireResponse(questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>, context: <ERROR CLASS>): Map<String, List<ValidationResult>>

Validates QuestionnaireResponse using the constraints defined in the Questionnaire.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/validate-questionnaire-response.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/validate-questionnaire-response.html deleted file mode 100644 index 479b5af8c5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/validate-questionnaire-response.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - validateQuestionnaireResponse - - - - -
-
-
-
-
-
- -
-

validateQuestionnaireResponse

-
-
fun validateQuestionnaireResponse(questionnaire: <ERROR CLASS>, questionnaireResponse: <ERROR CLASS>, context: <ERROR CLASS>): Map<String, List<ValidationResult>>

Validates QuestionnaireResponse using the constraints defined in the Questionnaire.

  • Each item in the QuestionnaireResponse must have a corresponding item in the Questionnaire with the same linkId and type

  • The order of items in the QuestionnaireResponse must be the same as the order of the items in the Questionnaire

Items nested under group and items nested under answer should follow the same rules recursively

Note that although all the items in the Questionnaire SHOULD be included in the QuestionnaireResponse, we do not throw an exception for missing items. This allows the QuestionnaireResponse to not include items that are not enabled due to enableWhen.

Return

a maplinkIdToValidationResultMap of linkIds to list of ValidationResult

Throws

if multiple answers are provided for a non-repeat questionnaire item

See http://www.hl7.org/fhir/questionnaireresponse.html#link for more information.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-valid/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-valid/index.html deleted file mode 100644 index 6814e55517..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-valid/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - Valid - - - - -
-
-
-
-
-
- -
-

Valid

-
object Valid : ValidationResult
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-validation-result/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-validation-result/index.html deleted file mode 100644 index cf789589c3..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/-validation-result/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - ValidationResult - - - - -
-
-
-
-
-
- -
-

ValidationResult

-
sealed class ValidationResult
-
-
-
-
-

Inheritors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/index.html deleted file mode 100644 index 65fac824e1..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/index.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - com.google.android.fhir.datacapture.validation - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture.validation

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
data class Invalid(validationMessages: List<String>) : ValidationResult
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
object NotValidated : ValidationResult
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
object QuestionnaireResponseValidator
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
object Valid : ValidationResult
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
sealed class ValidationResult
-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun <ERROR CLASS>.valueOrCalculateValue(): <ERROR CLASS>?
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/value-or-calculate-value.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/value-or-calculate-value.html deleted file mode 100644 index 17ea32ea53..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.validation/value-or-calculate-value.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - valueOrCalculateValue - - - - -
-
-
-
-
-
- -
-

valueOrCalculateValue

-
-
fun <ERROR CLASS>.valueOrCalculateValue(): <ERROR CLASS>?
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-d-e-c-i-m-a-l_-i-n-p-u-t_-t-y-p-e.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-d-e-c-i-m-a-l_-i-n-p-u-t_-t-y-p-e.html deleted file mode 100644 index 31e0395dde..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-d-e-c-i-m-a-l_-i-n-p-u-t_-t-y-p-e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - DECIMAL_INPUT_TYPE - - - - -
-
-
-
-
-
- -
-

DECIMAL_INPUT_TYPE

-
-
const val DECIMAL_INPUT_TYPE: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/-margin-item-decoration.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/-margin-item-decoration.html deleted file mode 100644 index d09998abf3..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/-margin-item-decoration.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - MarginItemDecoration - - - - -
-
-
-
-
-
- -
-

MarginItemDecoration

-
-
fun MarginItemDecoration(margin: Int)

Parameters

margin

Int value for the desired margin used as item offset

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/get-item-offsets.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/get-item-offsets.html deleted file mode 100644 index 2f5488275f..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/get-item-offsets.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getItemOffsets - - - - -
-
-
-
-
-
- -
-

getItemOffsets

-
-
open fun getItemOffsets(outRect: <ERROR CLASS>, view: <ERROR CLASS>, parent: <ERROR CLASS>, state: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/index.html deleted file mode 100644 index e2a68dd7fc..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - MarginItemDecoration - - - - -
-
-
-
-
-
- -
-

MarginItemDecoration

-
class MarginItemDecoration(margin: Int)

ItemDecoration that applies a specified margin to the items. Use this instead of manually adding a margin to the item's layout.

-
-
-
-
-

Parameters

-
-
margin

Int value for the desired margin used as item offset

-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun MarginItemDecoration(margin: Int)
-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun getItemOffsets(outRect: <ERROR CLASS>, view: <ERROR CLASS>, parent: <ERROR CLASS>, state: <ERROR CLASS>)
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/-option-select-option.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/-option-select-option.html deleted file mode 100644 index 3b52f88122..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/-option-select-option.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - OptionSelectOption - - - - -
-
-
-
-
-
- -
-

OptionSelectOption

-
-
fun OptionSelectOption(item: <ERROR CLASS>, selected: Boolean)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/display-string.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/display-string.html deleted file mode 100644 index 1c12fc0b06..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/display-string.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - displayString - - - - -
-
-
-
-
-
- -
-

displayString

-
-
val displayString: String
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/index.html deleted file mode 100644 index 940210d5eb..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/index.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - OptionSelectOption - - - - -
-
-
-
-
-
- -
-

OptionSelectOption

-
data class OptionSelectOption(item: <ERROR CLASS>, selected: Boolean)

Represents selectable options in the multi-select page.

-
-
-
-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun OptionSelectOption(item: <ERROR CLASS>, selected: Boolean)
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val displayString: String
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val item: <ERROR CLASS>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val selected: Boolean
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/item.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/item.html deleted file mode 100644 index 8e111cdce9..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/item.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - item - - - - -
-
-
-
-
-
- -
-

item

-
-
val item: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/selected.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/selected.html deleted file mode 100644 index 05118a13fb..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/selected.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - selected - - - - -
-
-
-
-
-
- -
-

selected

-
-
val selected: Boolean
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-q-u-a-n-t-i-t-y_-i-n-p-u-t_-t-y-p-e.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-q-u-a-n-t-i-t-y_-i-n-p-u-t_-t-y-p-e.html deleted file mode 100644 index 2feca49f56..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-q-u-a-n-t-i-t-y_-i-n-p-u-t_-t-y-p-e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - QUANTITY_INPUT_TYPE - - - - -
-
-
-
-
-
- -
-

QUANTITY_INPUT_TYPE

-
-
const val QUANTITY_INPUT_TYPE: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/-questionnaire-item-edit-text-view-holder-delegate.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/-questionnaire-item-edit-text-view-holder-delegate.html deleted file mode 100644 index fda553b405..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/-questionnaire-item-edit-text-view-holder-delegate.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - QuestionnaireItemEditTextViewHolderDelegate - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemEditTextViewHolderDelegate

-
-
fun QuestionnaireItemEditTextViewHolderDelegate(rawInputType: Int)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/bind.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/bind.html deleted file mode 100644 index 4aa633d71b..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/bind.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - bind - - - - -
-
-
-
-
-
- -
-

bind

-
-
open override fun bind(questionnaireItemViewItem: QuestionnaireItemViewItem)

Binds a QuestionnaireItemViewItem to the view.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/display-validation-result.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/display-validation-result.html deleted file mode 100644 index 494aabad55..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/display-validation-result.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - displayValidationResult - - - - -
-
-
-
-
-
- -
-

displayValidationResult

-
-
open override fun displayValidationResult(validationResult: ValidationResult)

Displays validation messages on the view.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-text.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-text.html deleted file mode 100644 index b443f20bb2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-text.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getText - - - - -
-
-
-
-
-
- -
-

getText

-
-
abstract fun getText(answer: <ERROR CLASS>?): String

Returns the text that should be displayed in the TextInputEditText from the existing answer to the question (may be input by the user or previously recorded).

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-value.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-value.html deleted file mode 100644 index 99b9e4744b..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-value.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getValue - - - - -
-
-
-
-
-
- -
-

getValue

-
-
abstract fun getValue(text: String): <ERROR CLASS>?

Returns the answer that should be recorded given the text input by the user.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/index.html deleted file mode 100644 index e48038fb9d..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/index.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - QuestionnaireItemEditTextViewHolderDelegate - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemEditTextViewHolderDelegate

-
abstract class QuestionnaireItemEditTextViewHolderDelegate(rawInputType: Int) : QuestionnaireItemViewHolderDelegate
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open override fun bind(questionnaireItemViewItem: QuestionnaireItemViewItem)

Binds a QuestionnaireItemViewItem to the view.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open override fun displayValidationResult(validationResult: ValidationResult)

Displays validation messages on the view.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun getText(answer: <ERROR CLASS>?): String

Returns the text that should be displayed in the TextInputEditText from the existing answer to the question (may be input by the user or previously recorded).

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun getValue(text: String): <ERROR CLASS>?

Returns the answer that should be recorded given the text input by the user.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open override fun init(itemView: <ERROR CLASS>)

Initializes the view in QuestionnaireItemViewHolder. Any listeners to record user input should be set in this function.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun isTextUpdatesRequired(answerText: String, inputText: String): Boolean
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open override fun setReadOnly(isReadOnly: Boolean)

Sets view read only if isReadOnly is true.

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open lateinit override var questionnaireItemViewItem: QuestionnaireItemViewItem
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/init.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/init.html deleted file mode 100644 index 46979ae810..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/init.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - init - - - - -
-
-
-
-
-
- -
-

init

-
-
open override fun init(itemView: <ERROR CLASS>)

Initializes the view in QuestionnaireItemViewHolder. Any listeners to record user input should be set in this function.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/is-text-updates-required.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/is-text-updates-required.html deleted file mode 100644 index 7e79ae032a..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/is-text-updates-required.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - isTextUpdatesRequired - - - - -
-
-
-
-
-
- -
-

isTextUpdatesRequired

-
-
open fun isTextUpdatesRequired(answerText: String, inputText: String): Boolean
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/questionnaire-item-view-item.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/questionnaire-item-view-item.html deleted file mode 100644 index d9d11941e8..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/questionnaire-item-view-item.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - questionnaireItemViewItem - - - - -
-
-
-
-
-
- -
-

questionnaireItemViewItem

-
-
open lateinit override var questionnaireItemViewItem: QuestionnaireItemViewItem
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/set-read-only.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/set-read-only.html deleted file mode 100644 index 1f1c0ed546..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/set-read-only.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - setReadOnly - - - - -
-
-
-
-
-
- -
-

setReadOnly

-
-
open override fun setReadOnly(isReadOnly: Boolean)

Sets view read only if isReadOnly is true.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/bind.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/bind.html deleted file mode 100644 index 9059289a07..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/bind.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - bind - - - - -
-
-
-
-
-
- -
-

bind

-
-
abstract fun bind(questionnaireItemViewItem: QuestionnaireItemViewItem)

Binds a QuestionnaireItemViewItem to the view.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/display-validation-result.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/display-validation-result.html deleted file mode 100644 index d05b6dd38c..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/display-validation-result.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - displayValidationResult - - - - -
-
-
-
-
-
- -
-

displayValidationResult

-
-
abstract fun displayValidationResult(validationResult: ValidationResult)

Displays validation messages on the view.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/index.html deleted file mode 100644 index 82483cb607..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/index.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - QuestionnaireItemViewHolderDelegate - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolderDelegate

-
interface QuestionnaireItemViewHolderDelegate

Delegate for QuestionnaireItemViewHolder.

This interface provides an abstraction of the operations that need to be implemented for a type of view in the questionnaire.

There is a 1:1 relationship between this and QuestionnaireItemViewHolder. In other words, there is a unique QuestionnaireItemViewHolderDelegate for each QuestionnaireItemViewHolder. This is critical for the correctness of the recycler view.

-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun bind(questionnaireItemViewItem: QuestionnaireItemViewItem)

Binds a QuestionnaireItemViewItem to the view.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun displayValidationResult(validationResult: ValidationResult)

Displays validation messages on the view.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun init(itemView: <ERROR CLASS>)

Initializes the view in QuestionnaireItemViewHolder. Any listeners to record user input should be set in this function.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun setReadOnly(isReadOnly: Boolean)

Sets view read only if isReadOnly is true.

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract var questionnaireItemViewItem: QuestionnaireItemViewItem
-
-
-
-
-
-

Inheritors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/init.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/init.html deleted file mode 100644 index 63fd225922..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/init.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - init - - - - -
-
-
-
-
-
- -
-

init

-
-
abstract fun init(itemView: <ERROR CLASS>)

Initializes the view in QuestionnaireItemViewHolder. Any listeners to record user input should be set in this function.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/questionnaire-item-view-item.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/questionnaire-item-view-item.html deleted file mode 100644 index 5d7e57c358..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/questionnaire-item-view-item.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - questionnaireItemViewItem - - - - -
-
-
-
-
-
- -
-

questionnaireItemViewItem

-
-
abstract var questionnaireItemViewItem: QuestionnaireItemViewItem
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/set-read-only.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/set-read-only.html deleted file mode 100644 index d0c4218e65..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/set-read-only.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - setReadOnly - - - - -
-
-
-
-
-
- -
-

setReadOnly

-
-
abstract fun setReadOnly(isReadOnly: Boolean)

Sets view read only if isReadOnly is true.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/-questionnaire-item-view-holder-factory.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/-questionnaire-item-view-holder-factory.html deleted file mode 100644 index f18205d7c9..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/-questionnaire-item-view-holder-factory.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - QuestionnaireItemViewHolderFactory - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolderFactory

-
-
fun QuestionnaireItemViewHolderFactory(resId: Int)

Parameters

resId

the layout resource for the view

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/create.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/create.html deleted file mode 100644 index b6d7fe2e7d..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/create.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - create - - - - -
-
-
-
-
-
- -
-

create

-
-
fun create(parent: <ERROR CLASS>): QuestionnaireItemViewHolder
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/get-questionnaire-item-view-holder-delegate.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/get-questionnaire-item-view-holder-delegate.html deleted file mode 100644 index 372c1f3b08..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/get-questionnaire-item-view-holder-delegate.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getQuestionnaireItemViewHolderDelegate - - - - -
-
-
-
-
-
- -
-

getQuestionnaireItemViewHolderDelegate

-
-

Returns a QuestionnaireItemViewHolderDelegate that handles the initialization of views and binding of items in RecyclerView.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/index.html deleted file mode 100644 index b6dcd28058..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - QuestionnaireItemViewHolderFactory - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolderFactory

-
abstract class QuestionnaireItemViewHolderFactory(resId: Int)

Factory for QuestionnaireItemViewHolder.

-
-
-
-
-

Parameters

-
-
resId

the layout resource for the view

-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun QuestionnaireItemViewHolderFactory(resId: Int)
-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun create(parent: <ERROR CLASS>): QuestionnaireItemViewHolder
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-

Returns a QuestionnaireItemViewHolderDelegate that handles the initialization of views and binding of items in RecyclerView.

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open val resId: Int
-
-
-
-
-
-

Inheritors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/res-id.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/res-id.html deleted file mode 100644 index 83c0345e51..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/res-id.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - resId - - - - -
-
-
-
-
-
- -
-

resId

-
-
open val resId: Int
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/-questionnaire-item-view-holder.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/-questionnaire-item-view-holder.html deleted file mode 100644 index 632af3d1ee..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/-questionnaire-item-view-holder.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - QuestionnaireItemViewHolder - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolder

-
-
fun QuestionnaireItemViewHolder(itemView: <ERROR CLASS>, delegate: QuestionnaireItemViewHolderDelegate)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/bind.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/bind.html deleted file mode 100644 index d75b3957f2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/bind.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - bind - - - - -
-
-
-
-
-
- -
-

bind

-
-
open fun bind(questionnaireItemViewItem: QuestionnaireItemViewItem)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/index.html deleted file mode 100644 index d89c1b947f..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - QuestionnaireItemViewHolder - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolder

-
open class QuestionnaireItemViewHolder(itemView: <ERROR CLASS>, delegate: QuestionnaireItemViewHolderDelegate)

The RecyclerView.ViewHolder for QuestionnaireItemViewItem.

This is used by QuestionnaireItemAdapter to initialize views and bind items in RecyclerView.

-
-
-
-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun QuestionnaireItemViewHolder(itemView: <ERROR CLASS>, delegate: QuestionnaireItemViewHolderDelegate)
-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun bind(questionnaireItemViewItem: QuestionnaireItemViewItem)
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/-questionnaire-item-view-item.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/-questionnaire-item-view-item.html deleted file mode 100644 index ba46161b57..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/-questionnaire-item-view-item.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - QuestionnaireItemViewItem - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewItem

-
-
fun QuestionnaireItemViewItem(questionnaireItem: <ERROR CLASS>, questionnaireResponseItem: <ERROR CLASS>, validationResult: ValidationResult, answersChangedCallback: (<ERROR CLASS>, <ERROR CLASS>, List<<ERROR CLASS>>) -> Unit, resolveAnswerValueSet: suspend (String) -> List<<ERROR CLASS>> = { - emptyList() - }, resolveAnswerExpression: suspend (<ERROR CLASS>) -> List<<ERROR CLASS>> = { - emptyList() - })

Parameters

questionnaireItem

the Questionnaire.QuestionnaireItemComponent in the Questionnaire

questionnaireResponseItem

the QuestionnaireResponse.QuestionnaireResponseItemComponent in the QuestionnaireResponse

validationResult

the ValidationResult of the answer(s) against the questionnaireItem

answersChangedCallback

the callback to notify the view model that the answers have been changed for the QuestionnaireResponse.QuestionnaireResponseItemComponent

resolveAnswerValueSet

the callback to resolve the answer value set and return the answer

resolveAnswerExpression

the callback to resolve answer options when answer-expression extension exists options

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/answers.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/answers.html deleted file mode 100644 index 24ed4f832d..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/answers.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - answers - - - - -
-
-
-
-
-
- -
-

answers

-
-
val answers: List<<ERROR CLASS>>

A read-only list of answers to be rendered in the view.

The view should call the APIs provided in this class (setAnswer, addAnswer, removeAnswer and clearAnswer) to modify the answers. This is to make sure any updates to the answers are propagated to the view model and a subsequent UI refresh will be triggered (e.g. in case the enablement status or validation results of this or other questions are affected).

This is a deep copy of the answers in the QuestionnaireResponse.QuestionnaireResponseItemComponent so that proper comparisons can be carried out for the RecyclerView.Adapter to decide which items need to be updated.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/clear-answer.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/clear-answer.html deleted file mode 100644 index dba5eeb14f..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/clear-answer.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - clearAnswer - - - - -
-
-
-
-
-
- -
-

clearAnswer

-
-
fun clearAnswer()

Clears existing answers.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/index.html deleted file mode 100644 index 093f6530b0..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - QuestionnaireItemViewItem - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewItem

-
data class QuestionnaireItemViewItem(questionnaireItem: <ERROR CLASS>, questionnaireResponseItem: <ERROR CLASS>, validationResult: ValidationResult, answersChangedCallback: (<ERROR CLASS>, <ERROR CLASS>, List<<ERROR CLASS>>) -> Unit, resolveAnswerValueSet: suspend (String) -> List<<ERROR CLASS>>, resolveAnswerExpression: suspend (<ERROR CLASS>) -> List<<ERROR CLASS>>)

Data item for QuestionnaireItemViewHolder in RecyclerView.

The view should use questionnaireItem, answers, answerOption, and validationResult to render the data item in the UI. The view SHOULD NOT mutate the data using these properties.

The view should use the following answer APIs to update the answer(s):

  • setAnswer (for single and repeated answers)

  • clearAnswer (for single and repeated answers)

  • addAnswer (for repeated answers only)

  • removeAnswer (for repeated answers only)

Updates to the answers using these APIs will invoke answersChangedCallback to notify the view model that the answer(s) have been changed. This will trigger a re-render of the RecyclerView UI.

-
-
-
-
-

Parameters

-
-
questionnaireItem

the Questionnaire.QuestionnaireItemComponent in the Questionnaire

questionnaireResponseItem

the QuestionnaireResponse.QuestionnaireResponseItemComponent in the QuestionnaireResponse

validationResult

the ValidationResult of the answer(s) against the questionnaireItem

answersChangedCallback

the callback to notify the view model that the answers have been changed for the QuestionnaireResponse.QuestionnaireResponseItemComponent

resolveAnswerValueSet

the callback to resolve the answer value set and return the answer

resolveAnswerExpression

the callback to resolve answer options when answer-expression extension exists options

-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun QuestionnaireItemViewItem(questionnaireItem: <ERROR CLASS>, questionnaireResponseItem: <ERROR CLASS>, validationResult: ValidationResult, answersChangedCallback: (<ERROR CLASS>, <ERROR CLASS>, List<<ERROR CLASS>>) -> Unit, resolveAnswerValueSet: suspend (String) -> List<<ERROR CLASS>> = { - emptyList() - }, resolveAnswerExpression: suspend (<ERROR CLASS>) -> List<<ERROR CLASS>> = { - emptyList() - })
-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun clearAnswer()

Clears existing answers.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun isAnswerOptionSelected(answerOption: <ERROR CLASS>): Boolean
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun setAnswer(vararg questionnaireResponseItemAnswerComponent: <ERROR CLASS>)

Updates the answers. This will override any existing answers.

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val answers: List<<ERROR CLASS>>

A read-only list of answers to be rendered in the view.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val questionnaireItem: <ERROR CLASS>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val validationResult: ValidationResult
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/is-answer-option-selected.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/is-answer-option-selected.html deleted file mode 100644 index b13f707ec5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/is-answer-option-selected.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - isAnswerOptionSelected - - - - -
-
-
-
-
-
- -
-

isAnswerOptionSelected

-
-
fun isAnswerOptionSelected(answerOption: <ERROR CLASS>): Boolean
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/questionnaire-item.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/questionnaire-item.html deleted file mode 100644 index 6118589c0e..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/questionnaire-item.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - questionnaireItem - - - - -
-
-
-
-
-
- -
-

questionnaireItem

-
-
val questionnaireItem: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/set-answer.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/set-answer.html deleted file mode 100644 index 7abfcaeeee..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/set-answer.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - setAnswer - - - - -
-
-
-
-
-
- -
-

setAnswer

-
-
fun setAnswer(vararg questionnaireResponseItemAnswerComponent: <ERROR CLASS>)

Updates the answers. This will override any existing answers.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/validation-result.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/validation-result.html deleted file mode 100644 index 492c166143..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/validation-result.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - validationResult - - - - -
-
-
-
-
-
- -
-

validationResult

-
-
val validationResult: ValidationResult
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/-selected-options.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/-selected-options.html deleted file mode 100644 index 52c70db6e2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/-selected-options.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - SelectedOptions - - - - -
-
-
-
-
-
- -
-

SelectedOptions

-
-
fun SelectedOptions(options: List<OptionSelectOption>, otherOptions: List<String>)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/index.html deleted file mode 100644 index 4d9c1eabfd..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - SelectedOptions - - - - -
-
-
-
-
-
- -
-

SelectedOptions

-
data class SelectedOptions(options: List<OptionSelectOption>, otherOptions: List<String>)
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val options: List<OptionSelectOption>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val otherOptions: List<String>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val selectedSummary: String
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/options.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/options.html deleted file mode 100644 index b3500dfac2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/options.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - options - - - - -
-
-
-
-
-
- -
-

options

-
-
val options: List<OptionSelectOption>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/other-options.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/other-options.html deleted file mode 100644 index 036898fdb5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/other-options.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - otherOptions - - - - -
-
-
-
-
-
- -
-

otherOptions

-
-
val otherOptions: List<String>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/selected-summary.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/selected-summary.html deleted file mode 100644 index 4884a9b304..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/-selected-options/selected-summary.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - selectedSummary - - - - -
-
-
-
-
-
- -
-

selectedSummary

-
-
val selectedSummary: String
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/index.html deleted file mode 100644 index e8b5b011a3..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/index.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - com.google.android.fhir.datacapture.views - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture.views

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
class MarginItemDecoration(margin: Int)

ItemDecoration that applies a specified margin to the items. Use this instead of manually adding a margin to the item's layout.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
data class OptionSelectOption(item: <ERROR CLASS>, selected: Boolean)

Represents selectable options in the multi-select page.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract class QuestionnaireItemEditTextViewHolderDelegate(rawInputType: Int) : QuestionnaireItemViewHolderDelegate
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open class QuestionnaireItemViewHolder(itemView: <ERROR CLASS>, delegate: QuestionnaireItemViewHolderDelegate)

The RecyclerView.ViewHolder for QuestionnaireItemViewItem.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
interface QuestionnaireItemViewHolderDelegate
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract class QuestionnaireItemViewHolderFactory(resId: Int)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
data class QuestionnaireItemViewItem(questionnaireItem: <ERROR CLASS>, questionnaireResponseItem: <ERROR CLASS>, validationResult: ValidationResult, answersChangedCallback: (<ERROR CLASS>, <ERROR CLASS>, List<<ERROR CLASS>>) -> Unit, resolveAnswerValueSet: suspend (String) -> List<<ERROR CLASS>>, resolveAnswerExpression: suspend (<ERROR CLASS>) -> List<<ERROR CLASS>>)

Data item for QuestionnaireItemViewHolder in RecyclerView.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
data class SelectedOptions(options: List<OptionSelectOption>, otherOptions: List<String>)
-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun <ERROR CLASS>.tryUnwrapContext(): <ERROR CLASS>?

Returns the AppCompatActivity if there exists one wrapped inside ContextThemeWrapper s, or null otherwise.

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
const val DECIMAL_INPUT_TYPE: <ERROR CLASS>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val QUANTITY_INPUT_TYPE: <ERROR CLASS>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/try-unwrap-context.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/try-unwrap-context.html deleted file mode 100644 index 5b17f84ba9..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture.views/try-unwrap-context.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - tryUnwrapContext - - - - -
-
-
-
-
-
- -
-

tryUnwrapContext

-
-
fun <ERROR CLASS>.tryUnwrapContext(): <ERROR CLASS>?

Returns the AppCompatActivity if there exists one wrapped inside ContextThemeWrapper s, or null otherwise.

This function is inspired by the function with the same name in AppCompateDelegateImpl. See https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegateImpl.java;l=1615

TODO: find a more robust way to do this as it is not guaranteed that the activity is an AppCompatActivity.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-data-capture-config.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-data-capture-config.html deleted file mode 100644 index 6bfc0e5c7c..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-data-capture-config.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - DataCaptureConfig - - - - -
-
-
-
-
-
- -
-

DataCaptureConfig

-
-
fun DataCaptureConfig(valueSetResolverExternal: ExternalAnswerValueSetResolver? = null, npmPackage: <ERROR CLASS>? = null)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/get-data-capture-config.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/get-data-capture-config.html deleted file mode 100644 index 5781274de4..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/get-data-capture-config.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getDataCaptureConfig - - - - -
-
-
-
-
-
- -
-

getDataCaptureConfig

-
-
abstract fun getDataCaptureConfig(): DataCaptureConfig
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/index.html deleted file mode 100644 index eaccf145e7..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - Provider - - - - -
-
-
-
-
-
- -
-

Provider

-
interface Provider

A class that can provide the DataCaptureConfig for the Structured Data Capture Library. To do this, implement the DataCaptureConfig.Provider interface on your Application class. You should provide the same configuration throughout the lifecycle of your application. The library may cache the configuration and different configurations will be ignored.

-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract fun getDataCaptureConfig(): DataCaptureConfig
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/index.html deleted file mode 100644 index 6161c72638..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/index.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - DataCaptureConfig - - - - -
-
-
-
-
-
- -
-

DataCaptureConfig

-
data class DataCaptureConfig(valueSetResolverExternal: ExternalAnswerValueSetResolver?, npmPackage: <ERROR CLASS>?)

The App developers may provide the DataCaptureConfig for the DataCapture library by implementing Provider interface in the Application class. The library would load and cache the configuration by calling Provider.getDataCaptureConfig.

NOTE: App developers should make sure that Provider.getDataCaptureConfig provides a constant DataCaptureConfig throughout the lifecycle of the application.

-
-
-
-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun DataCaptureConfig(valueSetResolverExternal: ExternalAnswerValueSetResolver? = null, npmPackage: <ERROR CLASS>? = null)
-
-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
interface Provider

A class that can provide the DataCaptureConfig for the Structured Data Capture Library. To do this, implement the DataCaptureConfig.Provider interface on your Application class. You should provide the same configuration throughout the lifecycle of your application. The library may cache the configuration and different configurations will be ignored.

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
var npmPackage: <ERROR CLASS>? = null

A NpmPackage may be set by the client for Structure-Map based Resource Extraction.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
var valueSetResolverExternal: ExternalAnswerValueSetResolver? = null

An ExternalAnswerValueSetResolver may be set to provide answer options dynamically for choice and open-choice type questions.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/npm-package.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/npm-package.html deleted file mode 100644 index c4deba735f..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/npm-package.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - npmPackage - - - - -
-
-
-
-
-
- -
-

npmPackage

-
-
var npmPackage: <ERROR CLASS>? = null

A NpmPackage may be set by the client for Structure-Map based Resource Extraction.

The loading and extraction of a NpmPackage may take multiple seconds, so the client app should try to include the smallest NpmPackage possible that contains only the resources needed by StructureMaps used by the client app.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/value-set-resolver-external.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/value-set-resolver-external.html deleted file mode 100644 index 5f9f83c9cf..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-data-capture-config/value-set-resolver-external.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - valueSetResolverExternal - - - - -
-
-
-
-
-
- -
-

valueSetResolverExternal

-
-
var valueSetResolverExternal: ExternalAnswerValueSetResolver? = null

An ExternalAnswerValueSetResolver may be set to provide answer options dynamically for choice and open-choice type questions.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/from.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/from.html deleted file mode 100644 index 6a92347ec5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/from.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - from - - - - -
-
-
-
-
-
- -
-

from

-
-
fun from(type: String?): EntryMode?
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/index.html deleted file mode 100644 index 64e7aca8da..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - Companion - - - - -
-
-
-
-
-
- -
-

Companion

-
object Companion
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun from(type: String?): EntryMode?
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-p-r-i-o-r_-e-d-i-t/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-p-r-i-o-r_-e-d-i-t/index.html deleted file mode 100644 index 372f9d6b2f..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-p-r-i-o-r_-e-d-i-t/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - PRIOR_EDIT - - - - -
-
-
-
-
-
- -
-

PRIOR_EDIT

-
PRIOR_EDIT("prior-edit")
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-r-a-n-d-o-m/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-r-a-n-d-o-m/index.html deleted file mode 100644 index 6ce77d49ae..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-r-a-n-d-o-m/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - RANDOM - - - - -
-
-
-
-
-
- -
-

RANDOM

-
RANDOM("random")
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-s-e-q-u-e-n-t-i-a-l/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-s-e-q-u-e-n-t-i-a-l/index.html deleted file mode 100644 index 5ffe8481eb..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/-s-e-q-u-e-n-t-i-a-l/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - SEQUENTIAL - - - - -
-
-
-
-
-
- -
-

SEQUENTIAL

-
SEQUENTIAL("sequential")
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/index.html deleted file mode 100644 index cbb3516023..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - EntryMode - - - - -
-
-
-
-
-
- -
-

EntryMode

-
enum EntryMode : Enum<EntryMode>
-
-
-
-
-

Entries

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
SEQUENTIAL("sequential")
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
RANDOM("random")
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
PRIOR_EDIT("prior-edit")
-
-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
object Companion
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val value: String
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/value.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/value.html deleted file mode 100644 index 5d2ac5a000..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-entry-mode/value.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - value - - - - -
-
-
-
-
-
- -
-

value

-
-
val value: String
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/index.html deleted file mode 100644 index d16297751c..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - ExternalAnswerValueSetResolver - - - - -
-
-
-
-
-
- -
-

ExternalAnswerValueSetResolver

-
interface ExternalAnswerValueSetResolver

Resolves external answer value sets not defined in the questionnaire's contained element. This allows the library to render answer options to choice and open-choice type questions more dynamically.

NOTE: The result of the resolution may be cached to improve performance. In other words, the resolver may be called only once after which the same answer value set may be used multiple times in the UI to populate answer options.

-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
abstract suspend fun resolve(uri: String): List<<ERROR CLASS>>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/resolve.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/resolve.html deleted file mode 100644 index 6de0a8334a..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/resolve.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - resolve - - - - -
-
-
-
-
-
- -
-

resolve

-
-
abstract suspend fun resolve(uri: String): List<<ERROR CLASS>>
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-e-n-a-b-l-e_-r-e-v-i-e-w_-p-a-g-e.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-e-n-a-b-l-e_-r-e-v-i-e-w_-p-a-g-e.html deleted file mode 100644 index ee536c9ba2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-e-n-a-b-l-e_-r-e-v-i-e-w_-p-a-g-e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - EXTRA_ENABLE_REVIEW_PAGE - - - - -
-
-
-
-
-
- -
-

EXTRA_ENABLE_REVIEW_PAGE

-
-
const val EXTRA_ENABLE_REVIEW_PAGE: String

A Boolean extra to control if a review page is shown. By default it will be shown at the end of the questionnaire.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-s-t-r-i-n-g.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-s-t-r-i-n-g.html deleted file mode 100644 index 0526f94e94..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-s-t-r-i-n-g.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - EXTRA_QUESTIONNAIRE_JSON_STRING - - - - -
-
-
-
-
-
- -
-

EXTRA_QUESTIONNAIRE_JSON_STRING

-
-
const val EXTRA_QUESTIONNAIRE_JSON_STRING: String

A JSON encoded string extra for a questionnaire. This should only be used for questionnaires with size at most 512KB. For large questionnaires, use EXTRA_QUESTIONNAIRE_JSON_URI.

This is required unless EXTRA_QUESTIONNAIRE_JSON_URI is provided.

If this and EXTRA_QUESTIONNAIRE_JSON_URI are provided, EXTRA_QUESTIONNAIRE_JSON_URI takes precedence.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-u-r-i.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-u-r-i.html deleted file mode 100644 index c4b8acaf7e..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-u-r-i.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - EXTRA_QUESTIONNAIRE_JSON_URI - - - - -
-
-
-
-
-
- -
-

EXTRA_QUESTIONNAIRE_JSON_URI

-
-
const val EXTRA_QUESTIONNAIRE_JSON_URI: String

A android.net.Uri extra for streaming a JSON encoded questionnaire.

This is required unless EXTRA_QUESTIONNAIRE_JSON_STRING is provided.

If this and EXTRA_QUESTIONNAIRE_JSON_STRING are provided, this extra takes precedence.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-s-t-r-i-n-g.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-s-t-r-i-n-g.html deleted file mode 100644 index 2180baffe7..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-s-t-r-i-n-g.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - EXTRA_QUESTIONNAIRE_RESPONSE_JSON_STRING - - - - -
-
-
-
-
-
- -
-

EXTRA_QUESTIONNAIRE_RESPONSE_JSON_STRING

-
-
const val EXTRA_QUESTIONNAIRE_RESPONSE_JSON_STRING: String

A JSON encoded string extra for a prefilled questionnaire response. This should only be used for questionnaire response with size at most 512KB. For large questionnaire response, use EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI.

If this and EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI are provided, EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI takes precedence.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-u-r-i.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-u-r-i.html deleted file mode 100644 index ced6e59f5c..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-u-r-i.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI - - - - -
-
-
-
-
-
- -
-

EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI

-
-
const val EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI: String

A android.net.Uri extra for streaming a JSON encoded questionnaire response.

If this and EXTRA_QUESTIONNAIRE_RESPONSE_JSON_STRING are provided, this extra takes precedence.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-s-h-o-w_-r-e-v-i-e-w_-p-a-g-e_-f-i-r-s-t.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-s-h-o-w_-r-e-v-i-e-w_-p-a-g-e_-f-i-r-s-t.html deleted file mode 100644 index b403773b69..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-s-h-o-w_-r-e-v-i-e-w_-p-a-g-e_-f-i-r-s-t.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - EXTRA_SHOW_REVIEW_PAGE_FIRST - - - - -
-
-
-
-
-
- -
-

EXTRA_SHOW_REVIEW_PAGE_FIRST

-
-
const val EXTRA_SHOW_REVIEW_PAGE_FIRST: String

An Boolean extra to control if the review page is to be opened first. This has no effect if review page is not enabled.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-s-u-b-m-i-t_-r-e-q-u-e-s-t_-k-e-y.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-s-u-b-m-i-t_-r-e-q-u-e-s-t_-k-e-y.html deleted file mode 100644 index b72aa046f8..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-s-u-b-m-i-t_-r-e-q-u-e-s-t_-k-e-y.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - SUBMIT_REQUEST_KEY - - - - -
-
-
-
-
-
- -
-

SUBMIT_REQUEST_KEY

-
-
const val SUBMIT_REQUEST_KEY: String
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/index.html deleted file mode 100644 index 535c13ed47..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - Companion - - - - -
-
-
-
-
-
- -
-

Companion

-
object Companion

Extras that can be passed to QuestionnaireFragment to define its behavior. When you create a QuestionnaireFragment, one of EXTRA_QUESTIONNAIRE_JSON_URI or EXTRA_QUESTIONNAIRE_JSON_STRING is required.

-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
const val EXTRA_ENABLE_REVIEW_PAGE: String

A Boolean extra to control if a review page is shown. By default it will be shown at the end of the questionnaire.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val EXTRA_QUESTIONNAIRE_JSON_STRING: String

A JSON encoded string extra for a questionnaire. This should only be used for questionnaires with size at most 512KB. For large questionnaires, use EXTRA_QUESTIONNAIRE_JSON_URI.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val EXTRA_QUESTIONNAIRE_JSON_URI: String

A android.net.Uri extra for streaming a JSON encoded questionnaire.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val EXTRA_QUESTIONNAIRE_RESPONSE_JSON_STRING: String

A JSON encoded string extra for a prefilled questionnaire response. This should only be used for questionnaire response with size at most 512KB. For large questionnaire response, use EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI: String

A android.net.Uri extra for streaming a JSON encoded questionnaire response.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val EXTRA_SHOW_REVIEW_PAGE_FIRST: String

An Boolean extra to control if the review page is to be opened first. This has no effect if review page is not enabled.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
const val SUBMIT_REQUEST_KEY: String
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-fragment.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-fragment.html deleted file mode 100644 index 92e77a16d4..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-fragment.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - QuestionnaireFragment - - - - -
-
-
-
-
-
- -
-

QuestionnaireFragment

-
-
fun QuestionnaireFragment()
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/-questionnaire-item-view-holder-factory-matcher.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/-questionnaire-item-view-holder-factory-matcher.html deleted file mode 100644 index 0c286812b5..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/-questionnaire-item-view-holder-factory-matcher.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - QuestionnaireItemViewHolderFactoryMatcher - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolderFactoryMatcher

-
-
fun QuestionnaireItemViewHolderFactoryMatcher(factory: QuestionnaireItemViewHolderFactory, matches: (<ERROR CLASS>) -> Boolean)
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/factory.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/factory.html deleted file mode 100644 index 54f5e37f20..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/factory.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - factory - - - - - - - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/index.html deleted file mode 100644 index a41b8ceb86..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - QuestionnaireItemViewHolderFactoryMatcher - - - - -
-
-
-
-
-
- -
-

QuestionnaireItemViewHolderFactoryMatcher

-
data class QuestionnaireItemViewHolderFactoryMatcher(factory: QuestionnaireItemViewHolderFactory, matches: (<ERROR CLASS>) -> Boolean)

Data class that holds a matcher function (matches) which evaluates whether a given factory should be used to display a given Questionnaire.QuestionnaireItemComponent.

See the developer guide for more information.

-
-
-
-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun QuestionnaireItemViewHolderFactoryMatcher(factory: QuestionnaireItemViewHolderFactory, matches: (<ERROR CLASS>) -> Boolean)
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val factory: QuestionnaireItemViewHolderFactory
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val matches: (<ERROR CLASS>) -> Boolean

A predicate function which, given a Questionnaire.QuestionnaireItemComponent, returns true if the factory should apply to that item.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/matches.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/matches.html deleted file mode 100644 index 978cf158e2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/matches.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - matches - - - - -
-
-
-
-
-
- -
-

matches

-
-
val matches: (<ERROR CLASS>) -> Boolean

A predicate function which, given a Questionnaire.QuestionnaireItemComponent, returns true if the factory should apply to that item.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-custom-questionnaire-item-view-holder-factory-matchers.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-custom-questionnaire-item-view-holder-factory-matchers.html deleted file mode 100644 index de83ec8d1d..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-custom-questionnaire-item-view-holder-factory-matchers.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getCustomQuestionnaireItemViewHolderFactoryMatchers - - - - -
-
-
-
-
-
- -
-

getCustomQuestionnaireItemViewHolderFactoryMatchers

-
-
open fun getCustomQuestionnaireItemViewHolderFactoryMatchers(): <ERROR CLASS>

Override this method to specify when custom questionnaire components should be used. It should return a List of QuestionnaireItemViewHolderFactoryMatchers which are used to evaluate whether a custom QuestionnaireItemViewHolderFactory should be used to render a given questionnaire item.

User-provided custom views take precedence over canonical views provided by the library. If multiple QuestionnaireItemViewHolderFactoryMatcher are applicable for the same item, the behavior is undefined (any of them may be selected).

See the developer guide for more information.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-questionnaire-response.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-questionnaire-response.html deleted file mode 100644 index d0b8779228..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-questionnaire-response.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getQuestionnaireResponse - - - - -
-
-
-
-
-
- -
-

getQuestionnaireResponse

-
-
fun getQuestionnaireResponse(): <ERROR CLASS>

Returns a org.hl7.fhir.r4.model.QuestionnaireResponse populated with any answers that are present on the rendered QuestionnaireFragment when it is called.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/index.html deleted file mode 100644 index 2def7e1bd7..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - QuestionnaireFragment - - - - -
-
-
-
-
-
- -
-

QuestionnaireFragment

-
open class QuestionnaireFragment

A Fragment for displaying FHIR Questionnaires and getting user responses as FHIR QuestionnareResponses.

For more information, see the QuestionnaireFragment developer guide.

-
-
-
-
-

Constructors

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun QuestionnaireFragment()
-
-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
object Companion

Extras that can be passed to QuestionnaireFragment to define its behavior. When you create a QuestionnaireFragment, one of EXTRA_QUESTIONNAIRE_JSON_URI or EXTRA_QUESTIONNAIRE_JSON_STRING is required.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
data class QuestionnaireItemViewHolderFactoryMatcher(factory: QuestionnaireItemViewHolderFactory, matches: (<ERROR CLASS>) -> Boolean)

Data class that holds a matcher function (matches) which evaluates whether a given factory should be used to display a given Questionnaire.QuestionnaireItemComponent.

-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun getCustomQuestionnaireItemViewHolderFactoryMatchers(): <ERROR CLASS>

Override this method to specify when custom questionnaire components should be used. It should return a List of QuestionnaireItemViewHolderFactoryMatchers which are used to evaluate whether a custom QuestionnaireItemViewHolderFactory should be used to render a given questionnaire item.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun getQuestionnaireResponse(): <ERROR CLASS>

Returns a org.hl7.fhir.r4.model.QuestionnaireResponse populated with any answers that are present on the rendered QuestionnaireFragment when it is called.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/add-nested-items-to-answer.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/add-nested-items-to-answer.html deleted file mode 100644 index 02f43b131a..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/add-nested-items-to-answer.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - addNestedItemsToAnswer - - - - -
-
-
-
-
-
- -
-

addNestedItemsToAnswer

-
-
fun <ERROR CLASS>.addNestedItemsToAnswer(questionnaireItemComponent: <ERROR CLASS>)

Add items within QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent from the provided parent Questionnaire.QuestionnaireItemComponent with nested items. The hierarchy and order of child items will be retained as specified in the standard. See https://www.hl7.org/fhir/questionnaireresponse.html#notes for more details.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/create-questionnaire-response-item.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/create-questionnaire-response-item.html deleted file mode 100644 index 3739bc1196..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/create-questionnaire-response-item.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - createQuestionnaireResponseItem - - - - -
-
-
-
-
-
- -
-

createQuestionnaireResponseItem

-
-
fun <ERROR CLASS>.createQuestionnaireResponseItem(): <ERROR CLASS>

Creates a QuestionnaireResponse.QuestionnaireResponseItemComponent from the provided Questionnaire.QuestionnaireItemComponent.

The hierarchy and order of child items will be retained as specified in the standard. See https://www.hl7.org/fhir/questionnaireresponse.html#notes for more details.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/enable-when-expression.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/enable-when-expression.html deleted file mode 100644 index 7effc5e9e2..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/enable-when-expression.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - enableWhenExpression - - - - -
-
-
-
-
-
- -
-

enableWhenExpression

-
-
val <ERROR CLASS>.enableWhenExpression: <ERROR CLASS>?
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/entry-format.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/entry-format.html deleted file mode 100644 index 8fcb823f98..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/entry-format.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - entryFormat - - - - -
-
-
-
-
-
- -
-

entryFormat

-
-
val <ERROR CLASS>.entryFormat: String?

Whether the QuestionnaireItem should have entry format string.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/entry-mode.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/entry-mode.html deleted file mode 100644 index 698b5932d3..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/entry-mode.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - entryMode - - - - -
-
-
-
-
-
- -
-

entryMode

-
-
val <ERROR CLASS>.entryMode: EntryMode?
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/flattened.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/flattened.html deleted file mode 100644 index 789b590b26..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/flattened.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - flattened - - - - -
-
-
-
-
-
- -
-

flattened

-
-
fun List<<ERROR CLASS>>.flattened(): List<<ERROR CLASS>>

Flatten a nested list of Questionnaire.QuestionnaireItemComponent recursively and returns a flat list of all items into list embedded at any level

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/index.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/index.html deleted file mode 100644 index 7eea907384..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/index.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - com.google.android.fhir.datacapture - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.datacapture

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
data class DataCaptureConfig(valueSetResolverExternal: ExternalAnswerValueSetResolver?, npmPackage: <ERROR CLASS>?)

The App developers may provide the DataCaptureConfig for the DataCapture library by implementing Provider interface in the Application class. The library would load and cache the configuration by calling Provider.getDataCaptureConfig.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
enum EntryMode : Enum<EntryMode>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
interface ExternalAnswerValueSetResolver

Resolves external answer value sets not defined in the questionnaire's contained element. This allows the library to render answer options to choice and open-choice type questions more dynamically.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
typealias ItemToParentMap = MutableMap<<ERROR CLASS>, <ERROR CLASS>>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open class QuestionnaireFragment

A Fragment for displaying FHIR Questionnaires and getting user responses as FHIR QuestionnareResponses.

-
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun <ERROR CLASS>.addNestedItemsToAnswer(questionnaireItemComponent: <ERROR CLASS>)

Add items within QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent from the provided parent Questionnaire.QuestionnaireItemComponent with nested items. The hierarchy and order of child items will be retained as specified in the standard. See https://www.hl7.org/fhir/questionnaireresponse.html#notes for more details.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun <ERROR CLASS>.createQuestionnaireResponseItem(): <ERROR CLASS>

Creates a QuestionnaireResponse.QuestionnaireResponseItemComponent from the provided Questionnaire.QuestionnaireItemComponent.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun List<<ERROR CLASS>>.flattened(): List<<ERROR CLASS>>

Flatten a nested list of Questionnaire.QuestionnaireItemComponent recursively and returns a flat list of all items into list embedded at any level

-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.enableWhenExpression: <ERROR CLASS>?
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.entryFormat: String?

Whether the QuestionnaireItem should have entry format string.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.entryMode: EntryMode?
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.isPaginated: Boolean
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.localizedPrefixSpanned: <ERROR CLASS>?

Localized and spanned value of Questionnaire.QuestionnaireItemComponent.prefix if translation is present. Default value otherwise.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.localizedTextSpanned: <ERROR CLASS>?

Localized and spanned value of Questionnaire.QuestionnaireItemComponent.text if translation is present. Default value otherwise.

-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val <ERROR CLASS>.targetStructureMap: String?

The StructureMap url in the target structure-map extension s.

-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/is-paginated.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/is-paginated.html deleted file mode 100644 index b2bfd21ae7..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/is-paginated.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - isPaginated - - - - -
-
-
-
-
-
- -
-

isPaginated

-
-
val <ERROR CLASS>.isPaginated: Boolean
-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/localized-prefix-spanned.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/localized-prefix-spanned.html deleted file mode 100644 index a436b2d630..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/localized-prefix-spanned.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - localizedPrefixSpanned - - - - -
-
-
-
-
-
- -
-

localizedPrefixSpanned

-
-
val <ERROR CLASS>.localizedPrefixSpanned: <ERROR CLASS>?

Localized and spanned value of Questionnaire.QuestionnaireItemComponent.prefix if translation is present. Default value otherwise.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/localized-text-spanned.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/localized-text-spanned.html deleted file mode 100644 index 5e94ec8a28..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/localized-text-spanned.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - localizedTextSpanned - - - - -
-
-
-
-
-
- -
-

localizedTextSpanned

-
-
val <ERROR CLASS>.localizedTextSpanned: <ERROR CLASS>?

Localized and spanned value of Questionnaire.QuestionnaireItemComponent.text if translation is present. Default value otherwise.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/target-structure-map.html b/docs/data-capture/data-capture/com.google.android.fhir.datacapture/target-structure-map.html deleted file mode 100644 index b225941c90..0000000000 --- a/docs/data-capture/data-capture/com.google.android.fhir.datacapture/target-structure-map.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - targetStructureMap - - - - -
-
-
-
-
-
- -
-

targetStructureMap

-
-
val <ERROR CLASS>.targetStructureMap: String?

The StructureMap url in the target structure-map extension s.

-
- -
-
- - - diff --git a/docs/data-capture/data-capture/package-list b/docs/data-capture/data-capture/package-list deleted file mode 100644 index 4c5e292388..0000000000 --- a/docs/data-capture/data-capture/package-list +++ /dev/null @@ -1,129 +0,0 @@ -$dokka.format:html-v1 -$dokka.linkExtension:html -$dokka.location:com.google.android.fhir.datacapture.common.datatype////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.common.datatype/index.html -$dokka.location:com.google.android.fhir.datacapture.common.datatype//asStringValue/Type#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.common.datatype/as-string-value.html -$dokka.location:com.google.android.fhir.datacapture.contrib.views////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.contrib.views/index.html -$dokka.location:com.google.android.fhir.datacapture.contrib.views/QuestionnaireItemPhoneNumberViewHolderFactory///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/index.html -$dokka.location:com.google.android.fhir.datacapture.contrib.views/QuestionnaireItemPhoneNumberViewHolderFactory/getQuestionnaireItemViewHolderDelegate/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.contrib.views/-questionnaire-item-phone-number-view-holder-factory/get-questionnaire-item-view-holder-delegate.html -$dokka.location:com.google.android.fhir.datacapture.fhirpath////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.fhirpath/index.html -$dokka.location:com.google.android.fhir.datacapture.fhirpath/ExpressionEvaluator///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/index.html -$dokka.location:com.google.android.fhir.datacapture.fhirpath/ExpressionEvaluator/evaluateCalculatedExpressions/#Questionnaire.QuestionnaireItemComponent#Questionnaire#QuestionnaireResponse#kotlin.collections.Map[Questionnaire.QuestionnaireItemComponent,Questionnaire.QuestionnaireItemComponent]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.fhirpath/-expression-evaluator/evaluate-calculated-expressions.html -$dokka.location:com.google.android.fhir.datacapture.mapping////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/index.html -$dokka.location:com.google.android.fhir.datacapture.mapping/ResourceMapper///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/index.html -$dokka.location:com.google.android.fhir.datacapture.mapping/ResourceMapper/extract/#Questionnaire#QuestionnaireResponse#com.google.android.fhir.datacapture.mapping.StructureMapExtractionContext?/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/extract.html -$dokka.location:com.google.android.fhir.datacapture.mapping/ResourceMapper/populate/#Questionnaire#kotlin.Array[Resource]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-resource-mapper/populate.html -$dokka.location:com.google.android.fhir.datacapture.mapping/StructureMapExtractionContext///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/index.html -$dokka.location:com.google.android.fhir.datacapture.mapping/StructureMapExtractionContext/StructureMapExtractionContext/#Context#StructureMapUtilities.ITransformerServices?#kotlin.coroutines.SuspendFunction2[kotlin.String,IWorkerContext,StructureMap?]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/-structure-map-extraction-context.html -$dokka.location:com.google.android.fhir.datacapture.mapping/StructureMapExtractionContext/context/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/context.html -$dokka.location:com.google.android.fhir.datacapture.mapping/StructureMapExtractionContext/structureMapProvider/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/structure-map-provider.html -$dokka.location:com.google.android.fhir.datacapture.mapping/StructureMapExtractionContext/transformSupportServices/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.mapping/-structure-map-extraction-context/transform-support-services.html -$dokka.location:com.google.android.fhir.datacapture.validation////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/index.html -$dokka.location:com.google.android.fhir.datacapture.validation//valueOrCalculateValue/Type#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/value-or-calculate-value.html -$dokka.location:com.google.android.fhir.datacapture.validation/Invalid///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-invalid/index.html -$dokka.location:com.google.android.fhir.datacapture.validation/Invalid/Invalid/#kotlin.collections.List[kotlin.String]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-invalid/-invalid.html -$dokka.location:com.google.android.fhir.datacapture.validation/Invalid/getSingleStringValidationMessage/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-invalid/get-single-string-validation-message.html -$dokka.location:com.google.android.fhir.datacapture.validation/NotValidated///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-not-validated/index.html -$dokka.location:com.google.android.fhir.datacapture.validation/QuestionnaireResponseValidator///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/index.html -$dokka.location:com.google.android.fhir.datacapture.validation/QuestionnaireResponseValidator/checkQuestionnaireResponse/#Questionnaire#QuestionnaireResponse/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/check-questionnaire-response.html -$dokka.location:com.google.android.fhir.datacapture.validation/QuestionnaireResponseValidator/validateQuestionnaireResponse/#Questionnaire#QuestionnaireResponse#Context/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-questionnaire-response-validator/validate-questionnaire-response.html -$dokka.location:com.google.android.fhir.datacapture.validation/Valid///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-valid/index.html -$dokka.location:com.google.android.fhir.datacapture.validation/ValidationResult///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.validation/-validation-result/index.html -$dokka.location:com.google.android.fhir.datacapture.views////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/index.html -$dokka.location:com.google.android.fhir.datacapture.views//DECIMAL_INPUT_TYPE/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-d-e-c-i-m-a-l_-i-n-p-u-t_-t-y-p-e.html -$dokka.location:com.google.android.fhir.datacapture.views//QUANTITY_INPUT_TYPE/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-q-u-a-n-t-i-t-y_-i-n-p-u-t_-t-y-p-e.html -$dokka.location:com.google.android.fhir.datacapture.views//tryUnwrapContext/Context#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/try-unwrap-context.html -$dokka.location:com.google.android.fhir.datacapture.views/MarginItemDecoration///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/index.html -$dokka.location:com.google.android.fhir.datacapture.views/MarginItemDecoration/MarginItemDecoration/#kotlin.Int/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/-margin-item-decoration.html -$dokka.location:com.google.android.fhir.datacapture.views/MarginItemDecoration/getItemOffsets/#Rect#View#RecyclerView#RecyclerView.State/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-margin-item-decoration/get-item-offsets.html -$dokka.location:com.google.android.fhir.datacapture.views/OptionSelectOption///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/index.html -$dokka.location:com.google.android.fhir.datacapture.views/OptionSelectOption/OptionSelectOption/#Questionnaire.QuestionnaireItemAnswerOptionComponent#kotlin.Boolean/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/-option-select-option.html -$dokka.location:com.google.android.fhir.datacapture.views/OptionSelectOption/displayString/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/display-string.html -$dokka.location:com.google.android.fhir.datacapture.views/OptionSelectOption/item/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/item.html -$dokka.location:com.google.android.fhir.datacapture.views/OptionSelectOption/selected/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-option-select-option/selected.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/index.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/QuestionnaireItemEditTextViewHolderDelegate/#kotlin.Int/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/-questionnaire-item-edit-text-view-holder-delegate.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/bind/#com.google.android.fhir.datacapture.views.QuestionnaireItemViewItem/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/bind.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/displayValidationResult/#com.google.android.fhir.datacapture.validation.ValidationResult/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/display-validation-result.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/getText/#QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent?/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-text.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/getValue/#kotlin.String/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/get-value.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/init/#View/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/init.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/isTextUpdatesRequired/#kotlin.String#kotlin.String/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/is-text-updates-required.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/questionnaireItemViewItem/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/questionnaire-item-view-item.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemEditTextViewHolderDelegate/setReadOnly/#kotlin.Boolean/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-edit-text-view-holder-delegate/set-read-only.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolder///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/index.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolder/QuestionnaireItemViewHolder/#View#com.google.android.fhir.datacapture.views.QuestionnaireItemViewHolderDelegate/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/-questionnaire-item-view-holder.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolder/bind/#com.google.android.fhir.datacapture.views.QuestionnaireItemViewItem/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder/bind.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderDelegate///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/index.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderDelegate/bind/#com.google.android.fhir.datacapture.views.QuestionnaireItemViewItem/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/bind.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderDelegate/displayValidationResult/#com.google.android.fhir.datacapture.validation.ValidationResult/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/display-validation-result.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderDelegate/init/#View/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/init.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderDelegate/questionnaireItemViewItem/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/questionnaire-item-view-item.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderDelegate/setReadOnly/#kotlin.Boolean/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-delegate/set-read-only.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderFactory///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/index.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderFactory/QuestionnaireItemViewHolderFactory/#kotlin.Int/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/-questionnaire-item-view-holder-factory.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderFactory/create/#ViewGroup/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/create.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderFactory/getQuestionnaireItemViewHolderDelegate/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/get-questionnaire-item-view-holder-delegate.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewHolderFactory/resId/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-holder-factory/res-id.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/index.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/QuestionnaireItemViewItem/#Questionnaire.QuestionnaireItemComponent#QuestionnaireResponse.QuestionnaireResponseItemComponent#com.google.android.fhir.datacapture.validation.ValidationResult#kotlin.Function3[Questionnaire.QuestionnaireItemComponent,QuestionnaireResponse.QuestionnaireResponseItemComponent,kotlin.collections.List[QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent],kotlin.Unit]#kotlin.coroutines.SuspendFunction1[kotlin.String,kotlin.collections.List[Questionnaire.QuestionnaireItemAnswerOptionComponent]]#kotlin.coroutines.SuspendFunction1[Questionnaire.QuestionnaireItemComponent,kotlin.collections.List[Questionnaire.QuestionnaireItemAnswerOptionComponent]]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/-questionnaire-item-view-item.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/answers/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/answers.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/clearAnswer/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/clear-answer.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/isAnswerOptionSelected/#Questionnaire.QuestionnaireItemAnswerOptionComponent/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/is-answer-option-selected.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/questionnaireItem/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/questionnaire-item.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/setAnswer/#kotlin.Array[QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/set-answer.html -$dokka.location:com.google.android.fhir.datacapture.views/QuestionnaireItemViewItem/validationResult/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-questionnaire-item-view-item/validation-result.html -$dokka.location:com.google.android.fhir.datacapture.views/SelectedOptions///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-selected-options/index.html -$dokka.location:com.google.android.fhir.datacapture.views/SelectedOptions/SelectedOptions/#kotlin.collections.List[com.google.android.fhir.datacapture.views.OptionSelectOption]#kotlin.collections.List[kotlin.String]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-selected-options/-selected-options.html -$dokka.location:com.google.android.fhir.datacapture.views/SelectedOptions/options/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-selected-options/options.html -$dokka.location:com.google.android.fhir.datacapture.views/SelectedOptions/otherOptions/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-selected-options/other-options.html -$dokka.location:com.google.android.fhir.datacapture.views/SelectedOptions/selectedSummary/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture.views/-selected-options/selected-summary.html -$dokka.location:com.google.android.fhir.datacapture////PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/index.html -$dokka.location:com.google.android.fhir.datacapture//addNestedItemsToAnswer/QuestionnaireResponse.QuestionnaireResponseItemComponent#Questionnaire.QuestionnaireItemComponent/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/add-nested-items-to-answer.html -$dokka.location:com.google.android.fhir.datacapture//createQuestionnaireResponseItem/Questionnaire.QuestionnaireItemComponent#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/create-questionnaire-response-item.html -$dokka.location:com.google.android.fhir.datacapture//enableWhenExpression/Questionnaire.QuestionnaireItemComponent#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/enable-when-expression.html -$dokka.location:com.google.android.fhir.datacapture//entryFormat/Questionnaire.QuestionnaireItemComponent#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/entry-format.html -$dokka.location:com.google.android.fhir.datacapture//entryMode/Questionnaire#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/entry-mode.html -$dokka.location:com.google.android.fhir.datacapture//flattened/kotlin.collections.List[Questionnaire.QuestionnaireItemComponent]#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/flattened.html -$dokka.location:com.google.android.fhir.datacapture//isPaginated/Questionnaire#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/is-paginated.html -$dokka.location:com.google.android.fhir.datacapture//localizedPrefixSpanned/Questionnaire.QuestionnaireItemComponent#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/localized-prefix-spanned.html -$dokka.location:com.google.android.fhir.datacapture//localizedTextSpanned/Questionnaire.QuestionnaireItemComponent#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/localized-text-spanned.html -$dokka.location:com.google.android.fhir.datacapture//targetStructureMap/Questionnaire#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/target-structure-map.html -$dokka.location:com.google.android.fhir.datacapture/DataCaptureConfig.Provider///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/index.html -$dokka.location:com.google.android.fhir.datacapture/DataCaptureConfig.Provider/getDataCaptureConfig/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-provider/get-data-capture-config.html -$dokka.location:com.google.android.fhir.datacapture/DataCaptureConfig///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-data-capture-config/index.html -$dokka.location:com.google.android.fhir.datacapture/DataCaptureConfig/DataCaptureConfig/#com.google.android.fhir.datacapture.ExternalAnswerValueSetResolver?#NpmPackage?/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-data-capture-config/-data-capture-config.html -$dokka.location:com.google.android.fhir.datacapture/DataCaptureConfig/npmPackage/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-data-capture-config/npm-package.html -$dokka.location:com.google.android.fhir.datacapture/DataCaptureConfig/valueSetResolverExternal/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-data-capture-config/value-set-resolver-external.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode.Companion///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/index.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode.Companion/from/#kotlin.String?/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/-companion/from.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode.PRIOR_EDIT///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/-p-r-i-o-r_-e-d-i-t/index.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode.RANDOM///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/-r-a-n-d-o-m/index.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode.SEQUENTIAL///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/-s-e-q-u-e-n-t-i-a-l/index.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/index.html -$dokka.location:com.google.android.fhir.datacapture/EntryMode/value/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-entry-mode/value.html -$dokka.location:com.google.android.fhir.datacapture/ExternalAnswerValueSetResolver///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/index.html -$dokka.location:com.google.android.fhir.datacapture/ExternalAnswerValueSetResolver/resolve/#kotlin.String/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-external-answer-value-set-resolver/resolve.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/index.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/EXTRA_ENABLE_REVIEW_PAGE/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-e-n-a-b-l-e_-r-e-v-i-e-w_-p-a-g-e.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/EXTRA_QUESTIONNAIRE_JSON_STRING/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-s-t-r-i-n-g.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/EXTRA_QUESTIONNAIRE_JSON_URI/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-j-s-o-n_-u-r-i.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/EXTRA_QUESTIONNAIRE_RESPONSE_JSON_STRING/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-s-t-r-i-n-g.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/EXTRA_QUESTIONNAIRE_RESPONSE_JSON_URI/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-q-u-e-s-t-i-o-n-n-a-i-r-e_-r-e-s-p-o-n-s-e_-j-s-o-n_-u-r-i.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/EXTRA_SHOW_REVIEW_PAGE_FIRST/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-e-x-t-r-a_-s-h-o-w_-r-e-v-i-e-w_-p-a-g-e_-f-i-r-s-t.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.Companion/SUBMIT_REQUEST_KEY/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-companion/-s-u-b-m-i-t_-r-e-q-u-e-s-t_-k-e-y.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.QuestionnaireItemViewHolderFactoryMatcher///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/index.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.QuestionnaireItemViewHolderFactoryMatcher/QuestionnaireItemViewHolderFactoryMatcher/#com.google.android.fhir.datacapture.views.QuestionnaireItemViewHolderFactory#kotlin.Function1[Questionnaire.QuestionnaireItemComponent,kotlin.Boolean]/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/-questionnaire-item-view-holder-factory-matcher.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.QuestionnaireItemViewHolderFactoryMatcher/factory/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/factory.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment.QuestionnaireItemViewHolderFactoryMatcher/matches/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-item-view-holder-factory-matcher/matches.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment///PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/index.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment/QuestionnaireFragment/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/-questionnaire-fragment.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment/getCustomQuestionnaireItemViewHolderFactoryMatchers/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-custom-questionnaire-item-view-holder-factory-matchers.html -$dokka.location:com.google.android.fhir.datacapture/QuestionnaireFragment/getQuestionnaireResponse/#/PointingToDeclaration/data-capture/com.google.android.fhir.datacapture/-questionnaire-fragment/get-questionnaire-response.html -com.google.android.fhir.datacapture -com.google.android.fhir.datacapture.common.datatype -com.google.android.fhir.datacapture.contrib.views -com.google.android.fhir.datacapture.fhirpath -com.google.android.fhir.datacapture.mapping -com.google.android.fhir.datacapture.validation -com.google.android.fhir.datacapture.views - diff --git a/docs/data-capture/images/anchor-copy-button.svg b/docs/data-capture/images/anchor-copy-button.svg deleted file mode 100644 index bab9d747ff..0000000000 --- a/docs/data-capture/images/anchor-copy-button.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/docs/data-capture/images/arrow_down.svg b/docs/data-capture/images/arrow_down.svg deleted file mode 100644 index c0388dee2c..0000000000 --- a/docs/data-capture/images/arrow_down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/data-capture/images/copy-icon.svg b/docs/data-capture/images/copy-icon.svg deleted file mode 100644 index 61440f0a40..0000000000 --- a/docs/data-capture/images/copy-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/data-capture/images/copy-successful-icon.svg b/docs/data-capture/images/copy-successful-icon.svg deleted file mode 100644 index 1865f739b0..0000000000 --- a/docs/data-capture/images/copy-successful-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/data-capture/images/footer-go-to-link.svg b/docs/data-capture/images/footer-go-to-link.svg deleted file mode 100644 index 0137e22313..0000000000 --- a/docs/data-capture/images/footer-go-to-link.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/data-capture/images/go-to-top-icon.svg b/docs/data-capture/images/go-to-top-icon.svg deleted file mode 100644 index d987f3eadc..0000000000 --- a/docs/data-capture/images/go-to-top-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/docs/data-capture/images/logo-icon.svg b/docs/data-capture/images/logo-icon.svg deleted file mode 100644 index 1fea08773f..0000000000 --- a/docs/data-capture/images/logo-icon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/docs/data-capture/images/theme-toggle.svg b/docs/data-capture/images/theme-toggle.svg deleted file mode 100644 index 2a8d750ea9..0000000000 --- a/docs/data-capture/images/theme-toggle.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/data-capture/index.html b/docs/data-capture/index.html deleted file mode 100644 index 29a6a96ea9..0000000000 --- a/docs/data-capture/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - data-capture - - - - -
-
-
-
-
-
- -
-

data-capture

-
-

Packages

-
-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/data-capture/navigation.html b/docs/data-capture/navigation.html deleted file mode 100644 index 01d510233c..0000000000 --- a/docs/data-capture/navigation.html +++ /dev/null @@ -1,142 +0,0 @@ - - diff --git a/docs/data-capture/scripts/clipboard.js b/docs/data-capture/scripts/clipboard.js deleted file mode 100644 index b00ce246ef..0000000000 --- a/docs/data-capture/scripts/clipboard.js +++ /dev/null @@ -1,52 +0,0 @@ -window.addEventListener('load', () => { - document.querySelectorAll('span.copy-icon').forEach(element => { - element.addEventListener('click', (el) => copyElementsContentToClipboard(element)); - }) - - document.querySelectorAll('span.anchor-icon').forEach(element => { - element.addEventListener('click', (el) => { - if(element.hasAttribute('pointing-to')){ - const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to') - copyTextToClipboard(element, location) - } - }); - }) -}) - -const copyElementsContentToClipboard = (element) => { - const selection = window.getSelection(); - const range = document.createRange(); - range.selectNodeContents(element.parentNode.parentNode); - selection.removeAllRanges(); - selection.addRange(range); - - copyAndShowPopup(element, () => selection.removeAllRanges()) -} - -const copyTextToClipboard = (element, text) => { - var textarea = document.createElement("textarea"); - textarea.textContent = text; - textarea.style.position = "fixed"; - document.body.appendChild(textarea); - textarea.select(); - - copyAndShowPopup(element, () => document.body.removeChild(textarea)) -} - -const copyAndShowPopup = (element, after) => { - try { - document.execCommand('copy'); - element.nextElementSibling.classList.add('active-popup'); - setTimeout(() => { - element.nextElementSibling.classList.remove('active-popup'); - }, 1200); - } catch (e) { - console.error('Failed to write to clipboard:', e) - } - finally { - if(after) after() - } -} - -const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0] - diff --git a/docs/data-capture/scripts/main.js b/docs/data-capture/scripts/main.js deleted file mode 100644 index b3ee88c57d..0000000000 --- a/docs/data-capture/scripts/main.js +++ /dev/null @@ -1,44 +0,0 @@ -(()=>{var e={8527:e=>{e.exports=''},5570:e=>{e.exports=''},107:e=>{e.exports=''},7224:e=>{e.exports=''},538:e=>{e.exports=''},1924:(e,n,t)=>{"use strict";var r=t(210),o=t(5559),i=o(r("String.prototype.indexOf"));e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o(t):t}},5559:(e,n,t)=>{"use strict";var r=t(8612),o=t(210),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),l=o("%Reflect.apply%",!0)||r.call(a,i),c=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),s=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var n=l(r,a,arguments);if(c&&u){var t=c(n,"length");t.configurable&&u(n,"length",{value:1+s(0,e.length-(arguments.length-1))})}return n};var f=function(){return l(r,i,arguments)};u?u(e.exports,"apply",{value:f}):e.exports.apply=f},4184:(e,n)=>{var t; -/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],n=0;n{"use strict";e.exports=function(e,n){var t=this,r=t.constructor;return t.options=Object.assign({storeInstancesGlobally:!0},n||{}),t.callbacks={},t.directMap={},t.sequenceLevels={},t.resetTimer=null,t.ignoreNextKeyup=!1,t.ignoreNextKeypress=!1,t.nextExpectedAction=!1,t.element=e,t.addEvents(),t.options.storeInstancesGlobally&&r.instances.push(t),t},e.exports.prototype.bind=t(2207),e.exports.prototype.bindMultiple=t(3396),e.exports.prototype.unbind=t(9208),e.exports.prototype.trigger=t(9855),e.exports.prototype.reset=t(6214),e.exports.prototype.stopCallback=t(3450),e.exports.prototype.handleKey=t(3067),e.exports.prototype.addEvents=t(718),e.exports.prototype.bindSingle=t(8763),e.exports.prototype.getKeyInfo=t(5825),e.exports.prototype.pickBestAction=t(8608),e.exports.prototype.getReverseMap=t(3956),e.exports.prototype.getMatches=t(3373),e.exports.prototype.resetSequences=t(3346),e.exports.prototype.fireCallback=t(2684),e.exports.prototype.bindSequence=t(7103),e.exports.prototype.resetSequenceTimer=t(7309),e.exports.prototype.detach=t(7554),e.exports.instances=[],e.exports.reset=t(1822),e.exports.REVERSE_MAP=null},718:(e,n,t)=>{"use strict";e.exports=function(){var e=this,n=t(4323),r=e.element;e.eventHandler=t(9646).bind(e),n(r,"keypress",e.eventHandler),n(r,"keydown",e.eventHandler),n(r,"keyup",e.eventHandler)}},2207:e=>{"use strict";e.exports=function(e,n,t){return e=e instanceof Array?e:[e],this.bindMultiple(e,n,t),this}},3396:e=>{"use strict";e.exports=function(e,n,t){for(var r=0;r{"use strict";e.exports=function(e,n,r,o){var i=this;function a(n){return function(){i.nextExpectedAction=n,++i.sequenceLevels[e],i.resetSequenceTimer()}}function l(n){var a;i.fireCallback(r,n,e),"keyup"!==o&&(a=t(6770),i.ignoreNextKeyup=a(n)),setTimeout((function(){i.resetSequences()}),10)}i.sequenceLevels[e]=0;for(var c=0;c{"use strict";e.exports=function(e,n,t,r,o){var i=this;i.directMap[e+":"+t]=n;var a,l=(e=e.replace(/\s+/g," ")).split(" ");l.length>1?i.bindSequence(e,l,n,t):(a=i.getKeyInfo(e,t),i.callbacks[a.key]=i.callbacks[a.key]||[],i.getMatches(a.key,a.modifiers,{type:a.action},r,e,o),i.callbacks[a.key][r?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:r,level:o,combo:e}))}},7554:(e,n,t)=>{var r=t(4323).off;e.exports=function(){var e=this,n=e.element;r(n,"keypress",e.eventHandler),r(n,"keydown",e.eventHandler),r(n,"keyup",e.eventHandler)}},4323:e=>{function n(e,n,t,r){return!e.addEventListener&&(n="on"+n),(e.addEventListener||e.attachEvent).call(e,n,t,r),t}e.exports=n,e.exports.on=n,e.exports.off=function(e,n,t,r){return!e.removeEventListener&&(n="on"+n),(e.removeEventListener||e.detachEvent).call(e,n,t,r),t}},2684:(e,n,t)=>{"use strict";e.exports=function(e,n,r,o){this.stopCallback(n,n.target||n.srcElement,r,o)||!1===e(n,r)&&(t(1350)(n),t(6103)(n))}},5825:(e,n,t)=>{"use strict";e.exports=function(e,n){var r,o,i,a,l,c,u=[];for(r=t(4520)(e),a=t(7549),l=t(5355),c=t(8581),i=0;i{"use strict";e.exports=function(e,n,r,o,i,a){var l,c,u,s,f=this,p=[],d=r.type;"keypress"!==d||r.code&&"Arrow"===r.code.slice(0,5)||(f.callbacks["any-character"]||[]).forEach((function(e){p.push(e)}));if(!f.callbacks[e])return p;for(u=t(8581),"keyup"===d&&u(e)&&(n=[e]),l=0;l{"use strict";e.exports=function(){var e,n=this.constructor;if(!n.REVERSE_MAP)for(var r in n.REVERSE_MAP={},e=t(4766))r>95&&r<112||e.hasOwnProperty(r)&&(n.REVERSE_MAP[e[r]]=r);return n.REVERSE_MAP}},3067:(e,n,t)=>{"use strict";e.exports=function(e,n,r){var o,i,a,l,c=this,u={},s=0,f=!1;for(o=c.getMatches(e,n,r),i=0;i{"use strict";e.exports=function(e){var n,r=this;"number"!=typeof e.which&&(e.which=e.keyCode);var o=t(6770)(e);void 0!==o&&("keyup"!==e.type||r.ignoreNextKeyup!==o?(n=t(4610),r.handleKey(o,n(e),e)):r.ignoreNextKeyup=!1)}},5532:e=>{"use strict";e.exports=function(e,n){return e.sort().join(",")===n.sort().join(",")}},8608:e=>{"use strict";e.exports=function(e,n,t){return t||(t=this.getReverseMap()[e]?"keydown":"keypress"),"keypress"===t&&n.length&&(t="keydown"),t}},6214:e=>{"use strict";e.exports=function(){return this.callbacks={},this.directMap={},this}},7309:e=>{"use strict";e.exports=function(){var e=this;clearTimeout(e.resetTimer),e.resetTimer=setTimeout((function(){e.resetSequences()}),1e3)}},3346:e=>{"use strict";e.exports=function(e){var n=this;e=e||{};var t,r=!1;for(t in n.sequenceLevels)e[t]?r=!0:n.sequenceLevels[t]=0;r||(n.nextExpectedAction=!1)}},3450:e=>{"use strict";e.exports=function(e,n){if((" "+n.className+" ").indexOf(" combokeys ")>-1)return!1;var t=n.tagName.toLowerCase();return"input"===t||"select"===t||"textarea"===t||n.isContentEditable}},9855:e=>{"use strict";e.exports=function(e,n){return this.directMap[e+":"+n]&&this.directMap[e+":"+n]({},e),this}},9208:e=>{"use strict";e.exports=function(e,n){return this.bind(e,(function(){}),n)}},1822:e=>{"use strict";e.exports=function(){this.instances.forEach((function(e){e.reset()}))}},6770:(e,n,t)=>{"use strict";e.exports=function(e){var n,r;if(n=t(4766),r=t(5295),"keypress"===e.type){var o=String.fromCharCode(e.which);return e.shiftKey||(o=o.toLowerCase()),o}return void 0!==n[e.which]?n[e.which]:void 0!==r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}},4610:e=>{"use strict";e.exports=function(e){var n=[];return e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt"),e.ctrlKey&&n.push("ctrl"),e.metaKey&&n.push("meta"),n}},8581:e=>{"use strict";e.exports=function(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}},4520:e=>{"use strict";e.exports=function(e){return"+"===e?["+"]:e.split("+")}},1350:e=>{"use strict";e.exports=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},5355:e=>{"use strict";e.exports={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"}},7549:e=>{"use strict";e.exports={option:"alt",command:"meta",return:"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"}},5295:e=>{"use strict";e.exports={106:"*",107:"plus",109:"minus",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},4766:e=>{"use strict";e.exports={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",173:"minus",187:"plus",189:"minus",224:"meta"};for(var n=1;n<20;++n)e.exports[111+n]="f"+n;for(n=0;n<=9;++n)e.exports[n+96]=n},6103:e=>{"use strict";e.exports=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}},3362:()=>{var e;!function(){var e=Math.PI,n=2*e,t=e/180,r=document.createElement("div");document.head.appendChild(r);var o=self.ConicGradient=function(e){o.all.push(this),e=e||{},this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.repeating=!!e.repeating,this.size=e.size||Math.max(innerWidth,innerHeight),this.canvas.width=this.canvas.height=this.size;var n=e.stops;this.stops=(n||"").split(/\s*,(?![^(]*\))\s*/),this.from=0;for(var t=0;t0){var i=this.stops[0].clone();i.pos=0,this.stops.unshift(i)}if(void 0===this.stops[this.stops.length-1].pos)this.stops[this.stops.length-1].pos=1;else if(!this.repeating&&this.stops[this.stops.length-1].pos<1){var a=this.stops[this.stops.length-1].clone();a.pos=1,this.stops.push(a)}if(this.stops.forEach((function(e,n){if(void 0===e.pos){for(var t=n+1;this[t];t++)if(void 0!==this[t].pos){e.pos=this[n-1].pos+(this[t].pos-this[n-1].pos)/(t-n+1);break}}else n>0&&(e.pos=Math.max(e.pos,this[n-1].pos))}),this.stops),this.repeating){var l=(n=this.stops.slice())[n.length-1].pos-n[0].pos;for(t=0;this.stops[this.stops.length-1].pos<1&&t<1e4;t++)for(var c=0;c'},get png(){return this.canvas.toDataURL()},get r(){return Math.sqrt(2)*this.size/2},paint:function(){var e,n,r,o=this.context,i=this.r,a=this.size/2,l=0,c=this.stops[l];o.translate(this.size/2,this.size/2),o.rotate(-90*t),o.rotate(this.from*t),o.translate(-this.size/2,-this.size/2);for(var u=0;u<360;){if(u/360+1e-5>=c.pos){do{e=c,l++,c=this.stops[l]}while(c&&c!=e&&c.pos===e.pos);if(!c)break;var s=e.color+""==c.color+""&&e!=c;n=e.color.map((function(e,n){return c.color[n]-e}))}r=(u/360-e.pos)/(c.pos-e.pos);var f=s?c.color:n.map((function(n,t){var o=n*r+e.color[t];return t<3?255&o:o}));if(o.fillStyle="rgba("+f.join(",")+")",o.beginPath(),o.moveTo(a,a),s)var p=360*(c.pos-e.pos);else p=.5;var d=u*t,h=(d=Math.min(360*t,d))+p*t;h=Math.min(360*t,h+.02),o.arc(a,a,i,d,h),o.closePath(),o.fill(),u+=p}}},o.ColorStop=function(e,t){if(this.gradient=e,t){var r=t.match(/^(.+?)(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?\s*$/);if(this.color=o.ColorStop.colorToRGBA(r[1]),r[2]){var i=r[3];"%"==i||"0"===r[2]&&!i?this.pos=r[2]/100:"turn"==i?this.pos=+r[2]:"deg"==i?this.pos=r[2]/360:"grad"==i?this.pos=r[2]/400:"rad"==i&&(this.pos=r[2]/n)}r[4]&&(this.next=new o.ColorStop(e,r[1]+" "+r[4]+r[5]))}},o.ColorStop.prototype={clone:function(){var e=new o.ColorStop(this.gradient);return e.color=this.color,e.pos=this.pos,e},toString:function(){return"rgba("+this.color.join(", ")+") "+100*this.pos+"%"}},o.ColorStop.colorToRGBA=function(e){if(!Array.isArray(e)&&-1==e.indexOf("from")){r.style.color=e;var n=getComputedStyle(r).color.match(/rgba?\(([\d.]+), ([\d.]+), ([\d.]+)(?:, ([\d.]+))?\)/);return n&&(n.shift(),(n=n.map((function(e){return+e})))[3]=isNaN(n[3])?1:n[3]),n||[0,0,0,0]}return e}}(),self.StyleFix&&((e=document.createElement("p")).style.backgroundImage="conic-gradient(white, black)",e.style.backgroundImage=PrefixFree.prefix+"conic-gradient(white, black)",e.style.backgroundImage||StyleFix.register((function(e,n){return e.indexOf("conic-gradient")>-1&&(e=e.replace(/(?:repeating-)?conic-gradient\(\s*((?:\([^()]+\)|[^;()}])+?)\)/g,(function(e,n){return new ConicGradient({stops:n,repeating:e.indexOf("repeating-")>-1})}))),e})))},9662:(e,n,t)=>{var r=t(7854),o=t(614),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},9483:(e,n,t)=>{var r=t(7854),o=t(4411),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a constructor")}},6077:(e,n,t)=>{var r=t(7854),o=t(614),i=r.String,a=r.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+i(e)+" as a prototype")}},1223:(e,n,t)=>{var r=t(5112),o=t(30),i=t(3070),a=r("unscopables"),l=Array.prototype;null==l[a]&&i.f(l,a,{configurable:!0,value:o(null)}),e.exports=function(e){l[a][e]=!0}},1530:(e,n,t)=>{"use strict";var r=t(8710).charAt;e.exports=function(e,n,t){return n+(t?r(e,n).length:1)}},5787:(e,n,t)=>{var r=t(7854),o=t(7976),i=r.TypeError;e.exports=function(e,n){if(o(n,e))return e;throw i("Incorrect invocation")}},9670:(e,n,t)=>{var r=t(7854),o=t(111),i=r.String,a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not an object")}},7556:(e,n,t)=>{var r=t(7293);e.exports=r((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},8533:(e,n,t)=>{"use strict";var r=t(2092).forEach,o=t(9341)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:(e,n,t)=>{"use strict";var r=t(7854),o=t(9974),i=t(6916),a=t(7908),l=t(3411),c=t(7659),u=t(4411),s=t(6244),f=t(6135),p=t(8554),d=t(1246),h=r.Array;e.exports=function(e){var n=a(e),t=u(this),r=arguments.length,g=r>1?arguments[1]:void 0,v=void 0!==g;v&&(g=o(g,r>2?arguments[2]:void 0));var A,b,m,y,E,_,C=d(n),w=0;if(!C||this==h&&c(C))for(A=s(n),b=t?new this(A):h(A);A>w;w++)_=v?g(n[w],w):n[w],f(b,w,_);else for(E=(y=p(n,C)).next,b=t?new this:[];!(m=i(E,y)).done;w++)_=v?l(y,g,[m.value,w],!0):m.value,f(b,w,_);return b.length=w,b}},1318:(e,n,t)=>{var r=t(5656),o=t(1400),i=t(6244),a=function(e){return function(n,t,a){var l,c=r(n),u=i(c),s=o(a,u);if(e&&t!=t){for(;u>s;)if((l=c[s++])!=l)return!0}else for(;u>s;s++)if((e||s in c)&&c[s]===t)return e||s||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:(e,n,t)=>{var r=t(9974),o=t(1702),i=t(8361),a=t(7908),l=t(6244),c=t(5417),u=o([].push),s=function(e){var n=1==e,t=2==e,o=3==e,s=4==e,f=6==e,p=7==e,d=5==e||f;return function(h,g,v,A){for(var b,m,y=a(h),E=i(y),_=r(g,v),C=l(E),w=0,x=A||c,k=n?x(h,C):t||p?x(h,0):void 0;C>w;w++)if((d||w in E)&&(m=_(b=E[w],w,y),e))if(n)k[w]=m;else if(m)switch(e){case 3:return!0;case 5:return b;case 6:return w;case 2:u(k,b)}else switch(e){case 4:return!1;case 7:u(k,b)}return f?-1:o||s?s:k}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},1194:(e,n,t)=>{var r=t(7293),o=t(5112),i=t(7392),a=o("species");e.exports=function(e){return i>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[e](Boolean).foo}))}},9341:(e,n,t)=>{"use strict";var r=t(7293);e.exports=function(e,n){var t=[][e];return!!t&&r((function(){t.call(null,n||function(){throw 1},1)}))}},3671:(e,n,t)=>{var r=t(7854),o=t(9662),i=t(7908),a=t(8361),l=t(6244),c=r.TypeError,u=function(e){return function(n,t,r,u){o(t);var s=i(n),f=a(s),p=l(s),d=e?p-1:0,h=e?-1:1;if(r<2)for(;;){if(d in f){u=f[d],d+=h;break}if(d+=h,e?d<0:p<=d)throw c("Reduce of empty array with no initial value")}for(;e?d>=0:p>d;d+=h)d in f&&(u=t(u,f[d],d,s));return u}};e.exports={left:u(!1),right:u(!0)}},206:(e,n,t)=>{var r=t(1702);e.exports=r([].slice)},4362:(e,n,t)=>{var r=t(206),o=Math.floor,i=function(e,n){var t=e.length,c=o(t/2);return t<8?a(e,n):l(e,i(r(e,0,c),n),i(r(e,c),n),n)},a=function(e,n){for(var t,r,o=e.length,i=1;i0;)e[r]=e[--r];r!==i++&&(e[r]=t)}return e},l=function(e,n,t,r){for(var o=n.length,i=t.length,a=0,l=0;a{var r=t(7854),o=t(3157),i=t(4411),a=t(111),l=t(5112)("species"),c=r.Array;e.exports=function(e){var n;return o(e)&&(n=e.constructor,(i(n)&&(n===c||o(n.prototype))||a(n)&&null===(n=n[l]))&&(n=void 0)),void 0===n?c:n}},5417:(e,n,t)=>{var r=t(7475);e.exports=function(e,n){return new(r(e))(0===n?0:n)}},3411:(e,n,t)=>{var r=t(9670),o=t(9212);e.exports=function(e,n,t,i){try{return i?n(r(t)[0],t[1]):n(t)}catch(n){o(e,"throw",n)}}},7072:(e,n,t)=>{var r=t(5112)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,n){if(!n&&!o)return!1;var t=!1;try{var i={};i[r]=function(){return{next:function(){return{done:t=!0}}}},e(i)}catch(e){}return t}},4326:(e,n,t)=>{var r=t(1702),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},648:(e,n,t)=>{var r=t(7854),o=t(1694),i=t(614),a=t(4326),l=t(5112)("toStringTag"),c=r.Object,u="Arguments"==a(function(){return arguments}());e.exports=o?a:function(e){var n,t,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,n){try{return e[n]}catch(e){}}(n=c(e),l))?t:u?a(n):"Object"==(r=a(n))&&i(n.callee)?"Arguments":r}},5631:(e,n,t)=>{"use strict";var r=t(3070).f,o=t(30),i=t(2248),a=t(9974),l=t(5787),c=t(408),u=t(654),s=t(6340),f=t(9781),p=t(2423).fastKey,d=t(9909),h=d.set,g=d.getterFor;e.exports={getConstructor:function(e,n,t,u){var s=e((function(e,r){l(e,d),h(e,{type:n,index:o(null),first:void 0,last:void 0,size:0}),f||(e.size=0),null!=r&&c(r,e[u],{that:e,AS_ENTRIES:t})})),d=s.prototype,v=g(n),A=function(e,n,t){var r,o,i=v(e),a=b(e,n);return a?a.value=t:(i.last=a={index:o=p(n,!0),key:n,value:t,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},b=function(e,n){var t,r=v(e),o=p(n);if("F"!==o)return r.index[o];for(t=r.first;t;t=t.next)if(t.key==n)return t};return i(d,{clear:function(){for(var e=v(this),n=e.index,t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),delete n[t.index],t=t.next;e.first=e.last=void 0,f?e.size=0:this.size=0},delete:function(e){var n=this,t=v(n),r=b(n,e);if(r){var o=r.next,i=r.previous;delete t.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),t.first==r&&(t.first=o),t.last==r&&(t.last=i),f?t.size--:n.size--}return!!r},forEach:function(e){for(var n,t=v(this),r=a(e,arguments.length>1?arguments[1]:void 0);n=n?n.next:t.first;)for(r(n.value,n.key,this);n&&n.removed;)n=n.previous},has:function(e){return!!b(this,e)}}),i(d,t?{get:function(e){var n=b(this,e);return n&&n.value},set:function(e,n){return A(this,0===e?0:e,n)}}:{add:function(e){return A(this,e=0===e?0:e,e)}}),f&&r(d,"size",{get:function(){return v(this).size}}),s},setStrong:function(e,n,t){var r=n+" Iterator",o=g(n),i=g(r);u(e,n,(function(e,n){h(this,{type:r,target:e,state:o(e),kind:n,last:void 0})}),(function(){for(var e=i(this),n=e.kind,t=e.last;t&&t.removed;)t=t.previous;return e.target&&(e.last=t=t?t.next:e.state.first)?"keys"==n?{value:t.key,done:!1}:"values"==n?{value:t.value,done:!1}:{value:[t.key,t.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),t?"entries":"values",!t,!0),s(n)}}},9320:(e,n,t)=>{"use strict";var r=t(1702),o=t(2248),i=t(2423).getWeakData,a=t(9670),l=t(111),c=t(5787),u=t(408),s=t(2092),f=t(2597),p=t(9909),d=p.set,h=p.getterFor,g=s.find,v=s.findIndex,A=r([].splice),b=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},E=function(e,n){return g(e.entries,(function(e){return e[0]===n}))};y.prototype={get:function(e){var n=E(this,e);if(n)return n[1]},has:function(e){return!!E(this,e)},set:function(e,n){var t=E(this,e);t?t[1]=n:this.entries.push([e,n])},delete:function(e){var n=v(this.entries,(function(n){return n[0]===e}));return~n&&A(this.entries,n,1),!!~n}},e.exports={getConstructor:function(e,n,t,r){var s=e((function(e,o){c(e,p),d(e,{type:n,id:b++,frozen:void 0}),null!=o&&u(o,e[r],{that:e,AS_ENTRIES:t})})),p=s.prototype,g=h(n),v=function(e,n,t){var r=g(e),o=i(a(n),!0);return!0===o?m(r).set(n,t):o[r.id]=t,e};return o(p,{delete:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).delete(e):t&&f(t,n.id)&&delete t[n.id]},has:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).has(e):t&&f(t,n.id)}}),o(p,t?{get:function(e){var n=g(this);if(l(e)){var t=i(e);return!0===t?m(n).get(e):t?t[n.id]:void 0}},set:function(e,n){return v(this,e,n)}}:{add:function(e){return v(this,e,!0)}}),s}}},7710:(e,n,t)=>{"use strict";var r=t(2109),o=t(7854),i=t(1702),a=t(4705),l=t(1320),c=t(2423),u=t(408),s=t(5787),f=t(614),p=t(111),d=t(7293),h=t(7072),g=t(8003),v=t(9587);e.exports=function(e,n,t){var A=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),m=A?"set":"add",y=o[e],E=y&&y.prototype,_=y,C={},w=function(e){var n=i(E[e]);l(E,e,"add"==e?function(e){return n(this,0===e?0:e),this}:"delete"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:"get"==e?function(e){return b&&!p(e)?void 0:n(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:function(e,t){return n(this,0===e?0:e,t),this})};if(a(e,!f(y)||!(b||E.forEach&&!d((function(){(new y).entries().next()})))))_=t.getConstructor(n,e,A,m),c.enable();else if(a(e,!0)){var x=new _,k=x[m](b?{}:-0,1)!=x,S=d((function(){x.has(1)})),O=h((function(e){new y(e)})),B=!b&&d((function(){for(var e=new y,n=5;n--;)e[m](n,n);return!e.has(-0)}));O||((_=n((function(e,n){s(e,E);var t=v(new y,e,_);return null!=n&&u(n,t[m],{that:t,AS_ENTRIES:A}),t}))).prototype=E,E.constructor=_),(S||B)&&(w("delete"),w("has"),A&&w("get")),(B||k)&&w(m),b&&E.clear&&delete E.clear}return C[e]=_,r({global:!0,forced:_!=y},C),g(_,e),b||t.setStrong(_,e,A),_}},9920:(e,n,t)=>{var r=t(2597),o=t(3887),i=t(1236),a=t(3070);e.exports=function(e,n){for(var t=o(n),l=a.f,c=i.f,u=0;u{var r=t(5112)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[r]=!1,"/./"[e](n)}catch(e){}}return!1}},8544:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},4230:(e,n,t)=>{var r=t(1702),o=t(4488),i=t(1340),a=/"/g,l=r("".replace);e.exports=function(e,n,t,r){var c=i(o(e)),u="<"+n;return""!==t&&(u+=" "+t+'="'+l(i(r),a,""")+'"'),u+">"+c+""}},4994:(e,n,t)=>{"use strict";var r=t(3383).IteratorPrototype,o=t(30),i=t(9114),a=t(8003),l=t(7497),c=function(){return this};e.exports=function(e,n,t){var u=n+" Iterator";return e.prototype=o(r,{next:i(1,t)}),a(e,u,!1,!0),l[u]=c,e}},8880:(e,n,t)=>{var r=t(9781),o=t(3070),i=t(9114);e.exports=r?function(e,n,t){return o.f(e,n,i(1,t))}:function(e,n,t){return e[n]=t,e}},9114:e=>{e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},6135:(e,n,t)=>{"use strict";var r=t(4948),o=t(3070),i=t(9114);e.exports=function(e,n,t){var a=r(n);a in e?o.f(e,a,i(0,t)):e[a]=t}},8709:(e,n,t)=>{"use strict";var r=t(7854),o=t(9670),i=t(2140),a=r.TypeError;e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw a("Incorrect hint");return i(this,e)}},654:(e,n,t)=>{"use strict";var r=t(2109),o=t(6916),i=t(1913),a=t(6530),l=t(614),c=t(4994),u=t(9518),s=t(7674),f=t(8003),p=t(8880),d=t(1320),h=t(5112),g=t(7497),v=t(3383),A=a.PROPER,b=a.CONFIGURABLE,m=v.IteratorPrototype,y=v.BUGGY_SAFARI_ITERATORS,E=h("iterator"),_="keys",C="values",w="entries",x=function(){return this};e.exports=function(e,n,t,a,h,v,k){c(t,n,a);var S,O,B,I=function(e){if(e===h&&R)return R;if(!y&&e in j)return j[e];switch(e){case _:case C:case w:return function(){return new t(this,e)}}return function(){return new t(this)}},T=n+" Iterator",P=!1,j=e.prototype,z=j[E]||j["@@iterator"]||h&&j[h],R=!y&&z||I(h),M="Array"==n&&j.entries||z;if(M&&(S=u(M.call(new e)))!==Object.prototype&&S.next&&(i||u(S)===m||(s?s(S,m):l(S[E])||d(S,E,x)),f(S,T,!0,!0),i&&(g[T]=x)),A&&h==C&&z&&z.name!==C&&(!i&&b?p(j,"name",C):(P=!0,R=function(){return o(z,this)})),h)if(O={values:I(C),keys:v?R:I(_),entries:I(w)},k)for(B in O)(y||P||!(B in j))&&d(j,B,O[B]);else r({target:n,proto:!0,forced:y||P},O);return i&&!k||j[E]===R||d(j,E,R,{name:h}),g[n]=R,O}},7235:(e,n,t)=>{var r=t(857),o=t(2597),i=t(6061),a=t(3070).f;e.exports=function(e){var n=r.Symbol||(r.Symbol={});o(n,e)||a(n,e,{value:i.f(e)})}},9781:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:(e,n,t)=>{var r=t(7854),o=t(111),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,n,t)=>{var r=t(317)("span").classList,o=r&&r.constructor&&r.constructor.prototype;e.exports=o===Object.prototype?void 0:o},8886:(e,n,t)=>{var r=t(8113).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},256:(e,n,t)=>{var r=t(8113);e.exports=/MSIE|Trident/.test(r)},5268:(e,n,t)=>{var r=t(4326),o=t(7854);e.exports="process"==r(o.process)},8113:(e,n,t)=>{var r=t(5005);e.exports=r("navigator","userAgent")||""},7392:(e,n,t)=>{var r,o,i=t(7854),a=t(8113),l=i.process,c=i.Deno,u=l&&l.versions||c&&c.version,s=u&&u.v8;s&&(o=(r=s.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},8008:(e,n,t)=>{var r=t(8113).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:(e,n,t)=>{var r=t(7854),o=t(1236).f,i=t(8880),a=t(1320),l=t(3505),c=t(9920),u=t(4705);e.exports=function(e,n){var t,s,f,p,d,h=e.target,g=e.global,v=e.stat;if(t=g?r:v?r[h]||l(h,{}):(r[h]||{}).prototype)for(s in n){if(p=n[s],f=e.noTargetGet?(d=o(t,s))&&d.value:t[s],!u(g?s:h+(v?".":"#")+s,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;c(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(t,s,p,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,n,t)=>{"use strict";t(4916);var r=t(1702),o=t(1320),i=t(2261),a=t(7293),l=t(5112),c=t(8880),u=l("species"),s=RegExp.prototype;e.exports=function(e,n,t,f){var p=l(e),d=!a((function(){var n={};return n[p]=function(){return 7},7!=""[e](n)})),h=d&&!a((function(){var n=!1,t=/a/;return"split"===e&&((t={}).constructor={},t.constructor[u]=function(){return t},t.flags="",t[p]=/./[p]),t.exec=function(){return n=!0,null},t[p](""),!n}));if(!d||!h||t){var g=r(/./[p]),v=n(p,""[e],(function(e,n,t,o,a){var l=r(e),c=n.exec;return c===i||c===s.exec?d&&!a?{done:!0,value:g(n,t,o)}:{done:!0,value:l(t,n,o)}:{done:!1}}));o(String.prototype,e,v[0]),o(s,p,v[1])}f&&c(s[p],"sham",!0)}},6677:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:e=>{var n=Function.prototype,t=n.apply,r=n.bind,o=n.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?o.bind(t):function(){return o.apply(t,arguments)})},9974:(e,n,t)=>{var r=t(1702),o=t(9662),i=r(r.bind);e.exports=function(e,n){return o(e),void 0===n?e:i?i(e,n):function(){return e.apply(n,arguments)}}},7065:(e,n,t)=>{"use strict";var r=t(7854),o=t(1702),i=t(9662),a=t(111),l=t(2597),c=t(206),u=r.Function,s=o([].concat),f=o([].join),p={},d=function(e,n,t){if(!l(p,n)){for(var r=[],o=0;o{var n=Function.prototype.call;e.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},6530:(e,n,t)=>{var r=t(9781),o=t(2597),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,l=o(i,"name"),c=l&&"something"===function(){}.name,u=l&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:l,PROPER:c,CONFIGURABLE:u}},1702:e=>{var n=Function.prototype,t=n.bind,r=n.call,o=t&&t.bind(r);e.exports=t?function(e){return e&&o(r,e)}:function(e){return e&&function(){return r.apply(e,arguments)}}},5005:(e,n,t)=>{var r=t(7854),o=t(614),i=function(e){return o(e)?e:void 0};e.exports=function(e,n){return arguments.length<2?i(r[e]):r[e]&&r[e][n]}},1246:(e,n,t)=>{var r=t(648),o=t(8173),i=t(7497),a=t(5112)("iterator");e.exports=function(e){if(null!=e)return o(e,a)||o(e,"@@iterator")||i[r(e)]}},8554:(e,n,t)=>{var r=t(7854),o=t(6916),i=t(9662),a=t(9670),l=t(6330),c=t(1246),u=r.TypeError;e.exports=function(e,n){var t=arguments.length<2?c(e):n;if(i(t))return a(o(t,e));throw u(l(e)+" is not iterable")}},8173:(e,n,t)=>{var r=t(9662);e.exports=function(e,n){var t=e[n];return null==t?void 0:r(t)}},647:(e,n,t)=>{var r=t(1702),o=t(7908),i=Math.floor,a=r("".charAt),l=r("".replace),c=r("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,n,t,r,f,p){var d=t+e.length,h=r.length,g=s;return void 0!==f&&(f=o(f),g=u),l(p,g,(function(o,l){var u;switch(a(l,0)){case"$":return"$";case"&":return e;case"`":return c(n,0,t);case"'":return c(n,d);case"<":u=f[c(l,1,-1)];break;default:var s=+l;if(0===s)return o;if(s>h){var p=i(s/10);return 0===p?o:p<=h?void 0===r[p-1]?a(l,1):r[p-1]+a(l,1):o}u=r[s-1]}return void 0===u?"":u}))}},7854:(e,n,t)=>{var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof t.g&&t.g)||function(){return this}()||Function("return this")()},2597:(e,n,t)=>{var r=t(1702),o=t(7908),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,n){return i(o(e),n)}},3501:e=>{e.exports={}},490:(e,n,t)=>{var r=t(5005);e.exports=r("document","documentElement")},4664:(e,n,t)=>{var r=t(9781),o=t(7293),i=t(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:(e,n,t)=>{var r=t(7854),o=t(1702),i=t(7293),a=t(4326),l=r.Object,c=o("".split);e.exports=i((function(){return!l("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):l(e)}:l},9587:(e,n,t)=>{var r=t(614),o=t(111),i=t(7674);e.exports=function(e,n,t){var a,l;return i&&r(a=n.constructor)&&a!==t&&o(l=a.prototype)&&l!==t.prototype&&i(e,l),e}},2788:(e,n,t)=>{var r=t(1702),o=t(614),i=t(5465),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},2423:(e,n,t)=>{var r=t(2109),o=t(1702),i=t(3501),a=t(111),l=t(2597),c=t(3070).f,u=t(8006),s=t(1156),f=t(2050),p=t(9711),d=t(6677),h=!1,g=p("meta"),v=0,A=function(e){c(e,g,{value:{objectID:"O"+v++,weakData:{}}})},b=e.exports={enable:function(){b.enable=function(){},h=!0;var e=u.f,n=o([].splice),t={};t[g]=1,e(t).length&&(u.f=function(t){for(var r=e(t),o=0,i=r.length;o{var r,o,i,a=t(8536),l=t(7854),c=t(1702),u=t(111),s=t(8880),f=t(2597),p=t(5465),d=t(6200),h=t(3501),g="Object already initialized",v=l.TypeError,A=l.WeakMap;if(a||p.state){var b=p.state||(p.state=new A),m=c(b.get),y=c(b.has),E=c(b.set);r=function(e,n){if(y(b,e))throw new v(g);return n.facade=e,E(b,e,n),n},o=function(e){return m(b,e)||{}},i=function(e){return y(b,e)}}else{var _=d("state");h[_]=!0,r=function(e,n){if(f(e,_))throw new v(g);return n.facade=e,s(e,_,n),n},o=function(e){return f(e,_)?e[_]:{}},i=function(e){return f(e,_)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(n){var t;if(!u(n)||(t=o(n)).type!==e)throw v("Incompatible receiver, "+e+" required");return t}}}},7659:(e,n,t)=>{var r=t(5112),o=t(7497),i=r("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},3157:(e,n,t)=>{var r=t(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:e=>{e.exports=function(e){return"function"==typeof e}},4411:(e,n,t)=>{var r=t(1702),o=t(7293),i=t(614),a=t(648),l=t(5005),c=t(2788),u=function(){},s=[],f=l("Reflect","construct"),p=/^\s*(?:class|function)\b/,d=r(p.exec),h=!p.exec(u),g=function(e){if(!i(e))return!1;try{return f(u,s,e),!0}catch(e){return!1}};e.exports=!f||o((function(){var e;return g(g.call)||!g(Object)||!g((function(){e=!0}))||e}))?function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return h||!!d(p,c(e))}:g},4705:(e,n,t)=>{var r=t(7293),o=t(614),i=/#|\.prototype\./,a=function(e,n){var t=c[l(e)];return t==s||t!=u&&(o(n)?r(n):!!n)},l=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",s=a.POLYFILL="P";e.exports=a},111:(e,n,t)=>{var r=t(614);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},1913:e=>{e.exports=!1},7850:(e,n,t)=>{var r=t(111),o=t(4326),i=t(5112)("match");e.exports=function(e){var n;return r(e)&&(void 0!==(n=e[i])?!!n:"RegExp"==o(e))}},2190:(e,n,t)=>{var r=t(7854),o=t(5005),i=t(614),a=t(7976),l=t(3307),c=r.Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var n=o("Symbol");return i(n)&&a(n.prototype,c(e))}},408:(e,n,t)=>{var r=t(7854),o=t(9974),i=t(6916),a=t(9670),l=t(6330),c=t(7659),u=t(6244),s=t(7976),f=t(8554),p=t(1246),d=t(9212),h=r.TypeError,g=function(e,n){this.stopped=e,this.result=n},v=g.prototype;e.exports=function(e,n,t){var r,A,b,m,y,E,_,C=t&&t.that,w=!(!t||!t.AS_ENTRIES),x=!(!t||!t.IS_ITERATOR),k=!(!t||!t.INTERRUPTED),S=o(n,C),O=function(e){return r&&d(r,"normal",e),new g(!0,e)},B=function(e){return w?(a(e),k?S(e[0],e[1],O):S(e[0],e[1])):k?S(e,O):S(e)};if(x)r=e;else{if(!(A=p(e)))throw h(l(e)+" is not iterable");if(c(A)){for(b=0,m=u(e);m>b;b++)if((y=B(e[b]))&&s(v,y))return y;return new g(!1)}r=f(e,A)}for(E=r.next;!(_=i(E,r)).done;){try{y=B(_.value)}catch(e){d(r,"throw",e)}if("object"==typeof y&&y&&s(v,y))return y}return new g(!1)}},9212:(e,n,t)=>{var r=t(6916),o=t(9670),i=t(8173);e.exports=function(e,n,t){var a,l;o(e);try{if(!(a=i(e,"return"))){if("throw"===n)throw t;return t}a=r(a,e)}catch(e){l=!0,a=e}if("throw"===n)throw t;if(l)throw a;return o(a),t}},3383:(e,n,t)=>{"use strict";var r,o,i,a=t(7293),l=t(614),c=t(30),u=t(9518),s=t(1320),f=t(5112),p=t(1913),d=f("iterator"),h=!1;[].keys&&("next"in(i=[].keys())?(o=u(u(i)))!==Object.prototype&&(r=o):h=!0),null==r||a((function(){var e={};return r[d].call(e)!==e}))?r={}:p&&(r=c(r)),l(r[d])||s(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},7497:e=>{e.exports={}},6244:(e,n,t)=>{var r=t(7466);e.exports=function(e){return r(e.length)}},133:(e,n,t)=>{var r=t(7392),o=t(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8536:(e,n,t)=>{var r=t(7854),o=t(614),i=t(2788),a=r.WeakMap;e.exports=o(a)&&/native code/.test(i(a))},3929:(e,n,t)=>{var r=t(7854),o=t(7850),i=r.TypeError;e.exports=function(e){if(o(e))throw i("The method doesn't accept regular expressions");return e}},1574:(e,n,t)=>{"use strict";var r=t(9781),o=t(1702),i=t(6916),a=t(7293),l=t(1956),c=t(5181),u=t(5296),s=t(7908),f=t(8361),p=Object.assign,d=Object.defineProperty,h=o([].concat);e.exports=!p||a((function(){if(r&&1!==p({b:1},p(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},n={},t=Symbol(),o="abcdefghijklmnopqrst";return e[t]=7,o.split("").forEach((function(e){n[e]=e})),7!=p({},e)[t]||l(p({},n)).join("")!=o}))?function(e,n){for(var t=s(e),o=arguments.length,a=1,p=c.f,d=u.f;o>a;)for(var g,v=f(arguments[a++]),A=p?h(l(v),p(v)):l(v),b=A.length,m=0;b>m;)g=A[m++],r&&!i(d,v,g)||(t[g]=v[g]);return t}:p},30:(e,n,t)=>{var r,o=t(9670),i=t(6048),a=t(748),l=t(3501),c=t(490),u=t(317),s=t(6200),f=s("IE_PROTO"),p=function(){},d=function(e){return" - -
-
- - -
-
-
-
-
-
- -
-

LocalChangeToken

-
-
- -
-
fun LocalChangeToken(ids: List<Long>)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl.dao/-local-change-token/ids.html b/docs/engine/engine/com.google.android.fhir.db.impl.dao/-local-change-token/ids.html deleted file mode 100644 index 49226a754b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl.dao/-local-change-token/ids.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ids - - -
-
- - -
-
-
-
-
-
- -
-

ids

-
-
- -
-
val ids: List<Long>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl.dao/-local-change-token/index.html b/docs/engine/engine/com.google.android.fhir.db.impl.dao/-local-change-token/index.html deleted file mode 100644 index 48ebad95f4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl.dao/-local-change-token/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - LocalChangeToken - - -
-
- - -
-
-
-
-
-
- -
-

LocalChangeToken

-
data class LocalChangeToken(ids: List<Long>)
-
-
-
-
-

Properties

-
-
-
-
ids -
Link copied to clipboard
-
-
-
-
val ids: List<Long>
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl.dao/index.html b/docs/engine/engine/com.google.android.fhir.db.impl.dao/index.html deleted file mode 100644 index 8d72ce8202..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl.dao/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - com.google.android.fhir.db.impl.dao - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.db.impl.dao

-
-
-
-
-

Types

-
-
-
-
LocalChangeToken -
Link copied to clipboard
-
-
-
- -
-
data class LocalChangeToken(ids: List<Long>)
-
-
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/-database-config.html b/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/-database-config.html deleted file mode 100644 index 0519dbc6e3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/-database-config.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - DatabaseConfig - - -
-
- - -
-
-
-
-
-
- -
-

DatabaseConfig

-
-
- -
-
fun DatabaseConfig(inMemory: Boolean, enableEncryption: Boolean, databaseErrorStrategy: DatabaseErrorStrategy)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/database-error-strategy.html b/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/database-error-strategy.html deleted file mode 100644 index 55116e9f08..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/database-error-strategy.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - databaseErrorStrategy - - -
-
- - -
-
-
-
-
-
- -
-

databaseErrorStrategy

-
-
- -
-
val databaseErrorStrategy: DatabaseErrorStrategy
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/enable-encryption.html b/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/enable-encryption.html deleted file mode 100644 index 2a7c0c8bb3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/enable-encryption.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - enableEncryption - - -
-
- - -
-
-
-
-
-
- -
-

enableEncryption

-
-
- -
-
val enableEncryption: Boolean
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/in-memory.html b/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/in-memory.html deleted file mode 100644 index 9597544fc1..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/in-memory.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - inMemory - - -
-
- - -
-
-
-
-
-
- -
-

inMemory

-
-
- -
-
val inMemory: Boolean
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/index.html b/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/index.html deleted file mode 100644 index c1635cc2c0..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-database-config/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - DatabaseConfig - - -
-
- - -
-
-
-
-
-
- -
-

DatabaseConfig

-
data class DatabaseConfig(inMemory: Boolean, enableEncryption: Boolean, databaseErrorStrategy: DatabaseErrorStrategy)
-
-
-
-
-

Properties

-
-
-
-
databaseErrorStrategy -
Link copied to clipboard
-
-
-
-
val databaseErrorStrategy: DatabaseErrorStrategy
-
-
-
-
- -
-
-
enableEncryption -
Link copied to clipboard
-
-
-
-
val enableEncryption: Boolean
-
-
-
-
- -
-
-
inMemory -
Link copied to clipboard
-
-
-
-
val inMemory: Boolean
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/-s-q-l-cipher-support-helper.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/-s-q-l-cipher-support-helper.html deleted file mode 100644 index 9ad02c2ad2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/-s-q-l-cipher-support-helper.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - SQLCipherSupportHelper - - -
-
- - -
-
-
-
-
-
- -
-

SQLCipherSupportHelper

-
-
- -
-
fun SQLCipherSupportHelper(configuration: SupportSQLiteOpenHelper.Configuration, hook: SQLiteDatabaseHook? = null, databaseErrorStrategy: DatabaseErrorStrategy, passphraseFetcher: () -> ByteArray)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/close.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/close.html deleted file mode 100644 index 1e323ca656..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/close.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - close - - -
-
- - -
-
-
-
-
-
- -
-

close

-
-
- -
-
open override fun close()
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-database-name.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-database-name.html deleted file mode 100644 index 7e83f4912e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-database-name.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getDatabaseName - - -
-
- - -
-
-
-
-
-
- -
-

getDatabaseName

-
-
- -
-
open override fun getDatabaseName(): String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-readable-database.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-readable-database.html deleted file mode 100644 index 41634ca93a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-readable-database.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getReadableDatabase - - -
-
- - -
-
-
-
-
-
- -
-

getReadableDatabase

-
-
- -
-
open override fun getReadableDatabase(): SupportSQLiteDatabase?
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-writable-database.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-writable-database.html deleted file mode 100644 index 2ab284f6e3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-writable-database.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getWritableDatabase - - -
-
- - -
-
-
-
-
-
- -
-

getWritableDatabase

-
-
- -
-
open override fun getWritableDatabase(): SupportSQLiteDatabase?
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/index.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/index.html deleted file mode 100644 index b5acfc6e81..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - SQLCipherSupportHelper - - -
-
- - -
-
-
-
-
-
- -
-

SQLCipherSupportHelper

-
class SQLCipherSupportHelper(configuration: SupportSQLiteOpenHelper.Configuration, hook: SQLiteDatabaseHook?, databaseErrorStrategy: DatabaseErrorStrategy, passphraseFetcher: () -> ByteArray) : SupportSQLiteOpenHelper

A SupportSQLiteOpenHelper which initializes a SQLiteDatabase with a passphrase.

-
-
-
-
-

Constructors

-
-
-
-
SQLCipherSupportHelper -
Link copied to clipboard
-
-
-
-
fun SQLCipherSupportHelper(configuration: SupportSQLiteOpenHelper.Configuration, hook: SQLiteDatabaseHook? = null, databaseErrorStrategy: DatabaseErrorStrategy, passphraseFetcher: () -> ByteArray)
-
-
-
-
-
-

Functions

-
-
-
-
close -
Link copied to clipboard
-
-
-
- -
-
open override fun close()
-
-
-
-
-
-
- -
-
-
getDatabaseName -
Link copied to clipboard
-
-
-
- -
-
open override fun getDatabaseName(): String
-
-
-
-
-
-
- -
-
-
getReadableDatabase -
Link copied to clipboard
-
-
-
- -
-
open override fun getReadableDatabase(): SupportSQLiteDatabase?
-
-
-
-
-
-
- -
-
-
getWritableDatabase -
Link copied to clipboard
-
-
-
- -
-
open override fun getWritableDatabase(): SupportSQLiteDatabase?
-
-
-
-
-
-
- -
-
-
setWriteAheadLoggingEnabled -
Link copied to clipboard
-
-
-
- -
-
open override fun setWriteAheadLoggingEnabled(enabled: Boolean)
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/set-write-ahead-logging-enabled.html b/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/set-write-ahead-logging-enabled.html deleted file mode 100644 index 8cd0add103..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/set-write-ahead-logging-enabled.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - setWriteAheadLoggingEnabled - - -
-
- - -
-
-
-
-
-
- -
-

setWriteAheadLoggingEnabled

-
-
- -
-
open override fun setWriteAheadLoggingEnabled(enabled: Boolean)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db.impl/index.html b/docs/engine/engine/com.google.android.fhir.db.impl/index.html deleted file mode 100644 index eabc69b62a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db.impl/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - com.google.android.fhir.db.impl - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.db.impl

-
-
-
-
-

Types

-
-
-
-
DatabaseConfig -
Link copied to clipboard
-
-
-
- -
-
data class DatabaseConfig(inMemory: Boolean, enableEncryption: Boolean, databaseErrorStrategy: DatabaseErrorStrategy)
-
-
-
-
-
-
- -
-
-
SQLCipherSupportHelper -
Link copied to clipboard
-
-
-
- -
-
class SQLCipherSupportHelper(configuration: SupportSQLiteOpenHelper.Configuration, hook: SQLiteDatabaseHook?, databaseErrorStrategy: DatabaseErrorStrategy, passphraseFetcher: () -> ByteArray) : SupportSQLiteOpenHelper
-
-
A SupportSQLiteOpenHelper which initializes a SQLiteDatabase with a passphrase.
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-t-i-m-e-o-u-t/index.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-t-i-m-e-o-u-t/index.html deleted file mode 100644 index d56f35b6d7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-t-i-m-e-o-u-t/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - TIMEOUT - - -
-
- - -
-
-
-
-
-
- -
-

TIMEOUT

-

Timeout when accessing encrypted database.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-k-n-o-w-n/index.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-k-n-o-w-n/index.html deleted file mode 100644 index 6ae973e18d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-k-n-o-w-n/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - UNKNOWN - - -
-
- - -
-
-
-
-
-
- -
-

UNKNOWN

-

Unclassified error. The error could potentially be mitigated by recreating the database.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-s-u-p-p-o-r-t-e-d/index.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-s-u-p-p-o-r-t-e-d/index.html deleted file mode 100644 index afca1983d8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-s-u-p-p-o-r-t-e-d/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - UNSUPPORTED - - -
-
- - -
-
-
-
-
-
- -
-

UNSUPPORTED

-

Required encryption algorithm is not available.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/index.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/index.html deleted file mode 100644 index 1cc0a82740..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - DatabaseEncryptionErrorCode - - -
-
- - -
-
-
-
-
-
- -
-

DatabaseEncryptionErrorCode

- -
-
-
-
-

Entries

-
-
-
-
TIMEOUT -
Link copied to clipboard
-
-
-
-
Timeout when accessing encrypted database.
-
-
-
-
- -
-
-
UNSUPPORTED -
Link copied to clipboard
-
-
-
-
Required encryption algorithm is not available.
-
-
-
-
- -
-
-
UNKNOWN -
Link copied to clipboard
-
-
-
-
Unclassified error.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-exception.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-exception.html deleted file mode 100644 index 99347cce2b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-exception.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - DatabaseEncryptionException - - -
-
- - -
-
-
-
-
-
- -
-

DatabaseEncryptionException

-
-
- - -
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/error-code.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/error-code.html deleted file mode 100644 index 154ac476a4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/error-code.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - errorCode - - -
-
- - -
-
-
-
-
-
- -
-

errorCode

-
-
- - -
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/index.html b/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/index.html deleted file mode 100644 index aae68e874a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-database-encryption-exception/index.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - DatabaseEncryptionException - - -
-
- - -
-
-
-
-
-
- -
-

DatabaseEncryptionException

-

An database encryption exception wrapper which maps comprehensive keystore errors to a limited set of actionable errors.

-
-
-
-
-

Constructors

-
-
-
-
DatabaseEncryptionException -
Link copied to clipboard
-
-
- -
-
-
-
-

Types

-
-
-
-
DatabaseEncryptionErrorCode -
Link copied to clipboard
-
- -
-
-
-

Properties

-
-
-
-
errorCode -
Link copied to clipboard
-
-
- -
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-l-l-e-r_-n-o-n-c-e_-p-r-o-h-i-b-i-t-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-l-l-e-r_-n-o-n-c-e_-p-r-o-h-i-b-i-t-e-d.html deleted file mode 100644 index 9164a2a8e6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-l-l-e-r_-n-o-n-c-e_-p-r-o-h-i-b-i-t-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_CALLER_NONCE_PROHIBITED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_CALLER_NONCE_PROHIBITED

-
-
- -
-
const val ERROR_CALLER_NONCE_PROHIBITED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-n-n-o-t_-a-t-t-e-s-t_-i-d-s.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-n-n-o-t_-a-t-t-e-s-t_-i-d-s.html deleted file mode 100644 index 323da892c8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-n-n-o-t_-a-t-t-e-s-t_-i-d-s.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_CANNOT_ATTEST_IDS - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_CANNOT_ATTEST_IDS

-
-
- -
-
const val ERROR_CANNOT_ATTEST_IDS: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-o-n-c-u-r-r-e-n-t_-a-c-c-e-s-s_-c-o-n-f-l-i-c-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-o-n-c-u-r-r-e-n-t_-a-c-c-e-s-s_-c-o-n-f-l-i-c-t.html deleted file mode 100644 index 3d28ebbd37..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-o-n-c-u-r-r-e-n-t_-a-c-c-e-s-s_-c-o-n-f-l-i-c-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_CONCURRENT_ACCESS_CONFLICT - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_CONCURRENT_ACCESS_CONFLICT

-
-
- -
-
const val ERROR_CONCURRENT_ACCESS_CONFLICT: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-d-e-l-e-g-a-t-i-o-n_-n-o-t_-a-l-l-o-w-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-d-e-l-e-g-a-t-i-o-n_-n-o-t_-a-l-l-o-w-e-d.html deleted file mode 100644 index e81abea2f8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-d-e-l-e-g-a-t-i-o-n_-n-o-t_-a-l-l-o-w-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_DELEGATION_NOT_ALLOWED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_DELEGATION_NOT_ALLOWED

-
-
- -
-
const val ERROR_DELEGATION_NOT_ALLOWED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-d-e-c-r-y-p-t-i-o-n_-f-a-i-l-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-d-e-c-r-y-p-t-i-o-n_-f-a-i-l-e-d.html deleted file mode 100644 index c27ac50016..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-d-e-c-r-y-p-t-i-o-n_-f-a-i-l-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_IMPORTED_KEY_DECRYPTION_FAILED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_IMPORTED_KEY_DECRYPTION_FAILED

-
-
- -
-
const val ERROR_IMPORTED_KEY_DECRYPTION_FAILED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-e-n-c-r-y-p-t-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-e-n-c-r-y-p-t-e-d.html deleted file mode 100644 index 2298de77a9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-e-n-c-r-y-p-t-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_IMPORTED_KEY_NOT_ENCRYPTED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_IMPORTED_KEY_NOT_ENCRYPTED

-
-
- -
-
const val ERROR_IMPORTED_KEY_NOT_ENCRYPTED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-s-i-g-n-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-s-i-g-n-e-d.html deleted file mode 100644 index 40c957b051..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-s-i-g-n-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_IMPORTED_KEY_NOT_SIGNED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_IMPORTED_KEY_NOT_SIGNED

-
-
- -
-
const val ERROR_IMPORTED_KEY_NOT_SIGNED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html deleted file mode 100644 index 8428650e21..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_IMPORTED_KEY_VERIFICATION_FAILED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_IMPORTED_KEY_VERIFICATION_FAILED

-
-
- -
-
const val ERROR_IMPORTED_KEY_VERIFICATION_FAILED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t_-p-a-r-a-m-e-t-e-r_-m-i-s-m-a-t-c-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t_-p-a-r-a-m-e-t-e-r_-m-i-s-m-a-t-c-h.html deleted file mode 100644 index 1ecd965dcb..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t_-p-a-r-a-m-e-t-e-r_-m-i-s-m-a-t-c-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_IMPORT_PARAMETER_MISMATCH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_IMPORT_PARAMETER_MISMATCH

-
-
- -
-
const val ERROR_IMPORT_PARAMETER_MISMATCH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-a-l-g-o-r-i-t-h-m.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-a-l-g-o-r-i-t-h-m.html deleted file mode 100644 index 6ffe2000c2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-a-l-g-o-r-i-t-h-m.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INCOMPATIBLE_ALGORITHM - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INCOMPATIBLE_ALGORITHM

-
-
- -
-
const val ERROR_INCOMPATIBLE_ALGORITHM: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-b-l-o-c-k_-m-o-d-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-b-l-o-c-k_-m-o-d-e.html deleted file mode 100644 index 1776e6c090..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-b-l-o-c-k_-m-o-d-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INCOMPATIBLE_BLOCK_MODE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INCOMPATIBLE_BLOCK_MODE

-
-
- -
-
const val ERROR_INCOMPATIBLE_BLOCK_MODE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-d-i-g-e-s-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-d-i-g-e-s-t.html deleted file mode 100644 index be228ac553..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-d-i-g-e-s-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INCOMPATIBLE_DIGEST - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INCOMPATIBLE_DIGEST

-
-
- -
-
const val ERROR_INCOMPATIBLE_DIGEST: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-k-e-y_-f-o-r-m-a-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-k-e-y_-f-o-r-m-a-t.html deleted file mode 100644 index bbe75cc33b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-k-e-y_-f-o-r-m-a-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INCOMPATIBLE_KEY_FORMAT - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INCOMPATIBLE_KEY_FORMAT

-
-
- -
-
const val ERROR_INCOMPATIBLE_KEY_FORMAT: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-a-d-d-i-n-g_-m-o-d-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-a-d-d-i-n-g_-m-o-d-e.html deleted file mode 100644 index 9ce32d48cc..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-a-d-d-i-n-g_-m-o-d-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INCOMPATIBLE_PADDING_MODE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INCOMPATIBLE_PADDING_MODE

-
-
- -
-
const val ERROR_INCOMPATIBLE_PADDING_MODE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-u-r-p-o-s-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-u-r-p-o-s-e.html deleted file mode 100644 index 2e9d0af5e6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-u-r-p-o-s-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INCOMPATIBLE_PURPOSE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INCOMPATIBLE_PURPOSE

-
-
- -
-
const val ERROR_INCOMPATIBLE_PURPOSE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-s-u-f-f-i-c-i-e-n-t_-b-u-f-f-e-r_-s-p-a-c-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-s-u-f-f-i-c-i-e-n-t_-b-u-f-f-e-r_-s-p-a-c-e.html deleted file mode 100644 index 0b49c659b9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-s-u-f-f-i-c-i-e-n-t_-b-u-f-f-e-r_-s-p-a-c-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INSUFFICIENT_BUFFER_SPACE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INSUFFICIENT_BUFFER_SPACE

-
-
- -
-
const val ERROR_INSUFFICIENT_BUFFER_SPACE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-r-g-u-m-e-n-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-r-g-u-m-e-n-t.html deleted file mode 100644 index 6be7f6fa9a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-r-g-u-m-e-n-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_ARGUMENT - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_ARGUMENT

-
-
- -
-
const val ERROR_INVALID_ARGUMENT: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-u-t-h-o-r-i-z-a-t-i-o-n_-t-i-m-e-o-u-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-u-t-h-o-r-i-z-a-t-i-o-n_-t-i-m-e-o-u-t.html deleted file mode 100644 index 2689c1a2a9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-u-t-h-o-r-i-z-a-t-i-o-n_-t-i-m-e-o-u-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_AUTHORIZATION_TIMEOUT - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_AUTHORIZATION_TIMEOUT

-
-
- -
-
const val ERROR_INVALID_AUTHORIZATION_TIMEOUT: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-e-x-p-i-r-a-t-i-o-n_-t-i-m-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-e-x-p-i-r-a-t-i-o-n_-t-i-m-e.html deleted file mode 100644 index 2926c42e90..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-e-x-p-i-r-a-t-i-o-n_-t-i-m-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_EXPIRATION_TIME - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_EXPIRATION_TIME

-
-
- -
-
const val ERROR_INVALID_EXPIRATION_TIME: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-i-n-p-u-t_-l-e-n-g-t-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-i-n-p-u-t_-l-e-n-g-t-h.html deleted file mode 100644 index d1999f8f57..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-i-n-p-u-t_-l-e-n-g-t-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_INPUT_LENGTH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_INPUT_LENGTH

-
-
- -
-
const val ERROR_INVALID_INPUT_LENGTH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-k-e-y_-b-l-o-b.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-k-e-y_-b-l-o-b.html deleted file mode 100644 index 90ae0503e2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-k-e-y_-b-l-o-b.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_KEY_BLOB - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_KEY_BLOB

-
-
- -
-
const val ERROR_INVALID_KEY_BLOB: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-m-a-c_-l-e-n-g-t-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-m-a-c_-l-e-n-g-t-h.html deleted file mode 100644 index 877b7b7101..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-m-a-c_-l-e-n-g-t-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_MAC_LENGTH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_MAC_LENGTH

-
-
- -
-
const val ERROR_INVALID_MAC_LENGTH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-n-o-n-c-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-n-o-n-c-e.html deleted file mode 100644 index e732d7f1b1..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-n-o-n-c-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_NONCE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_NONCE

-
-
- -
-
const val ERROR_INVALID_NONCE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-o-p-e-r-a-t-i-o-n_-h-a-n-d-l-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-o-p-e-r-a-t-i-o-n_-h-a-n-d-l-e.html deleted file mode 100644 index 1390e5001d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-o-p-e-r-a-t-i-o-n_-h-a-n-d-l-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_OPERATION_HANDLE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_OPERATION_HANDLE

-
-
- -
-
const val ERROR_INVALID_OPERATION_HANDLE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-r-e-s-c-o-p-i-n-g.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-r-e-s-c-o-p-i-n-g.html deleted file mode 100644 index 32454fe8ab..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-r-e-s-c-o-p-i-n-g.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_RESCOPING - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_RESCOPING

-
-
- -
-
const val ERROR_INVALID_RESCOPING: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-t-a-g.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-t-a-g.html deleted file mode 100644 index 9a55460976..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-t-a-g.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_TAG - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_TAG

-
-
- -
-
const val ERROR_INVALID_TAG: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-u-s-e-r_-i-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-u-s-e-r_-i-d.html deleted file mode 100644 index cfe69a2185..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-u-s-e-r_-i-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_INVALID_USER_ID - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_INVALID_USER_ID

-
-
- -
-
const val ERROR_INVALID_USER_ID: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-i-r-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-i-r-e-d.html deleted file mode 100644 index 2775159e0e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-i-r-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_KEY_EXPIRED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_KEY_EXPIRED

-
-
- -
-
const val ERROR_KEY_EXPIRED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-o-r-t_-o-p-t-i-o-n-s_-i-n-v-a-l-i-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-o-r-t_-o-p-t-i-o-n-s_-i-n-v-a-l-i-d.html deleted file mode 100644 index 128f0c8ab9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-o-r-t_-o-p-t-i-o-n-s_-i-n-v-a-l-i-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_KEY_EXPORT_OPTIONS_INVALID - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_KEY_EXPORT_OPTIONS_INVALID

-
-
- -
-
const val ERROR_KEY_EXPORT_OPTIONS_INVALID: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-m-a-x_-o-p-s_-e-x-c-e-e-d-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-m-a-x_-o-p-s_-e-x-c-e-e-d-e-d.html deleted file mode 100644 index bb4cdd3346..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-m-a-x_-o-p-s_-e-x-c-e-e-d-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_KEY_MAX_OPS_EXCEEDED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_KEY_MAX_OPS_EXCEEDED

-
-
- -
-
const val ERROR_KEY_MAX_OPS_EXCEEDED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-n-o-t_-y-e-t_-v-a-l-i-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-n-o-t_-y-e-t_-v-a-l-i-d.html deleted file mode 100644 index dddec21ed8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-n-o-t_-y-e-t_-v-a-l-i-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_KEY_NOT_YET_VALID - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_KEY_NOT_YET_VALID

-
-
- -
-
const val ERROR_KEY_NOT_YET_VALID: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-r-a-t-e_-l-i-m-i-t_-e-x-c-e-e-d-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-r-a-t-e_-l-i-m-i-t_-e-x-c-e-e-d-e-d.html deleted file mode 100644 index 729bced9d7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-r-a-t-e_-l-i-m-i-t_-e-x-c-e-e-d-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_KEY_RATE_LIMIT_EXCEEDED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_KEY_RATE_LIMIT_EXCEEDED

-
-
- -
-
const val ERROR_KEY_RATE_LIMIT_EXCEEDED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-u-s-e-r_-n-o-t_-a-u-t-h-e-n-t-i-c-a-t-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-u-s-e-r_-n-o-t_-a-u-t-h-e-n-t-i-c-a-t-e-d.html deleted file mode 100644 index fabacb59a4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-u-s-e-r_-n-o-t_-a-u-t-h-e-n-t-i-c-a-t-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_KEY_USER_NOT_AUTHENTICATED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_KEY_USER_NOT_AUTHENTICATED

-
-
- -
-
const val ERROR_KEY_USER_NOT_AUTHENTICATED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-e-m-o-r-y_-a-l-l-o-c-a-t-i-o-n_-f-a-i-l-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-e-m-o-r-y_-a-l-l-o-c-a-t-i-o-n_-f-a-i-l-e-d.html deleted file mode 100644 index 9a83ac68fc..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-e-m-o-r-y_-a-l-l-o-c-a-t-i-o-n_-f-a-i-l-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_MEMORY_ALLOCATION_FAILED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_MEMORY_ALLOCATION_FAILED

-
-
- -
-
const val ERROR_MEMORY_ALLOCATION_FAILED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-a-c_-l-e-n-g-t-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-a-c_-l-e-n-g-t-h.html deleted file mode 100644 index 38ba06648a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-a-c_-l-e-n-g-t-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_MISSING_MAC_LENGTH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_MISSING_MAC_LENGTH

-
-
- -
-
const val ERROR_MISSING_MAC_LENGTH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-i-n_-m-a-c_-l-e-n-g-t-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-i-n_-m-a-c_-l-e-n-g-t-h.html deleted file mode 100644 index 1b5a5ab73d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-i-n_-m-a-c_-l-e-n-g-t-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_MISSING_MIN_MAC_LENGTH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_MISSING_MIN_MAC_LENGTH

-
-
- -
-
const val ERROR_MISSING_MIN_MAC_LENGTH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-n-o-n-c-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-n-o-n-c-e.html deleted file mode 100644 index c479b5e79b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-n-o-n-c-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_MISSING_NONCE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_MISSING_NONCE

-
-
- -
-
const val ERROR_MISSING_NONCE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-k.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-k.html deleted file mode 100644 index 86cf009996..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-k.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_OK - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_OK

-
-
- -
-
const val ERROR_OK: Int = 0
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-p-e-r-a-t-i-o-n_-c-a-n-c-e-l-l-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-p-e-r-a-t-i-o-n_-c-a-n-c-e-l-l-e-d.html deleted file mode 100644 index 73adf7ce38..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-p-e-r-a-t-i-o-n_-c-a-n-c-e-l-l-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_OPERATION_CANCELLED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_OPERATION_CANCELLED

-
-
- -
-
const val ERROR_OPERATION_CANCELLED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-u-t-p-u-t_-p-a-r-a-m-e-t-e-r_-n-u-l-l.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-u-t-p-u-t_-p-a-r-a-m-e-t-e-r_-n-u-l-l.html deleted file mode 100644 index 436b62d527..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-u-t-p-u-t_-p-a-r-a-m-e-t-e-r_-n-u-l-l.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_OUTPUT_PARAMETER_NULL - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_OUTPUT_PARAMETER_NULL

-
-
- -
-
const val ERROR_OUTPUT_PARAMETER_NULL: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-r-o-o-t_-o-f_-t-r-u-s-t_-a-l-r-e-a-d-y_-s-e-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-r-o-o-t_-o-f_-t-r-u-s-t_-a-l-r-e-a-d-y_-s-e-t.html deleted file mode 100644 index f5d9b88266..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-r-o-o-t_-o-f_-t-r-u-s-t_-a-l-r-e-a-d-y_-s-e-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_ROOT_OF_TRUST_ALREADY_SET - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_ROOT_OF_TRUST_ALREADY_SET

-
-
- -
-
const val ERROR_ROOT_OF_TRUST_ALREADY_SET: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-a-c-c-e-s-s_-d-e-n-i-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-a-c-c-e-s-s_-d-e-n-i-e-d.html deleted file mode 100644 index b96d50f34a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-a-c-c-e-s-s_-d-e-n-i-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_SECURE_HW_ACCESS_DENIED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_SECURE_HW_ACCESS_DENIED

-
-
- -
-
const val ERROR_SECURE_HW_ACCESS_DENIED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-b-u-s-y.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-b-u-s-y.html deleted file mode 100644 index 4e7368f1e6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-b-u-s-y.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_SECURE_HW_BUSY - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_SECURE_HW_BUSY

-
-
- -
-
const val ERROR_SECURE_HW_BUSY: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-c-o-m-m-u-n-i-c-a-t-i-o-n_-f-a-i-l-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-c-o-m-m-u-n-i-c-a-t-i-o-n_-f-a-i-l-e-d.html deleted file mode 100644 index 29971a3d79..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-c-o-m-m-u-n-i-c-a-t-i-o-n_-f-a-i-l-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_SECURE_HW_COMMUNICATION_FAILED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_SECURE_HW_COMMUNICATION_FAILED

-
-
- -
-
const val ERROR_SECURE_HW_COMMUNICATION_FAILED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-t-o-o_-m-a-n-y_-o-p-e-r-a-t-i-o-n-s.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-t-o-o_-m-a-n-y_-o-p-e-r-a-t-i-o-n-s.html deleted file mode 100644 index 87b622a3b5..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-t-o-o_-m-a-n-y_-o-p-e-r-a-t-i-o-n-s.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_TOO_MANY_OPERATIONS - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_TOO_MANY_OPERATIONS

-
-
- -
-
const val ERROR_TOO_MANY_OPERATIONS: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-e-x-p-e-c-t-e-d_-n-u-l-l_-p-o-i-n-t-e-r.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-e-x-p-e-c-t-e-d_-n-u-l-l_-p-o-i-n-t-e-r.html deleted file mode 100644 index 07d2150b83..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-e-x-p-e-c-t-e-d_-n-u-l-l_-p-o-i-n-t-e-r.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNEXPECTED_NULL_POINTER - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNEXPECTED_NULL_POINTER

-
-
- -
-
const val ERROR_UNEXPECTED_NULL_POINTER: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-i-m-p-l-e-m-e-n-t-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-i-m-p-l-e-m-e-n-t-e-d.html deleted file mode 100644 index aa8c81ee4a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-i-m-p-l-e-m-e-n-t-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNIMPLEMENTED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNIMPLEMENTED

-
-
- -
-
const val ERROR_UNIMPLEMENTED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-k-n-o-w-n_-e-r-r-o-r.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-k-n-o-w-n_-e-r-r-o-r.html deleted file mode 100644 index 09f5f14cfe..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-k-n-o-w-n_-e-r-r-o-r.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNKNOWN_ERROR - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNKNOWN_ERROR

-
-
- -
-
const val ERROR_UNKNOWN_ERROR: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-a-l-g-o-r-i-t-h-m.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-a-l-g-o-r-i-t-h-m.html deleted file mode 100644 index f5d7fa5154..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-a-l-g-o-r-i-t-h-m.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_ALGORITHM - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_ALGORITHM

-
-
- -
-
const val ERROR_UNSUPPORTED_ALGORITHM: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-b-l-o-c-k_-m-o-d-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-b-l-o-c-k_-m-o-d-e.html deleted file mode 100644 index 629f618527..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-b-l-o-c-k_-m-o-d-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_BLOCK_MODE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_BLOCK_MODE

-
-
- -
-
const val ERROR_UNSUPPORTED_BLOCK_MODE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-d-i-g-e-s-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-d-i-g-e-s-t.html deleted file mode 100644 index 3085adc0c5..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-d-i-g-e-s-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_DIGEST - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_DIGEST

-
-
- -
-
const val ERROR_UNSUPPORTED_DIGEST: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-e-c_-f-i-e-l-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-e-c_-f-i-e-l-d.html deleted file mode 100644 index f85b6aec85..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-e-c_-f-i-e-l-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_EC_FIELD - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_EC_FIELD

-
-
- -
-
const val ERROR_UNSUPPORTED_EC_FIELD: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-e-n-c-r-y-p-t-i-o-n_-a-l-g-o-r-i-t-h-m.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-e-n-c-r-y-p-t-i-o-n_-a-l-g-o-r-i-t-h-m.html deleted file mode 100644 index 77bc5e9b1c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-e-n-c-r-y-p-t-i-o-n_-a-l-g-o-r-i-t-h-m.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM

-
-
- -
-
const val ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-f-o-r-m-a-t.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-f-o-r-m-a-t.html deleted file mode 100644 index 3edcfc14b7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-f-o-r-m-a-t.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_KEY_FORMAT - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_KEY_FORMAT

-
-
- -
-
const val ERROR_UNSUPPORTED_KEY_FORMAT: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-s-i-z-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-s-i-z-e.html deleted file mode 100644 index 4400c876d9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-s-i-z-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_KEY_SIZE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_KEY_SIZE

-
-
- -
-
const val ERROR_UNSUPPORTED_KEY_SIZE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-a-l-g-o-r-i-t-h-m.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-a-l-g-o-r-i-t-h-m.html deleted file mode 100644 index da09a91dfd..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-a-l-g-o-r-i-t-h-m.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM

-
-
- -
-
const val ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-a-c_-l-e-n-g-t-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-a-c_-l-e-n-g-t-h.html deleted file mode 100644 index 2d5b33945e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-a-c_-l-e-n-g-t-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_MAC_LENGTH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_MAC_LENGTH

-
-
- -
-
const val ERROR_UNSUPPORTED_MAC_LENGTH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-i-n_-m-a-c_-l-e-n-g-t-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-i-n_-m-a-c_-l-e-n-g-t-h.html deleted file mode 100644 index b657c60cae..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-i-n_-m-a-c_-l-e-n-g-t-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_MIN_MAC_LENGTH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_MIN_MAC_LENGTH

-
-
- -
-
const val ERROR_UNSUPPORTED_MIN_MAC_LENGTH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-a-d-d-i-n-g_-m-o-d-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-a-d-d-i-n-g_-m-o-d-e.html deleted file mode 100644 index 31ac3fec0b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-a-d-d-i-n-g_-m-o-d-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_PADDING_MODE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_PADDING_MODE

-
-
- -
-
const val ERROR_UNSUPPORTED_PADDING_MODE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-u-r-p-o-s-e.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-u-r-p-o-s-e.html deleted file mode 100644 index f582e6e64e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-u-r-p-o-s-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_PURPOSE - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_PURPOSE

-
-
- -
-
const val ERROR_UNSUPPORTED_PURPOSE: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-t-a-g.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-t-a-g.html deleted file mode 100644 index 4dc4f631fe..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-t-a-g.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_UNSUPPORTED_TAG - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_UNSUPPORTED_TAG

-
-
- -
-
const val ERROR_UNSUPPORTED_TAG: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html deleted file mode 100644 index 42b695f5b4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_VERIFICATION_FAILED - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_VERIFICATION_FAILED

-
-
- -
-
const val ERROR_VERIFICATION_FAILED: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-s-i-o-n_-m-i-s-m-a-t-c-h.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-s-i-o-n_-m-i-s-m-a-t-c-h.html deleted file mode 100644 index d74a208945..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-s-i-o-n_-m-i-s-m-a-t-c-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ERROR_VERSION_MISMATCH - - -
-
- - -
-
-
-
-
-
- -
-

ERROR_VERSION_MISMATCH

-
-
- -
-
const val ERROR_VERSION_MISMATCH: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/index.html b/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/index.html deleted file mode 100644 index 693ede0ba9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-key-store-exception-error-code/index.html +++ /dev/null @@ -1,870 +0,0 @@ - - - - KeyStoreExceptionErrorCode - - -
-
- - -
-
-
-
-
-
- -
-

KeyStoreExceptionErrorCode

-
object KeyStoreExceptionErrorCode

A list of keystore error. This is a duplicate of https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/security/keymaster/KeymasterDefs.java

-
-
-
-
-

Properties

-
-
-
-
ERROR_CALLER_NONCE_PROHIBITED -
Link copied to clipboard
-
-
-
-
const val ERROR_CALLER_NONCE_PROHIBITED: Int
-
-
-
-
- -
-
-
ERROR_CANNOT_ATTEST_IDS -
Link copied to clipboard
-
-
-
-
const val ERROR_CANNOT_ATTEST_IDS: Int
-
-
-
-
- -
-
-
ERROR_CONCURRENT_ACCESS_CONFLICT -
Link copied to clipboard
-
-
-
-
const val ERROR_CONCURRENT_ACCESS_CONFLICT: Int
-
-
-
-
- -
-
-
ERROR_DELEGATION_NOT_ALLOWED -
Link copied to clipboard
-
-
-
-
const val ERROR_DELEGATION_NOT_ALLOWED: Int
-
-
-
-
- -
-
-
ERROR_IMPORT_PARAMETER_MISMATCH -
Link copied to clipboard
-
-
-
-
const val ERROR_IMPORT_PARAMETER_MISMATCH: Int
-
-
-
-
- -
-
-
ERROR_IMPORTED_KEY_DECRYPTION_FAILED -
Link copied to clipboard
-
-
-
-
const val ERROR_IMPORTED_KEY_DECRYPTION_FAILED: Int
-
-
-
-
- -
-
-
ERROR_IMPORTED_KEY_NOT_ENCRYPTED -
Link copied to clipboard
-
-
-
-
const val ERROR_IMPORTED_KEY_NOT_ENCRYPTED: Int
-
-
-
-
- -
-
-
ERROR_IMPORTED_KEY_NOT_SIGNED -
Link copied to clipboard
-
-
-
-
const val ERROR_IMPORTED_KEY_NOT_SIGNED: Int
-
-
-
-
- -
-
-
ERROR_IMPORTED_KEY_VERIFICATION_FAILED -
Link copied to clipboard
-
-
-
-
const val ERROR_IMPORTED_KEY_VERIFICATION_FAILED: Int
-
-
-
-
- -
-
-
ERROR_INCOMPATIBLE_ALGORITHM -
Link copied to clipboard
-
-
-
-
const val ERROR_INCOMPATIBLE_ALGORITHM: Int
-
-
-
-
- -
-
-
ERROR_INCOMPATIBLE_BLOCK_MODE -
Link copied to clipboard
-
-
-
-
const val ERROR_INCOMPATIBLE_BLOCK_MODE: Int
-
-
-
-
- -
-
-
ERROR_INCOMPATIBLE_DIGEST -
Link copied to clipboard
-
-
-
-
const val ERROR_INCOMPATIBLE_DIGEST: Int
-
-
-
-
- -
-
-
ERROR_INCOMPATIBLE_KEY_FORMAT -
Link copied to clipboard
-
-
-
-
const val ERROR_INCOMPATIBLE_KEY_FORMAT: Int
-
-
-
-
- -
-
-
ERROR_INCOMPATIBLE_PADDING_MODE -
Link copied to clipboard
-
-
-
-
const val ERROR_INCOMPATIBLE_PADDING_MODE: Int
-
-
-
-
- -
-
-
ERROR_INCOMPATIBLE_PURPOSE -
Link copied to clipboard
-
-
-
-
const val ERROR_INCOMPATIBLE_PURPOSE: Int
-
-
-
-
- -
-
-
ERROR_INSUFFICIENT_BUFFER_SPACE -
Link copied to clipboard
-
-
-
-
const val ERROR_INSUFFICIENT_BUFFER_SPACE: Int
-
-
-
-
- -
-
-
ERROR_INVALID_ARGUMENT -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_ARGUMENT: Int
-
-
-
-
- -
-
-
ERROR_INVALID_AUTHORIZATION_TIMEOUT -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_AUTHORIZATION_TIMEOUT: Int
-
-
-
-
- -
-
-
ERROR_INVALID_EXPIRATION_TIME -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_EXPIRATION_TIME: Int
-
-
-
-
- -
-
-
ERROR_INVALID_INPUT_LENGTH -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_INPUT_LENGTH: Int
-
-
-
-
- -
-
-
ERROR_INVALID_KEY_BLOB -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_KEY_BLOB: Int
-
-
-
-
- -
-
-
ERROR_INVALID_MAC_LENGTH -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_MAC_LENGTH: Int
-
-
-
-
- -
-
-
ERROR_INVALID_NONCE -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_NONCE: Int
-
-
-
-
- -
-
-
ERROR_INVALID_OPERATION_HANDLE -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_OPERATION_HANDLE: Int
-
-
-
-
- -
-
-
ERROR_INVALID_RESCOPING -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_RESCOPING: Int
-
-
-
-
- -
-
-
ERROR_INVALID_TAG -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_TAG: Int
-
-
-
-
- -
-
-
ERROR_INVALID_USER_ID -
Link copied to clipboard
-
-
-
-
const val ERROR_INVALID_USER_ID: Int
-
-
-
-
- -
-
-
ERROR_KEY_EXPIRED -
Link copied to clipboard
-
-
-
-
const val ERROR_KEY_EXPIRED: Int
-
-
-
-
- -
-
-
ERROR_KEY_EXPORT_OPTIONS_INVALID -
Link copied to clipboard
-
-
-
-
const val ERROR_KEY_EXPORT_OPTIONS_INVALID: Int
-
-
-
-
- -
-
-
ERROR_KEY_MAX_OPS_EXCEEDED -
Link copied to clipboard
-
-
-
-
const val ERROR_KEY_MAX_OPS_EXCEEDED: Int
-
-
-
-
- -
-
-
ERROR_KEY_NOT_YET_VALID -
Link copied to clipboard
-
-
-
-
const val ERROR_KEY_NOT_YET_VALID: Int
-
-
-
-
- -
-
-
ERROR_KEY_RATE_LIMIT_EXCEEDED -
Link copied to clipboard
-
-
-
-
const val ERROR_KEY_RATE_LIMIT_EXCEEDED: Int
-
-
-
-
- -
-
-
ERROR_KEY_USER_NOT_AUTHENTICATED -
Link copied to clipboard
-
-
-
-
const val ERROR_KEY_USER_NOT_AUTHENTICATED: Int
-
-
-
-
- -
-
-
ERROR_MEMORY_ALLOCATION_FAILED -
Link copied to clipboard
-
-
-
-
const val ERROR_MEMORY_ALLOCATION_FAILED: Int
-
-
-
-
- -
-
-
ERROR_MISSING_MAC_LENGTH -
Link copied to clipboard
-
-
-
-
const val ERROR_MISSING_MAC_LENGTH: Int
-
-
-
-
- -
-
-
ERROR_MISSING_MIN_MAC_LENGTH -
Link copied to clipboard
-
-
-
-
const val ERROR_MISSING_MIN_MAC_LENGTH: Int
-
-
-
-
- -
-
-
ERROR_MISSING_NONCE -
Link copied to clipboard
-
-
-
-
const val ERROR_MISSING_NONCE: Int
-
-
-
-
- -
-
-
ERROR_OK -
Link copied to clipboard
-
-
-
-
const val ERROR_OK: Int = 0
-
-
-
-
- -
-
-
ERROR_OPERATION_CANCELLED -
Link copied to clipboard
-
-
-
-
const val ERROR_OPERATION_CANCELLED: Int
-
-
-
-
- -
-
-
ERROR_OUTPUT_PARAMETER_NULL -
Link copied to clipboard
-
-
-
-
const val ERROR_OUTPUT_PARAMETER_NULL: Int
-
-
-
-
- -
-
-
ERROR_ROOT_OF_TRUST_ALREADY_SET -
Link copied to clipboard
-
-
-
-
const val ERROR_ROOT_OF_TRUST_ALREADY_SET: Int
-
-
-
-
- -
-
-
ERROR_SECURE_HW_ACCESS_DENIED -
Link copied to clipboard
-
-
-
-
const val ERROR_SECURE_HW_ACCESS_DENIED: Int
-
-
-
-
- -
-
-
ERROR_SECURE_HW_BUSY -
Link copied to clipboard
-
-
-
-
const val ERROR_SECURE_HW_BUSY: Int
-
-
-
-
- -
-
-
ERROR_SECURE_HW_COMMUNICATION_FAILED -
Link copied to clipboard
-
-
-
-
const val ERROR_SECURE_HW_COMMUNICATION_FAILED: Int
-
-
-
-
- -
-
-
ERROR_TOO_MANY_OPERATIONS -
Link copied to clipboard
-
-
-
-
const val ERROR_TOO_MANY_OPERATIONS: Int
-
-
-
-
- -
-
-
ERROR_UNEXPECTED_NULL_POINTER -
Link copied to clipboard
-
-
-
-
const val ERROR_UNEXPECTED_NULL_POINTER: Int
-
-
-
-
- -
-
-
ERROR_UNIMPLEMENTED -
Link copied to clipboard
-
-
-
-
const val ERROR_UNIMPLEMENTED: Int
-
-
-
-
- -
-
-
ERROR_UNKNOWN_ERROR -
Link copied to clipboard
-
-
-
-
const val ERROR_UNKNOWN_ERROR: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_ALGORITHM -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_ALGORITHM: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_BLOCK_MODE -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_BLOCK_MODE: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_DIGEST -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_DIGEST: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_EC_FIELD -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_EC_FIELD: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_KEY_FORMAT -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_KEY_FORMAT: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_KEY_SIZE -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_KEY_SIZE: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_MAC_LENGTH -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_MAC_LENGTH: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_MIN_MAC_LENGTH -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_MIN_MAC_LENGTH: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_PADDING_MODE -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_PADDING_MODE: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_PURPOSE -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_PURPOSE: Int
-
-
-
-
- -
-
-
ERROR_UNSUPPORTED_TAG -
Link copied to clipboard
-
-
-
-
const val ERROR_UNSUPPORTED_TAG: Int
-
-
-
-
- -
-
-
ERROR_VERIFICATION_FAILED -
Link copied to clipboard
-
-
-
-
const val ERROR_VERIFICATION_FAILED: Int
-
-
-
-
- -
-
-
ERROR_VERSION_MISMATCH -
Link copied to clipboard
-
-
-
-
const val ERROR_VERSION_MISMATCH: Int
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/-resource-not-found-exception.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/-resource-not-found-exception.html deleted file mode 100644 index 957ac5e1f4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/-resource-not-found-exception.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - ResourceNotFoundException - - -
-
- - -
-
-
-
-
-
- -
-

ResourceNotFoundException

-
-
- -
-
fun ResourceNotFoundException(type: String, id: String, cause: Throwable)
fun ResourceNotFoundException(type: String, id: String)
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/id.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/id.html deleted file mode 100644 index 57124b250e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/id.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - id - - -
-
- - -
-
-
-
-
-
- -
-

id

-
-
- -
-
val id: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/index.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/index.html deleted file mode 100644 index 0654bbe8d3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - ResourceNotFoundException - - -
-
- - -
-
-
-
-
-
- -
-

ResourceNotFoundException

-
class ResourceNotFoundException : Exception

Thrown to indicate that the requested resource is not found.

-
-
-
-
-

Constructors

-
-
-
-
ResourceNotFoundException -
Link copied to clipboard
-
-
-
-
fun ResourceNotFoundException(type: String, id: String, cause: Throwable)
-
-
-
-
- -
-
-
ResourceNotFoundException -
Link copied to clipboard
-
-
-
-
fun ResourceNotFoundException(type: String, id: String)
-
-
-
-
-
-

Properties

-
-
-
-
id -
Link copied to clipboard
-
-
-
-
val id: String
-
-
-
-
- -
-
-
type -
Link copied to clipboard
-
-
-
-
val type: String
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/type.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/type.html deleted file mode 100644 index 38fc6f4ec3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-exception/type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - type - - -
-
- - -
-
-
-
-
-
- -
-

type

-
-
- -
-
val type: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/-resource-not-found-in-db-exception.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/-resource-not-found-in-db-exception.html deleted file mode 100644 index 593bee21c4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/-resource-not-found-in-db-exception.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ResourceNotFoundInDbException - - -
-
- - -
-
-
-
-
-
- -
-

ResourceNotFoundInDbException

-
-
- -
-
fun ResourceNotFoundInDbException(type: String, id: String)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/id.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/id.html deleted file mode 100644 index 31921e12fa..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/id.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - id - - -
-
- - -
-
-
-
-
-
- -
-

id

-
-
- -
-
val id: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/index.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/index.html deleted file mode 100644 index c556e567e0..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - ResourceNotFoundInDbException - - -
-
- - -
-
-
-
-
-
- -
-

ResourceNotFoundInDbException

-
class ResourceNotFoundInDbException(type: String, id: String) : Exception

Exception thrown to indicate that the requested resource is not found in the database.

-
-
-
-
-

Constructors

-
-
-
-
ResourceNotFoundInDbException -
Link copied to clipboard
-
-
-
-
fun ResourceNotFoundInDbException(type: String, id: String)
-
-
-
-
-
-

Properties

-
-
-
-
id -
Link copied to clipboard
-
-
-
-
val id: String
-
-
-
-
- -
-
-
type -
Link copied to clipboard
-
-
-
-
val type: String
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/type.html b/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/type.html deleted file mode 100644 index 306f81dc08..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - type - - -
-
- - -
-
-
-
-
-
- -
-

type

-
-
- -
-
val type: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/database-encryption-exception.html b/docs/engine/engine/com.google.android.fhir.db/database-encryption-exception.html deleted file mode 100644 index 71ec318976..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/database-encryption-exception.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - databaseEncryptionException - - -
-
- - -
-
-
-
-
-
- -
-

databaseEncryptionException

-
- -

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.db/index.html b/docs/engine/engine/com.google.android.fhir.db/index.html deleted file mode 100644 index 7d35f07209..0000000000 --- a/docs/engine/engine/com.google.android.fhir.db/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - com.google.android.fhir.db - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.db

-
-
-
-
-

Types

-
-
-
-
DatabaseEncryptionException -
Link copied to clipboard
-
-
-
- - -
An database encryption exception wrapper which maps comprehensive keystore errors to a limited set of actionable errors.
-
-
-
-
- -
-
-
KeyStoreExceptionErrorCode -
Link copied to clipboard
-
-
-
- -
-
object KeyStoreExceptionErrorCode
-
-
A list of keystore error.
-
-
-
-
- -
-
-
ResourceNotFoundException -
Link copied to clipboard
-
-
-
- -
-
class ResourceNotFoundException : Exception
-
-
Thrown to indicate that the requested resource is not found.
-
-
-
-
- -
-
-
ResourceNotFoundInDbException -
Link copied to clipboard
-
-
-
- -
-
class ResourceNotFoundInDbException(type: String, id: String) : Exception
-
-
Exception thrown to indicate that the requested resource is not found in the database.
-
-
-
-
-
-

Properties

-
-
-
-
databaseEncryptionException -
Link copied to clipboard
-
- -
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/-position-index.html b/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/-position-index.html deleted file mode 100644 index 0134d4a70e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/-position-index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - PositionIndex - - -
-
- - -
-
-
-
-
-
- -
-

PositionIndex

-
-
- -
-
fun PositionIndex(latitude: Double, longitude: Double)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/index.html b/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/index.html deleted file mode 100644 index 901aca42f7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - PositionIndex - - -
-
- - -
-
-
-
-
-
- -
-

PositionIndex

-
data class PositionIndex(latitude: Double, longitude: Double)

An index record for a position value in a location resource.

See https://www.hl7.org/fhir/search.html#special.

-
-
-
-
-

Constructors

-
-
-
-
PositionIndex -
Link copied to clipboard
-
-
-
-
fun PositionIndex(latitude: Double, longitude: Double)
-
-
-
-
-
-

Properties

-
-
-
-
latitude -
Link copied to clipboard
-
-
-
-
val latitude: Double
-
-
-
-
- -
-
-
longitude -
Link copied to clipboard
-
-
-
-
val longitude: Double
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/latitude.html b/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/latitude.html deleted file mode 100644 index 6bcc4422bd..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/latitude.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - latitude - - -
-
- - -
-
-
-
-
-
- -
-

latitude

-
-
- -
-
val latitude: Double
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/longitude.html b/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/longitude.html deleted file mode 100644 index 323e5a882f..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index.entities/-position-index/longitude.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - longitude - - -
-
- - -
-
-
-
-
-
- -
-

longitude

-
-
- -
-
val longitude: Double
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index.entities/index.html b/docs/engine/engine/com.google.android.fhir.index.entities/index.html deleted file mode 100644 index 3ea63ce0e2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index.entities/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - com.google.android.fhir.index.entities - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.index.entities

-
-
-
-
-

Types

-
-
-
-
PositionIndex -
Link copied to clipboard
-
-
-
- -
-
data class PositionIndex(latitude: Double, longitude: Double)
-
-
An index record for a position value in a location resource.
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/-search-param-definition.html b/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/-search-param-definition.html deleted file mode 100644 index d1cf8dbac6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/-search-param-definition.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - SearchParamDefinition - - -
-
- - -
-
-
-
-
-
- -
-

SearchParamDefinition

-
-
- -
-
fun SearchParamDefinition(name: String, type: Enumerations.SearchParamType, path: String)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/index.html b/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/index.html deleted file mode 100644 index 8edaa253b9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - SearchParamDefinition - - -
-
- - -
-
-
-
-
-
- -
-

SearchParamDefinition

-
data class SearchParamDefinition(name: String, type: Enumerations.SearchParamType, path: String)
-
-
-
-
-

Properties

-
-
-
-
name -
Link copied to clipboard
-
-
-
-
val name: String
-
-
-
-
- -
-
-
path -
Link copied to clipboard
-
-
-
-
val path: String
-
-
-
-
- -
-
-
type -
Link copied to clipboard
-
-
-
-
val type: Enumerations.SearchParamType
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/name.html b/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/name.html deleted file mode 100644 index 95b7feb5b9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/name.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - name - - -
-
- - -
-
-
-
-
-
- -
-

name

-
-
- -
-
val name: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/path.html b/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/path.html deleted file mode 100644 index bee2671dbc..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/path.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - path - - -
-
- - -
-
-
-
-
-
- -
-

path

-
-
- -
-
val path: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/type.html b/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/type.html deleted file mode 100644 index 4fd6245853..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index/-search-param-definition/type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - type - - -
-
- - -
-
-
-
-
-
- -
-

type

-
-
- -
-
val type: Enumerations.SearchParamType
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.index/index.html b/docs/engine/engine/com.google.android.fhir.index/index.html deleted file mode 100644 index 1988e9c123..0000000000 --- a/docs/engine/engine/com.google.android.fhir.index/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - com.google.android.fhir.index - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.index

-
-
-
-
-

Types

-
-
-
-
SearchParamDefinition -
Link copied to clipboard
-
-
-
- -
-
data class SearchParamDefinition(name: String, type: Enumerations.SearchParamType, path: String)
-
-
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/date-time.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/date-time.html deleted file mode 100644 index 07a82c2791..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/date-time.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - dateTime - - -
-
- - -
-
-
-
-
-
- -
-

dateTime

-
-
- -
-
var dateTime: DateTimeType? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/date.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/date.html deleted file mode 100644 index 0d5654af06..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/date.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - date - - -
-
- - -
-
-
-
-
-
- -
-

date

-
-
- -
-
var date: DateType? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/index.html deleted file mode 100644 index 238c80bca4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-filter-values/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - DateFilterValues - - -
-
- - -
-
-
-
-
-
- -
-

DateFilterValues

-
class DateFilterValues
-
-
-
-
-

Properties

-
-
-
-
date -
Link copied to clipboard
-
-
-
-
var date: DateType? = null
-
-
-
-
- -
-
-
dateTime -
Link copied to clipboard
-
-
-
-
var dateTime: DateTimeType? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/-date-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/-date-param-filter-criterion.html deleted file mode 100644 index c24963adb9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/-date-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - DateParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

DateParamFilterCriterion

-
-
- -
-
fun DateParamFilterCriterion(parameter: DateClientParam, prefix: ParamPrefixEnum = ParamPrefixEnum.EQUAL, value: DateFilterValues? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index 31f133efc9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): List<ConditionParam<Long>>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/index.html deleted file mode 100644 index fc7285aed3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/index.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - DateParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

DateParamFilterCriterion

-
data class DateParamFilterCriterion(parameter: DateClientParam, prefix: ParamPrefixEnum, value: DateFilterValues?) : FilterCriterion

Represents a criterion for filtering DateClientParam. e.g. filter(Patient.BIRTHDATE, { value =of(DateType("2013-03-14")) })

-
-
-
-
-

Constructors

-
-
-
-
DateParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun DateParamFilterCriterion(parameter: DateClientParam, prefix: ParamPrefixEnum = ParamPrefixEnum.EQUAL, value: DateFilterValues? = null)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): List<ConditionParam<Long>>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
- -
-
-
of -
Link copied to clipboard
-
-
-
- -
-
fun of(dateTime: DateTimeType): <ERROR CLASS>
-
-
-
- -
-
fun of(date: DateType): <ERROR CLASS>
-
-
-
-
-
-
-
-

Properties

-
-
-
-
parameter -
Link copied to clipboard
-
-
-
-
val parameter: DateClientParam
-
-
-
-
- -
-
-
prefix -
Link copied to clipboard
-
-
-
-
var prefix: ParamPrefixEnum
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: DateFilterValues? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/of.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/of.html deleted file mode 100644 index c348eb113a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/of.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - of - - -
-
- - -
-
-
-
-
-
- -
-

of

-
-
- -
-
fun of(date: DateType): <ERROR CLASS>
-
-

Returns DateFilterValues from DateType.

-
- -
-
fun of(dateTime: DateTimeType): <ERROR CLASS>
-
-

Returns DateFilterValues from DateTimeType.

-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/parameter.html deleted file mode 100644 index 97320d4a1d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
val parameter: DateClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/prefix.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/prefix.html deleted file mode 100644 index e7001afec1..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/prefix.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - prefix - - -
-
- - -
-
-
-
-
-
- -
-

prefix

-
-
- -
-
var prefix: ParamPrefixEnum
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/value.html deleted file mode 100644 index 97e4eb2cf3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: DateFilterValues? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/-number-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/-number-param-filter-criterion.html deleted file mode 100644 index 9cc1b94f02..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/-number-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - NumberParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

NumberParamFilterCriterion

-
-
- -
-
fun NumberParamFilterCriterion(parameter: NumberClientParam, prefix: ParamPrefixEnum? = null, value: BigDecimal? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index 0409961c6a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/index.html deleted file mode 100644 index 8d39e33e92..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - NumberParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

NumberParamFilterCriterion

-
data class NumberParamFilterCriterion(parameter: NumberClientParam, prefix: ParamPrefixEnum?, value: BigDecimal?) : FilterCriterion

Represents a criterion for filtering NumberClientParam. e.g. filter(RiskAssessment.PROBABILITY,{value = BigDecimal("100")}).

-
-
-
-
-

Constructors

-
-
-
-
NumberParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun NumberParamFilterCriterion(parameter: NumberClientParam, prefix: ParamPrefixEnum? = null, value: BigDecimal? = null)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
-
-

Properties

-
-
-
-
parameter -
Link copied to clipboard
-
-
-
-
val parameter: NumberClientParam
-
-
-
-
- -
-
-
prefix -
Link copied to clipboard
-
-
-
-
var prefix: ParamPrefixEnum? = null
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: BigDecimal? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/parameter.html deleted file mode 100644 index f87f890710..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
val parameter: NumberClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/prefix.html b/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/prefix.html deleted file mode 100644 index f001fe8756..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/prefix.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - prefix - - -
-
- - -
-
-
-
-
-
- -
-

prefix

-
-
- -
-
var prefix: ParamPrefixEnum? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/value.html deleted file mode 100644 index bc9c8ee6c4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: BigDecimal? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/-quantity-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/-quantity-param-filter-criterion.html deleted file mode 100644 index 7c7169b488..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/-quantity-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - QuantityParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

QuantityParamFilterCriterion

-
-
- -
-
fun QuantityParamFilterCriterion(parameter: QuantityClientParam, prefix: ParamPrefixEnum? = null, value: BigDecimal? = null, system: String? = null, unit: String? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index 562734d7ff..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/index.html deleted file mode 100644 index 423fa8725c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/index.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - QuantityParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

QuantityParamFilterCriterion

-
data class QuantityParamFilterCriterion(parameter: QuantityClientParam, prefix: ParamPrefixEnum?, value: BigDecimal?, system: String?, unit: String?) : FilterCriterion

Represents a criterion for filtering QuantityClientParam. e.g. filter(Observation.VALUE_QUANTITY,{value = BigDecimal("5.403")} )

-
-
-
-
-

Constructors

-
-
-
-
QuantityParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun QuantityParamFilterCriterion(parameter: QuantityClientParam, prefix: ParamPrefixEnum? = null, value: BigDecimal? = null, system: String? = null, unit: String? = null)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
-
-

Properties

-
-
-
-
parameter -
Link copied to clipboard
-
-
-
-
val parameter: QuantityClientParam
-
-
-
-
- -
-
-
prefix -
Link copied to clipboard
-
-
-
-
var prefix: ParamPrefixEnum? = null
-
-
-
-
- -
-
-
system -
Link copied to clipboard
-
-
-
-
var system: String? = null
-
-
-
-
- -
-
-
unit -
Link copied to clipboard
-
-
-
-
var unit: String? = null
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: BigDecimal? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/parameter.html deleted file mode 100644 index ef0b82fb28..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
val parameter: QuantityClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/prefix.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/prefix.html deleted file mode 100644 index feaff18806..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/prefix.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - prefix - - -
-
- - -
-
-
-
-
-
- -
-

prefix

-
-
- -
-
var prefix: ParamPrefixEnum? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/system.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/system.html deleted file mode 100644 index f6323397b2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/system.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - system - - -
-
- - -
-
-
-
-
-
- -
-

system

-
-
- -
-
var system: String? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/unit.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/unit.html deleted file mode 100644 index 77dbb16172..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/unit.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - unit - - -
-
- - -
-
-
-
-
-
- -
-

unit

-
-
- -
-
var unit: String? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/value.html deleted file mode 100644 index dc39b1641e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: BigDecimal? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/-reference-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/-reference-param-filter-criterion.html deleted file mode 100644 index 71632d9525..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/-reference-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ReferenceParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

ReferenceParamFilterCriterion

-
-
- -
-
fun ReferenceParamFilterCriterion(parameter: ReferenceClientParam, value: String? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index e6b72efa1a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/index.html deleted file mode 100644 index 91999066a8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - ReferenceParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

ReferenceParamFilterCriterion

-
data class ReferenceParamFilterCriterion(parameter: ReferenceClientParam, value: String?) : FilterCriterion

Represents a criterion for filtering ReferenceClientParam. e.g. filter(Observation.SUBJECT, { value = "Patient/001" })

-
-
-
-
-

Constructors

-
-
-
-
ReferenceParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun ReferenceParamFilterCriterion(parameter: ReferenceClientParam, value: String? = null)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
-
-

Properties

-
-
-
-
parameter -
Link copied to clipboard
-
-
-
-
val parameter: ReferenceClientParam
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: String? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/parameter.html deleted file mode 100644 index 9592117ba5..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
val parameter: ReferenceClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/value.html deleted file mode 100644 index 7ba9214280..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: String? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/-string-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/-string-param-filter-criterion.html deleted file mode 100644 index d5a5a066d1..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/-string-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - StringParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

StringParamFilterCriterion

-
-
- -
-
fun StringParamFilterCriterion(parameter: StringClientParam, modifier: StringFilterModifier = StringFilterModifier.STARTS_WITH, value: String? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index e5f18d3121..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/index.html deleted file mode 100644 index efe3982ea5..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - StringParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

StringParamFilterCriterion

-
data class StringParamFilterCriterion(parameter: StringClientParam, modifier: StringFilterModifier, value: String?) : FilterCriterion

Represents a criterion for filtering StringClientParam. e.g. filter(Patient.FAMILY, { value = "Jones" })

-
-
-
-
-

Constructors

-
-
-
-
StringParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun StringParamFilterCriterion(parameter: StringClientParam, modifier: StringFilterModifier = StringFilterModifier.STARTS_WITH, value: String? = null)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
-
-

Properties

-
-
-
-
modifier -
Link copied to clipboard
-
-
-
-
var modifier: StringFilterModifier
-
-
-
-
- -
-
-
parameter -
Link copied to clipboard
-
-
-
-
val parameter: StringClientParam
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: String? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/modifier.html b/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/modifier.html deleted file mode 100644 index 8bd1905b15..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/modifier.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - modifier - - -
-
- - -
-
-
-
-
-
- -
-

modifier

-
-
- -
-
var modifier: StringFilterModifier
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/parameter.html deleted file mode 100644 index 853ca6ffdc..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
val parameter: StringClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/value.html deleted file mode 100644 index 3e68e3783b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: String? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-filter-value/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-filter-value/index.html deleted file mode 100644 index 9a69ed7ac8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-filter-value/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - TokenFilterValue - - -
-
- - -
-
-
-
-
-
- -
-

TokenFilterValue

-
class TokenFilterValue
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/-token-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/-token-param-filter-criterion.html deleted file mode 100644 index ee454851e2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/-token-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - TokenParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

TokenParamFilterCriterion

-
-
- -
-
fun TokenParamFilterCriterion(parameter: TokenClientParam)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index 8eb18cd8ad..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/index.html deleted file mode 100644 index 06bec89ca9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - TokenParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

TokenParamFilterCriterion

-
data class TokenParamFilterCriterion(parameter: TokenClientParam) : FilterCriterion

Represents a criterion for filtering TokenClientParam. e.g. filter(Patient.GENDER, { value = of(CodeType("male")) })

-
-
-
-
-

Constructors

-
-
-
-
TokenParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun TokenParamFilterCriterion(parameter: TokenClientParam)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
- -
-
-
of -
Link copied to clipboard
-
-
-
- -
-
fun of(boolean: Boolean): <ERROR CLASS>
-
-
-
- -
-
fun of(string: String): <ERROR CLASS>
-
-
Returns TokenFilterValue from String.
-
- -
-
fun of(codeType: CodeType): <ERROR CLASS>
-
-
-
- -
-
fun of(codeableConcept: CodeableConcept): <ERROR CLASS>
-
-
-
- -
-
fun of(coding: Coding): <ERROR CLASS>
-
-
Returns TokenFilterValue from Coding.
-
- -
-
fun of(contactPoint: ContactPoint): <ERROR CLASS>
-
-
-
- -
-
fun of(identifier: Identifier): <ERROR CLASS>
-
-
-
- -
-
fun of(uriType: UriType): <ERROR CLASS>
-
-
-
-
-
-
-
-

Properties

-
-
-
-
parameter -
Link copied to clipboard
-
-
-
-
var parameter: TokenClientParam
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: TokenFilterValue? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html deleted file mode 100644 index fc2c2359c7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - of - - -
-
- - -
-
-
-
-
-
- -
-

of

-
-
- -
-
fun of(boolean: Boolean): <ERROR CLASS>
-
-

Returns TokenFilterValue from Boolean.

-
- -
-
fun of(string: String): <ERROR CLASS>
-
-

Returns TokenFilterValue from String.

-
- -
-
fun of(uriType: UriType): <ERROR CLASS>
-
-

Returns TokenFilterValue from UriType.

-
- -
-
fun of(codeType: CodeType): <ERROR CLASS>
-
-

Returns TokenFilterValue from CodeType.

-
- -
-
fun of(coding: Coding): <ERROR CLASS>
-
-

Returns TokenFilterValue from Coding.

-
- -
-
fun of(codeableConcept: CodeableConcept): <ERROR CLASS>
-
-

Returns TokenFilterValue from CodeableConcept.

-
- -
-
fun of(identifier: Identifier): <ERROR CLASS>
-
-

Returns TokenFilterValue from Identifier.

-
- -
-
fun of(contactPoint: ContactPoint): <ERROR CLASS>
-
-

Returns TokenFilterValue from ContactPoint.

-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/parameter.html deleted file mode 100644 index 16219e035d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
var parameter: TokenClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/value.html deleted file mode 100644 index 7e6f22f779..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: TokenFilterValue? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/-uri-param-filter-criterion.html b/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/-uri-param-filter-criterion.html deleted file mode 100644 index 087aadc144..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/-uri-param-filter-criterion.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - UriParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

UriParamFilterCriterion

-
-
- -
-
fun UriParamFilterCriterion(parameter: UriClientParam, value: String? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/get-conditional-params.html b/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/get-conditional-params.html deleted file mode 100644 index b6e8fd03a6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/get-conditional-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConditionalParams - - -
-
- - -
-
-
-
-
-
- -
-

getConditionalParams

-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-

Returns ConditionalParams for the particular FilterCriterion.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/index.html deleted file mode 100644 index f7cb2d1c44..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - UriParamFilterCriterion - - -
-
- - -
-
-
-
-
-
- -
-

UriParamFilterCriterion

-
data class UriParamFilterCriterion(parameter: UriClientParam, value: String?) : FilterCriterion

Represents a criterion for filtering UriClientParam. e.g. filter(ValueSet.URL, { value = "https://example.com })

-
-
-
-
-

Constructors

-
-
-
-
UriParamFilterCriterion -
Link copied to clipboard
-
-
-
-
fun UriParamFilterCriterion(parameter: UriClientParam, value: String? = null)
-
-
-
-
-
-

Functions

-
-
-
-
getConditionalParams -
Link copied to clipboard
-
-
-
- -
-
open override fun getConditionalParams(): <ERROR CLASS>
-
-
Returns ConditionalParams for the particular FilterCriterion.
-
-
-
-
-
-

Properties

-
-
-
-
parameter -
Link copied to clipboard
-
-
-
-
val parameter: UriClientParam
-
-
-
-
- -
-
-
value -
Link copied to clipboard
-
-
-
-
var value: String? = null
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/parameter.html b/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/parameter.html deleted file mode 100644 index f133ebcaf7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/parameter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - parameter - - -
-
- - -
-
-
-
-
-
- -
-

parameter

-
-
- -
-
val parameter: UriClientParam
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/value.html b/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/value.html deleted file mode 100644 index df15374e27..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
var value: String? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.filter/index.html b/docs/engine/engine/com.google.android.fhir.search.filter/index.html deleted file mode 100644 index 5ce8cc92d6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.filter/index.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - com.google.android.fhir.search.filter - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.search.filter

-
-
-
-
-

Types

-
-
-
-
DateFilterValues -
Link copied to clipboard
-
-
-
- -
-
class DateFilterValues
-
-
-
-
-
-
- -
-
-
DateParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class DateParamFilterCriterion(parameter: DateClientParam, prefix: ParamPrefixEnum, value: DateFilterValues?) : FilterCriterion
-
-
Represents a criterion for filtering DateClientParam.
-
-
-
-
- -
-
-
NumberParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class NumberParamFilterCriterion(parameter: NumberClientParam, prefix: ParamPrefixEnum?, value: BigDecimal?) : FilterCriterion
-
-
Represents a criterion for filtering NumberClientParam.
-
-
-
-
- -
-
-
QuantityParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class QuantityParamFilterCriterion(parameter: QuantityClientParam, prefix: ParamPrefixEnum?, value: BigDecimal?, system: String?, unit: String?) : FilterCriterion
-
-
Represents a criterion for filtering QuantityClientParam.
-
-
-
-
- -
-
-
ReferenceParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class ReferenceParamFilterCriterion(parameter: ReferenceClientParam, value: String?) : FilterCriterion
-
-
Represents a criterion for filtering ReferenceClientParam.
-
-
-
-
- -
-
-
StringParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class StringParamFilterCriterion(parameter: StringClientParam, modifier: StringFilterModifier, value: String?) : FilterCriterion
-
-
Represents a criterion for filtering StringClientParam.
-
-
-
-
- -
-
-
TokenFilterValue -
Link copied to clipboard
-
-
-
- -
-
class TokenFilterValue
-
-
-
-
-
-
- -
-
-
TokenParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class TokenParamFilterCriterion(parameter: TokenClientParam) : FilterCriterion
-
-
Represents a criterion for filtering TokenClientParam.
-
-
-
-
- -
-
-
UriParamFilterCriterion -
Link copied to clipboard
-
-
-
- -
-
data class UriParamFilterCriterion(parameter: UriClientParam, value: String?) : FilterCriterion
-
-
Represents a criterion for filtering UriClientParam.
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/apply-filter-param.html b/docs/engine/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/apply-filter-param.html deleted file mode 100644 index 494ab0908c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/apply-filter-param.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - applyFilterParam - - -
-
- - -
-
-
-
-
-
- -
-

applyFilterParam

-
-
- -
-
fun Search.applyFilterParam(param: SearchParamDefinition, filterValue: String)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/index.html b/docs/engine/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/index.html deleted file mode 100644 index 0b606fe983..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - XFhirQueryTranslator - - -
-
- - -
-
-
-
-
-
- -
-

XFhirQueryTranslator

-
object XFhirQueryTranslator

Supports translation of x-fhir-query defined in http://build.fhir.org/ig/HL7/sdc/expressions.html#x-fhir-query-enhancements and http://hl7.org/fhir/R4/search.html

-
-
-
-
-

Functions

-
-
-
-
applyFilterParam -
Link copied to clipboard
-
-
-
- -
-
fun Search.applyFilterParam(param: SearchParamDefinition, filterValue: String)
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search.query/index.html b/docs/engine/engine/com.google.android.fhir.search.query/index.html deleted file mode 100644 index 6fb19ab9c7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search.query/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - com.google.android.fhir.search.query - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.search.query

-
-
-
-
-

Types

-
-
-
-
XFhirQueryTranslator -
Link copied to clipboard
-
-
-
- -
-
object XFhirQueryTranslator
-
-
Supports translation of x-fhir-query defined in http://build.fhir.org/ig/HL7/sdc/expressions.html#x-fhir-query-enhancements and http://hl7.org/fhir/R4/search.
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-condition-param/-condition-param.html b/docs/engine/engine/com.google.android.fhir.search/-condition-param/-condition-param.html deleted file mode 100644 index 2a71ece327..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-condition-param/-condition-param.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - ConditionParam - - -
-
- - -
-
-
-
-
-
- -
-

ConditionParam

-
-
- -
-
fun <T> ConditionParam(condition: String, vararg params: T)
fun <T> ConditionParam(condition: String, params: List<T>)
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-condition-param/condition.html b/docs/engine/engine/com.google.android.fhir.search/-condition-param/condition.html deleted file mode 100644 index 96905a7a62..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-condition-param/condition.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - condition - - -
-
- - -
-
-
-
-
-
- -
-

condition

-
-
- -
-
val condition: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-condition-param/index.html b/docs/engine/engine/com.google.android.fhir.search/-condition-param/index.html deleted file mode 100644 index 1d5b624f55..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-condition-param/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - ConditionParam - - -
-
- - -
-
-
-
-
-
- -
-

ConditionParam

-
data class ConditionParam<T>(condition: String, params: List<T>)
-
-
-
-
-

Constructors

-
-
-
-
ConditionParam -
Link copied to clipboard
-
-
-
-
fun <T> ConditionParam(condition: String, vararg params: T)
-
-
-
-
-
-

Properties

-
-
-
-
condition -
Link copied to clipboard
-
-
-
-
val condition: String
-
-
-
-
- -
-
-
params -
Link copied to clipboard
-
-
-
-
val params: List<T>
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-condition-param/params.html b/docs/engine/engine/com.google.android.fhir.search/-condition-param/params.html deleted file mode 100644 index 91fad2eb65..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-condition-param/params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - params - - -
-
- - -
-
-
-
-
-
- -
-

params

-
-
- -
-
val params: List<T>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-operation/-a-n-d/index.html b/docs/engine/engine/com.google.android.fhir.search/-operation/-a-n-d/index.html deleted file mode 100644 index 9119754bce..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-operation/-a-n-d/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - AND - - -
-
- - -
-
-
-
-
-
- -
-

AND

-
AND("AND")
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-operation/-o-r/index.html b/docs/engine/engine/com.google.android.fhir.search/-operation/-o-r/index.html deleted file mode 100644 index bf759e6e0b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-operation/-o-r/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - OR - - -
-
- - -
-
-
-
-
-
- -
-

OR

-
OR("OR")
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-operation/index.html b/docs/engine/engine/com.google.android.fhir.search/-operation/index.html deleted file mode 100644 index 618e425e08..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-operation/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - Operation - - -
-
- - -
-
-
-
-
-
- -
-

Operation

-
enum Operation : Enum<Operation>

Logical operator between the filter values or the filters themselves.

-
-
-
-
-

Entries

-
-
-
-
AND -
Link copied to clipboard
-
-
-
-
AND("AND")
-
-
-
-
- -
-
-
OR -
Link copied to clipboard
-
-
-
-
OR("OR")
-
-
-
-
-
-

Properties

-
-
-
-
logicalOperator -
Link copied to clipboard
-
-
-
-
val logicalOperator: String
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-operation/logical-operator.html b/docs/engine/engine/com.google.android.fhir.search/-operation/logical-operator.html deleted file mode 100644 index 84fb987e0c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-operation/logical-operator.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - logicalOperator - - -
-
- - -
-
-
-
-
-
- -
-

logicalOperator

-
-
- -
-
val logicalOperator: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-order/-a-s-c-e-n-d-i-n-g/index.html b/docs/engine/engine/com.google.android.fhir.search/-order/-a-s-c-e-n-d-i-n-g/index.html deleted file mode 100644 index 5c6f4d9926..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-order/-a-s-c-e-n-d-i-n-g/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - ASCENDING - - -
-
- - -
-
-
-
-
-
- -
-

ASCENDING

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-order/-d-e-s-c-e-n-d-i-n-g/index.html b/docs/engine/engine/com.google.android.fhir.search/-order/-d-e-s-c-e-n-d-i-n-g/index.html deleted file mode 100644 index 13a5032bd1..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-order/-d-e-s-c-e-n-d-i-n-g/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - DESCENDING - - -
-
- - -
-
-
-
-
-
- -
-

DESCENDING

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-order/index.html b/docs/engine/engine/com.google.android.fhir.search/-order/index.html deleted file mode 100644 index 116d4d9895..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-order/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - Order - - -
-
- - -
-
-
-
-
-
- -
-

Order

-
enum Order : Enum<Order>
-
-
-
-
-

Entries

-
-
-
-
DESCENDING -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
-
ASCENDING -
Link copied to clipboard
-
-
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search-query/-search-query.html b/docs/engine/engine/com.google.android.fhir.search/-search-query/-search-query.html deleted file mode 100644 index 5b66580cf7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search-query/-search-query.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - SearchQuery - - -
-
- - -
-
-
-
-
-
- -
-

SearchQuery

-
-
- -
-
fun SearchQuery(query: String, args: List<Any>)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search-query/args.html b/docs/engine/engine/com.google.android.fhir.search/-search-query/args.html deleted file mode 100644 index cffabf14bb..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search-query/args.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - args - - -
-
- - -
-
-
-
-
-
- -
-

args

-
-
- -
-
val args: List<Any>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search-query/index.html b/docs/engine/engine/com.google.android.fhir.search/-search-query/index.html deleted file mode 100644 index 1351cbfc0b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search-query/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - SearchQuery - - -
-
- - -
-
-
-
-
-
- -
-

SearchQuery

-
data class SearchQuery(query: String, args: List<Any>)
-
-
-
-
-

Properties

-
-
-
-
args -
Link copied to clipboard
-
-
-
-
val args: List<Any>
-
-
-
-
- -
-
-
query -
Link copied to clipboard
-
-
-
-
val query: String
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search-query/query.html b/docs/engine/engine/com.google.android.fhir.search/-search-query/query.html deleted file mode 100644 index 29f9350525..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search-query/query.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - query - - -
-
- - -
-
-
-
-
-
- -
-

query

-
-
- -
-
val query: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/-search.html b/docs/engine/engine/com.google.android.fhir.search/-search/-search.html deleted file mode 100644 index 25194d279b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/-search.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Search - - -
-
- - -
-
-
-
-
-
- -
-

Search

-
-
- -
-
fun Search(type: ResourceType, count: Int? = null, from: Int? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/count.html b/docs/engine/engine/com.google.android.fhir.search/-search/count.html deleted file mode 100644 index e04ca5876e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/count.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - count - - -
-
- - -
-
-
-
-
-
- -
-

count

-
-
- -
-
var count: Int? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/filter.html b/docs/engine/engine/com.google.android.fhir.search/-search/filter.html deleted file mode 100644 index e523d598be..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/filter.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - filter - - -
-
- - -
-
-
-
-
-
- -
-

filter

-
-
- -
-
fun filter(stringParameter: StringClientParam, vararg init: StringParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(referenceParameter: ReferenceClientParam, vararg init: ReferenceParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(dateParameter: DateClientParam, vararg init: DateParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(quantityParameter: QuantityClientParam, vararg init: QuantityParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(tokenParameter: TokenClientParam, vararg init: TokenParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(numberParameter: NumberClientParam, vararg init: NumberParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(uriParam: UriClientParam, vararg init: UriParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/from.html b/docs/engine/engine/com.google.android.fhir.search/-search/from.html deleted file mode 100644 index ff98c46e75..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/from.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - from - - -
-
- - -
-
-
-
-
-
- -
-

from

-
-
- -
-
var from: Int? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/index.html b/docs/engine/engine/com.google.android.fhir.search/-search/index.html deleted file mode 100644 index 59c9bb41d6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/index.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - Search - - -
-
- - -
-
-
-
-
-
- -
-

Search

-
data class Search(type: ResourceType, count: Int?, from: Int?)
-
-
-
-
-

Functions

-
-
-
-
filter -
Link copied to clipboard
-
-
-
- -
-
fun filter(dateParameter: DateClientParam, vararg init: DateParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(numberParameter: NumberClientParam, vararg init: NumberParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(quantityParameter: QuantityClientParam, vararg init: QuantityParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(referenceParameter: ReferenceClientParam, vararg init: ReferenceParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(stringParameter: StringClientParam, vararg init: StringParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(tokenParameter: TokenClientParam, vararg init: TokenParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
fun filter(uriParam: UriClientParam, vararg init: UriParamFilterCriterion.() -> Unit, operation: Operation = Operation.OR)
-
-
-
-
-
-
- -
-
-
sort -
Link copied to clipboard
-
-
-
- -
-
fun sort(parameter: DateClientParam, order: Order)
fun sort(parameter: NumberClientParam, order: Order)
fun sort(parameter: StringClientParam, order: Order)
-
-
-
-
-
-
-
-

Properties

-
-
-
-
count -
Link copied to clipboard
-
-
-
-
var count: Int? = null
-
-
-
-
- -
-
-
from -
Link copied to clipboard
-
-
-
-
var from: Int? = null
-
-
-
-
- -
-
-
operation -
Link copied to clipboard
-
-
-
-
var operation: Operation
-
-
-
-
- -
-
-
type -
Link copied to clipboard
-
-
-
-
val type: ResourceType
-
-
-
-
-
-

Extensions

-
-
-
-
applyFilterParam -
Link copied to clipboard
-
-
-
- -
-
fun Search.applyFilterParam(param: SearchParamDefinition, filterValue: String)
-
-
-
-
-
-
- -
-
-
getQuery -
Link copied to clipboard
-
-
-
- -
-
fun Search.getQuery(isCount: Boolean = false): SearchQuery
-
-
-
-
-
-
- -
-
-
has -
Link copied to clipboard
-
-
-
- -
-
inline fun <R : Resource> Search.has(referenceParam: ReferenceClientParam, init: Search.() -> Unit)
-
-
Provides limited support for the reverse chaining on https://www.hl7.org/fhir/search.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/operation.html b/docs/engine/engine/com.google.android.fhir.search/-search/operation.html deleted file mode 100644 index 3be762eff6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/operation.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - operation - - -
-
- - -
-
-
-
-
-
- -
-

operation

-
-
- -
-
var operation: Operation
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/sort.html b/docs/engine/engine/com.google.android.fhir.search/-search/sort.html deleted file mode 100644 index e21d99e02c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/sort.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - sort - - -
-
- - -
-
-
-
-
-
- -
-

sort

-
-
- -
-
fun sort(parameter: StringClientParam, order: Order)
fun sort(parameter: NumberClientParam, order: Order)
fun sort(parameter: DateClientParam, order: Order)
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-search/type.html b/docs/engine/engine/com.google.android.fhir.search/-search/type.html deleted file mode 100644 index 55640c720d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-search/type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - type - - -
-
- - -
-
-
-
-
-
- -
-

type

-
-
- -
-
val type: ResourceType
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-c-o-n-t-a-i-n-s/index.html b/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-c-o-n-t-a-i-n-s/index.html deleted file mode 100644 index f247434ca9..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-c-o-n-t-a-i-n-s/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - CONTAINS - - -
-
- - -
-
-
-
-
-
- -
-

CONTAINS

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-m-a-t-c-h-e-s_-e-x-a-c-t-l-y/index.html b/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-m-a-t-c-h-e-s_-e-x-a-c-t-l-y/index.html deleted file mode 100644 index eab8e6c9e3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-m-a-t-c-h-e-s_-e-x-a-c-t-l-y/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - MATCHES_EXACTLY - - -
-
- - -
-
-
-
-
-
- -
-

MATCHES_EXACTLY

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-s-t-a-r-t-s_-w-i-t-h/index.html b/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-s-t-a-r-t-s_-w-i-t-h/index.html deleted file mode 100644 index 05c5a72195..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/-s-t-a-r-t-s_-w-i-t-h/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - STARTS_WITH - - -
-
- - -
-
-
-
-
-
- -
-

STARTS_WITH

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/index.html b/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/index.html deleted file mode 100644 index 837bf83d0a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/-string-filter-modifier/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - StringFilterModifier - - -
-
- - -
-
-
-
-
-
- -
-

StringFilterModifier

-
enum StringFilterModifier : Enum<StringFilterModifier>
-
-
-
-
-

Entries

-
-
-
-
CONTAINS -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
-
MATCHES_EXACTLY -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
-
STARTS_WITH -
Link copied to clipboard
-
-
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/count.html b/docs/engine/engine/com.google.android.fhir.search/count.html deleted file mode 100644 index c73190cd2c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/count.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - count - - -
-
- - -
-
-
-
-
-
- -
-

count

-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.count(init: Search.() -> Unit): Long
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/get-query.html b/docs/engine/engine/com.google.android.fhir.search/get-query.html deleted file mode 100644 index 500c594a37..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/get-query.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getQuery - - -
-
- - -
-
-
-
-
-
- -
-

getQuery

-
-
- -
-
fun Search.getQuery(isCount: Boolean = false): SearchQuery
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/has.html b/docs/engine/engine/com.google.android.fhir.search/has.html deleted file mode 100644 index 09dda02687..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/has.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - has - - -
-
- - -
-
-
-
-
-
- -
-

has

-
-
- -
-
inline fun <R : Resource> Search.has(referenceParam: ReferenceClientParam, init: Search.() -> Unit)
-
-

Provides limited support for the reverse chaining on https://www.hl7.org/fhir/search.html#has. For example: search all Patient that have Condition - Diabetes. This search uses the subject field in the Condition resource. Code snippet:

    FhirEngine.search<Patient> {
has<Condition>(Condition.SUBJECT) {
filter(Condition.CODE, Coding("http://snomed.info/sct", "44054006", "Diabetes"))
}
}
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/index.html b/docs/engine/engine/com.google.android.fhir.search/index.html deleted file mode 100644 index 29fc7553ed..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/index.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - com.google.android.fhir.search - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.search

-
-
-
-
-

Types

-
-
-
-
ConditionParam -
Link copied to clipboard
-
-
-
- -
-
data class ConditionParam<T>(condition: String, params: List<T>)
-
-
-
-
-
-
- -
-
-
Operation -
Link copied to clipboard
-
-
-
- -
-
enum Operation : Enum<Operation>
-
-
Logical operator between the filter values or the filters themselves.
-
-
-
-
- -
-
-
Order -
Link copied to clipboard
-
-
-
- -
-
enum Order : Enum<Order>
-
-
-
-
-
-
- -
-
-
Search -
Link copied to clipboard
-
-
-
- -
-
data class Search(type: ResourceType, count: Int?, from: Int?)
-
-
-
-
-
-
- -
-
-
SearchQuery -
Link copied to clipboard
-
-
-
- -
-
data class SearchQuery(query: String, args: List<Any>)
-
-
-
-
-
-
- -
-
-
StringFilterModifier -
Link copied to clipboard
-
-
-
- -
-
enum StringFilterModifier : Enum<StringFilterModifier>
-
-
-
-
-
-
-
-

Functions

-
-
-
-
count -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.count(init: Search.() -> Unit): Long
-
-
-
-
-
-
- -
-
-
getQuery -
Link copied to clipboard
-
-
-
- -
-
fun Search.getQuery(isCount: Boolean = false): SearchQuery
-
-
-
-
-
-
- -
-
-
has -
Link copied to clipboard
-
-
-
- -
-
inline fun <R : Resource> Search.has(referenceParam: ReferenceClientParam, init: Search.() -> Unit)
-
-
Provides limited support for the reverse chaining on https://www.hl7.org/fhir/search.
-
-
-
-
- -
-
-
search -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.search(init: Search.() -> Unit): List<R>
suspend fun FhirEngine.search(xFhirQuery: String): List<Resource>
-
-
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.search/search.html b/docs/engine/engine/com.google.android.fhir.search/search.html deleted file mode 100644 index 8f38ad29b7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.search/search.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - search - - -
-
- - -
-
-
-
-
-
- -
-

search

-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.search(init: Search.() -> Unit): List<R>
suspend fun FhirEngine.search(xFhirQuery: String): List<Resource>
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/-resource-params-based-download-work-manager.html b/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/-resource-params-based-download-work-manager.html deleted file mode 100644 index e18f248a7a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/-resource-params-based-download-work-manager.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ResourceParamsBasedDownloadWorkManager - - -
-
- - -
-
-
-
-
-
- -
-

ResourceParamsBasedDownloadWorkManager

-
-
- -
-
fun ResourceParamsBasedDownloadWorkManager(syncParams: ResourceSearchParams)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/get-next-request-url.html b/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/get-next-request-url.html deleted file mode 100644 index ca35d1bc9d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/get-next-request-url.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getNextRequestUrl - - -
-
- - -
-
-
-
-
-
- -
-

getNextRequestUrl

-
-
- -
-
open suspend override fun getNextRequestUrl(context: SyncDownloadContext): String?
-
-

Returns the URL for the next download request, or null if there is no more download request to be issued.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/index.html b/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/index.html deleted file mode 100644 index 36dc9c3563..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/index.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - ResourceParamsBasedDownloadWorkManager - - -
-
- - -
-
-
-
-
-
- -
-

ResourceParamsBasedDownloadWorkManager

-

DownloadWorkManager implementation based on the provided ResourceSearchParams to generate Resource search queries and parse Bundle.BundleType.SEARCHSET type Bundle. This implementation takes a DFS approach and downloads all available resources for a particular ResourceType before moving on to the next ResourceType.

-
-
-
-
-

Constructors

-
-
-
-
ResourceParamsBasedDownloadWorkManager -
Link copied to clipboard
-
-
-
-
fun ResourceParamsBasedDownloadWorkManager(syncParams: ResourceSearchParams)
-
-
-
-
-
-

Functions

-
-
-
-
getNextRequestUrl -
Link copied to clipboard
-
-
-
- -
-
open suspend override fun getNextRequestUrl(context: SyncDownloadContext): String?
-
-
Returns the URL for the next download request, or null if there is no more download request to be issued.
-
-
-
-
- -
-
-
processResponse -
Link copied to clipboard
-
-
-
- -
-
open suspend override fun processResponse(response: Resource): Collection<Resource>
-
-
Processes the download response and returns the resources to be saved to the local database.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/process-response.html b/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/process-response.html deleted file mode 100644 index 3162208b24..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/process-response.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - processResponse - - -
-
- - -
-
-
-
-
-
- -
-

processResponse

-
-
- -
-
open suspend override fun processResponse(response: Resource): Collection<Resource>
-
-

Processes the download response and returns the resources to be saved to the local database.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.download/index.html b/docs/engine/engine/com.google.android.fhir.sync.download/index.html deleted file mode 100644 index 67e6612af7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.download/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - com.google.android.fhir.sync.download - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.sync.download

-
-
-
-
-

Types

-
-
-
-
ResourceParamsBasedDownloadWorkManager -
Link copied to clipboard
-
-
-
- -
- -
-
DownloadWorkManager implementation based on the provided ResourceSearchParams to generate Resource search queries and parse Bundle.BundleType.SEARCHSET type Bundle.
-
-
-
-
- -
-
-
ResourceSearchParams -
Link copied to clipboard
-
-
-
- -
-
typealias ResourceSearchParams = Map<ResourceType, ParamMap>
-
-
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/-n-o-n-e.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/-n-o-n-e.html deleted file mode 100644 index e019c29700..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/-n-o-n-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - NONE - - -
-
- - -
-
-
-
-
-
- -
-

NONE

-
-
- -
-
val NONE: HttpLogger
-
-

The logger will not log any data.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/index.html deleted file mode 100644 index cab3467d6a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - Companion - - -
-
- - -
-
-
-
-
-
- -
-

Companion

-
object Companion
-
-
-
-
-

Properties

-
-
-
-
NONE -
Link copied to clipboard
-
-
-
-
val NONE: HttpLogger
The logger will not log any data.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/-configuration.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/-configuration.html deleted file mode 100644 index 8c8cfb91cd..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Configuration - - -
-
- - -
-
-
-
-
-
- -
-

Configuration

-
-
- -
-
fun Configuration(level: HttpLogger.Level, headersToIgnore: List<String>? = null)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/headers-to-ignore.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/headers-to-ignore.html deleted file mode 100644 index 053398979b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/headers-to-ignore.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - headersToIgnore - - -
-
- - -
-
-
-
-
-
- -
-

headersToIgnore

-
-
- -
-
val headersToIgnore: List<String>? = null
-
-

Http headers to be ignored for the logging purpose.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/index.html deleted file mode 100644 index c4c7107571..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - Configuration - - -
-
- - -
-
-
-
-
-
- -
-

Configuration

-
data class Configuration(level: HttpLogger.Level, headersToIgnore: List<String>?)
-
-
-
-
-

Properties

-
-
-
-
headersToIgnore -
Link copied to clipboard
-
-
-
-
val headersToIgnore: List<String>? = null
Http headers to be ignored for the logging purpose.
-
-
-
-
- -
-
-
level -
Link copied to clipboard
-
-
-
-
val level: HttpLogger.Level
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/level.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/level.html deleted file mode 100644 index 02886479c2..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/level.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - level - - -
-
- - -
-
-
-
-
-
- -
-

level

-
-
- -
-
val level: HttpLogger.Level
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-http-logger.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-http-logger.html deleted file mode 100644 index 319a92e75b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-http-logger.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - HttpLogger - - -
-
- - -
-
-
-
-
-
- -
-

HttpLogger

-
-
- -
-
fun HttpLogger(configuration: HttpLogger.Configuration, @WorkerThread() log: (String) -> Unit)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-a-s-i-c/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-a-s-i-c/index.html deleted file mode 100644 index 470d5d653b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-a-s-i-c/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - BASIC - - -
-
- - -
-
-
-
-
-
- -
-

BASIC

-

Request and response lines will be logged.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-o-d-y/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-o-d-y/index.html deleted file mode 100644 index d046a9002e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-o-d-y/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - BODY - - -
-
- - -
-
-
-
-
-
- -
-

BODY

-

Lines, headers and body (if present) will be logged for the request and response.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-h-e-a-d-e-r-s/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-h-e-a-d-e-r-s/index.html deleted file mode 100644 index 034c22090c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-h-e-a-d-e-r-s/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - HEADERS - - -
-
- - -
-
-
-
-
-
- -
-

HEADERS

-

Lines along with the headers will be logged for the request and response.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-n-o-n-e/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-n-o-n-e/index.html deleted file mode 100644 index f064934ba7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-n-o-n-e/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - NONE - - -
-
- - -
-
-
-
-
-
- -
-

NONE

-

Nothing will be logged.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/index.html deleted file mode 100644 index 5c57131f9a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/-level/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - Level - - -
-
- - -
-
-
-
-
-
- -
-

Level

-
enum Level : Enum<HttpLogger.Level>

Different levels to specify the content to be logged.

-
-
-
-
-

Entries

-
-
-
-
BODY -
Link copied to clipboard
-
-
-
-
Lines, headers and body (if present) will be logged for the request and response.
-
-
-
-
- -
-
-
HEADERS -
Link copied to clipboard
-
-
-
-
Lines along with the headers will be logged for the request and response.
-
-
-
-
- -
-
-
BASIC -
Link copied to clipboard
-
-
-
-
Request and response lines will be logged.
-
-
-
-
- -
-
-
NONE -
Link copied to clipboard
-
-
-
-
Nothing will be logged.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/configuration.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/configuration.html deleted file mode 100644 index c264d96652..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - configuration - - -
-
- - -
-
-
-
-
-
- -
-

configuration

-
-
- -
-
val configuration: HttpLogger.Configuration
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/index.html deleted file mode 100644 index 4f887f0180..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/index.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - HttpLogger - - -
-
- - -
-
-
-
-
-
- -
-

HttpLogger

-
class HttpLogger(configuration: HttpLogger.Configuration, @WorkerThread() log: (String) -> Unit)

Logger for the network communication between the engine and the remote server

-
-
-
-
-

Constructors

-
-
-
-
HttpLogger -
Link copied to clipboard
-
-
-
-
fun HttpLogger(configuration: HttpLogger.Configuration, @WorkerThread() log: (String) -> Unit)
-
-
-
-
-
-

Types

-
-
-
-
Companion -
Link copied to clipboard
-
-
-
- -
-
object Companion
-
-
-
-
-
-
- -
-
-
Configuration -
Link copied to clipboard
-
-
-
- -
-
data class Configuration(level: HttpLogger.Level, headersToIgnore: List<String>?)
-
-
-
-
-
-
- -
-
-
Level -
Link copied to clipboard
-
-
-
- -
-
enum Level : Enum<HttpLogger.Level>
-
-
Different levels to specify the content to be logged.
-
-
-
-
-
-

Properties

-
-
-
-
configuration -
Link copied to clipboard
-
-
-
-
val configuration: HttpLogger.Configuration
-
-
-
-
- -
-
-
log -
Link copied to clipboard
-
-
-
-
val log: (String) -> Unit
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/log.html b/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/log.html deleted file mode 100644 index 646945c158..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/-http-logger/log.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - log - - -
-
- - -
-
-
-
-
-
- -
-

log

-
-
- -
-
val log: (String) -> Unit
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.remote/index.html b/docs/engine/engine/com.google.android.fhir.sync.remote/index.html deleted file mode 100644 index d00974fe42..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.remote/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - com.google.android.fhir.sync.remote - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.sync.remote

-
-
-
-
-

Types

-
-
-
-
HttpLogger -
Link copied to clipboard
-
-
-
- -
-
class HttpLogger(configuration: HttpLogger.Configuration, @WorkerThread() log: (String) -> Unit)
-
-
Logger for the network communication between the engine and the remote server
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync.upload.html b/docs/engine/engine/com.google.android.fhir.sync.upload.html deleted file mode 100644 index 34ab477d61..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync.upload.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - com.google.android.fhir.sync.upload - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.sync.upload

-
-
-
-
-

Types

-
-
-
-
ResourceBundleAndAssociatedLocalChangeTokens -
Link copied to clipboard
-
-
-
- -
- -
-
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-accept-local-conflict-resolver.html b/docs/engine/engine/com.google.android.fhir.sync/-accept-local-conflict-resolver.html deleted file mode 100644 index 3d9c789ad4..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-accept-local-conflict-resolver.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - AcceptLocalConflictResolver - - -
-
- - -
-
-
-
-
-
- -
-

AcceptLocalConflictResolver

-
-
- -
-
val AcceptLocalConflictResolver: ConflictResolver
-
-

Accepts the local change and rejects the remote change.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-accept-remote-conflict-resolver.html b/docs/engine/engine/com.google.android.fhir.sync/-accept-remote-conflict-resolver.html deleted file mode 100644 index bd592e7814..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-accept-remote-conflict-resolver.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - AcceptRemoteConflictResolver - - -
-
- - -
-
-
-
-
-
- -
-

AcceptRemoteConflictResolver

-
-
- -
-
val AcceptRemoteConflictResolver: ConflictResolver
-
-

Accepts the remote change and rejects the local change.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-authenticator/get-access-token.html b/docs/engine/engine/com.google.android.fhir.sync/-authenticator/get-access-token.html deleted file mode 100644 index be7c5cbd82..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-authenticator/get-access-token.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getAccessToken - - -
-
- - -
-
-
-
-
-
- -
-

getAccessToken

-
-
- -
-
abstract fun getAccessToken(): String
-
-

Return

Access token for the engine to make requests on user's behalf.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-authenticator/index.html b/docs/engine/engine/com.google.android.fhir.sync/-authenticator/index.html deleted file mode 100644 index e9f2265a46..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-authenticator/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - Authenticator - - -
-
- - -
-
-
-
-
-
- -
-

Authenticator

-
interface Authenticator

FhirEngine depends on the developer app to handle user's authentication. The developer application may provide the implementation during the FhirEngine initial setup to obtain authToken to the engine for successful calls.

-
-
-
-
-

Functions

-
-
-
-
getAccessToken -
Link copied to clipboard
-
-
-
- -
-
abstract fun getAccessToken(): String
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/-backoff-criteria.html b/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/-backoff-criteria.html deleted file mode 100644 index b4ada4eb40..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/-backoff-criteria.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - BackoffCriteria - - -
-
- - -
-
-
-
-
-
- -
-

BackoffCriteria

-
-
- -
-
fun BackoffCriteria(backoffPolicy: BackoffPolicy, backoffDelay: Long, timeUnit: TimeUnit)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-delay.html b/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-delay.html deleted file mode 100644 index 27fb006af1..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-delay.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - backoffDelay - - -
-
- - -
-
-
-
-
-
- -
-

backoffDelay

-
-
- -
-
val backoffDelay: Long
-
-

Backoff delay for each retry attempt. Check androidx.work.PeriodicWorkRequest.MIN_BACKOFF_MILLIS and androidx.work.PeriodicWorkRequest.MAX_BACKOFF_MILLIS for the min-max supported values

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-policy.html b/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-policy.html deleted file mode 100644 index 7cc7ab663a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-policy.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - backoffPolicy - - -
-
- - -
-
-
-
-
-
- -
-

backoffPolicy

-
-
- -
-
val backoffPolicy: BackoffPolicy
-
-

Backoff policy androidx.work.BackoffPolicy

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/index.html b/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/index.html deleted file mode 100644 index 50d6c53ba0..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - BackoffCriteria - - -
-
- - -
-
-
-
-
-
- -
-

BackoffCriteria

-
data class BackoffCriteria(backoffPolicy: BackoffPolicy, backoffDelay: Long, timeUnit: TimeUnit)

The criteria for FhirSyncWorker failure retry based on androidx.work.WorkRequest.Builder.setBackoffCriteria

-
-
-
-
-

Constructors

-
-
-
-
BackoffCriteria -
Link copied to clipboard
-
-
-
-
fun BackoffCriteria(backoffPolicy: BackoffPolicy, backoffDelay: Long, timeUnit: TimeUnit)
-
-
-
-
-
-

Properties

-
-
-
-
backoffDelay -
Link copied to clipboard
-
-
-
-
val backoffDelay: Long
Backoff delay for each retry attempt.
-
-
-
-
- -
-
-
backoffPolicy -
Link copied to clipboard
-
-
-
-
val backoffPolicy: BackoffPolicy
-
-
-
-
- -
-
-
timeUnit -
Link copied to clipboard
-
-
-
-
val timeUnit: TimeUnit
The time unit for backoffDelay
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/time-unit.html b/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/time-unit.html deleted file mode 100644 index 933e98bdd5..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-backoff-criteria/time-unit.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - timeUnit - - -
-
- - -
-
-
-
-
-
- -
-

timeUnit

-
-
- -
-
val timeUnit: TimeUnit
-
-

The time unit for backoffDelay

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolution-result/index.html b/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolution-result/index.html deleted file mode 100644 index 503852b43f..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolution-result/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - ConflictResolutionResult - - -
-
- - -
-
-
-
-
-
- -
-

ConflictResolutionResult

-
sealed class ConflictResolutionResult

Contains the result of the conflict resolution. For now, Resolved is the only acceptable result and the expectation is that the client will resolve each and every conflict in-flight that may arise during the sync process. There is no way for the client application to abort or defer the conflict resolution to a later time.

-
-
-
-
-

Inheritors

-
-
-
-
Resolved -
Link copied to clipboard
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolver/index.html b/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolver/index.html deleted file mode 100644 index aac502ec90..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolver/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - ConflictResolver - - -
-
- - -
-
-
-
-
-
- -
-

ConflictResolver

-
fun fun interface ConflictResolver

Resolves conflicts between the client and remote changes in a Resource.

-
-
-
-
-

Functions

-
-
-
-
resolve -
Link copied to clipboard
-
-
-
- -
-
abstract fun resolve(local: Resource, remote: Resource): ConflictResolutionResult
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolver/resolve.html b/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolver/resolve.html deleted file mode 100644 index 93fc8ae0c8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-conflict-resolver/resolve.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resolve - - -
-
- - -
-
-
-
-
-
- -
-

resolve

-
-
- -
-
abstract fun resolve(local: Resource, remote: Resource): ConflictResolutionResult
-
-

Parameters

local

The modified resource on the client.

remote

The latest version of the resource downloaded from the remote server.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-d-e-f-a-u-l-t_-b-u-n-d-l-e_-s-i-z-e.html b/docs/engine/engine/com.google.android.fhir.sync/-d-e-f-a-u-l-t_-b-u-n-d-l-e_-s-i-z-e.html deleted file mode 100644 index 448e9ae6da..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-d-e-f-a-u-l-t_-b-u-n-d-l-e_-s-i-z-e.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - DEFAULT_BUNDLE_SIZE - - -
-
- - -
-
-
-
-
-
- -
-

DEFAULT_BUNDLE_SIZE

-
-
- -
-
const val DEFAULT_BUNDLE_SIZE: Int = 500
-
-

Constant for the default number of resource entries in a singe Bundle for upload.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/get-next-request-url.html b/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/get-next-request-url.html deleted file mode 100644 index 7a416cf675..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/get-next-request-url.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getNextRequestUrl - - -
-
- - -
-
-
-
-
-
- -
-

getNextRequestUrl

-
-
- -
-
abstract suspend fun getNextRequestUrl(context: SyncDownloadContext): String?
-
-

Returns the URL for the next download request, or null if there is no more download request to be issued.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/index.html b/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/index.html deleted file mode 100644 index 1804e53a04..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - DownloadWorkManager - - -
-
- - -
-
-
-
-
-
- -
-

DownloadWorkManager

-
interface DownloadWorkManager

Manager that generates the FHIR requests and handles the FHIR responses of a download job.

TODO(jingtang10): What happens after the end of a download job. Should a new download work manager be created or should there be an API to restart a new download job.

-
-
-
-
-

Functions

-
-
-
-
getNextRequestUrl -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun getNextRequestUrl(context: SyncDownloadContext): String?
-
-
Returns the URL for the next download request, or null if there is no more download request to be issued.
-
-
-
-
- -
-
-
processResponse -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun processResponse(response: Resource): Collection<Resource>
-
-
Processes the download response and returns the resources to be saved to the local database.
-
-
-
-
-
-

Inheritors

-
-
-
-
ResourceParamsBasedDownloadWorkManager -
Link copied to clipboard
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/process-response.html b/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/process-response.html deleted file mode 100644 index 5876fb9a20..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-download-work-manager/process-response.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - processResponse - - -
-
- - -
-
-
-
-
-
- -
-

processResponse

-
-
- -
-
abstract suspend fun processResponse(response: Resource): Collection<Resource>
-
-

Processes the download response and returns the resources to be saved to the local database.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/-fhir-sync-worker.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/-fhir-sync-worker.html deleted file mode 100644 index 5830ff3afb..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/-fhir-sync-worker.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - FhirSyncWorker - - -
-
- - -
-
-
-
-
-
- -
-

FhirSyncWorker

-
-
- -
-
fun FhirSyncWorker(appContext: Context, workerParams: WorkerParameters)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/do-work.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/do-work.html deleted file mode 100644 index 18364705a3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/do-work.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - doWork - - -
-
- - -
-
-
-
-
-
- -
-

doWork

-
-
- -
-
open suspend override fun doWork(): ListenableWorker.Result
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-conflict-resolver.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-conflict-resolver.html deleted file mode 100644 index 7ae5a47d74..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-conflict-resolver.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getConflictResolver - - -
-
- - -
-
-
-
-
-
- -
-

getConflictResolver

-
-
- -
-
abstract fun getConflictResolver(): ConflictResolver
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-download-work-manager.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-download-work-manager.html deleted file mode 100644 index 9d0b92a3df..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-download-work-manager.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getDownloadWorkManager - - -
-
- - -
-
-
-
-
-
- -
-

getDownloadWorkManager

-
-
- -
-
abstract fun getDownloadWorkManager(): DownloadWorkManager
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-fhir-engine.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-fhir-engine.html deleted file mode 100644 index 08ed9f2bf0..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-fhir-engine.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getFhirEngine - - -
-
- - -
-
-
-
-
-
- -
-

getFhirEngine

-
-
- -
-
abstract fun getFhirEngine(): FhirEngine
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-upload-configuration.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-upload-configuration.html deleted file mode 100644 index b90c467cb6..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-upload-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getUploadConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

getUploadConfiguration

-
-
- -
-
open fun getUploadConfiguration(): UploadConfiguration
-
-

Configuration defining the max upload Bundle size (in terms to number of resources in a Bundle) and optionally defining the order of Resources.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/index.html b/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/index.html deleted file mode 100644 index e0fb96d41f..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-fhir-sync-worker/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - FhirSyncWorker - - -
-
- - -
-
-
-
-
-
- -
-

FhirSyncWorker

-
abstract class FhirSyncWorker(appContext: Context, workerParams: WorkerParameters) : CoroutineWorker

A WorkManager Worker that handles periodic sync.

-
-
-
-
-

Constructors

-
-
-
-
FhirSyncWorker -
Link copied to clipboard
-
-
-
-
fun FhirSyncWorker(appContext: Context, workerParams: WorkerParameters)
-
-
-
-
-
-

Functions

-
-
-
-
doWork -
Link copied to clipboard
-
-
-
- -
-
open suspend override fun doWork(): ListenableWorker.Result
-
-
-
-
-
-
- -
-
-
getConflictResolver -
Link copied to clipboard
-
-
-
- -
-
abstract fun getConflictResolver(): ConflictResolver
-
-
-
-
-
-
- -
-
-
getDownloadWorkManager -
Link copied to clipboard
-
-
-
- -
-
abstract fun getDownloadWorkManager(): DownloadWorkManager
-
-
-
-
-
-
- -
-
-
getFhirEngine -
Link copied to clipboard
-
-
-
- -
-
abstract fun getFhirEngine(): FhirEngine
-
-
-
-
-
-
- -
-
-
getUploadConfiguration -
Link copied to clipboard
-
-
-
- -
-
open fun getUploadConfiguration(): UploadConfiguration
-
-
Configuration defining the max upload Bundle size (in terms to number of resources in a Bundle) and optionally defining the order of Resources.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/-periodic-sync-configuration.html b/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/-periodic-sync-configuration.html deleted file mode 100644 index bc5448ba18..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/-periodic-sync-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - PeriodicSyncConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

PeriodicSyncConfiguration

-
-
- -
-
fun PeriodicSyncConfiguration(syncConstraints: Constraints = Constraints.Builder().build(), repeat: RepeatInterval, retryConfiguration: RetryConfiguration? = defaultRetryConfiguration)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/index.html b/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/index.html deleted file mode 100644 index 23237a6627..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - PeriodicSyncConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

PeriodicSyncConfiguration

-
class PeriodicSyncConfiguration(syncConstraints: Constraints, repeat: RepeatInterval, retryConfiguration: RetryConfiguration?)

Configuration for period synchronisation

-
-
-
-
-

Constructors

-
-
-
-
PeriodicSyncConfiguration -
Link copied to clipboard
-
-
-
-
fun PeriodicSyncConfiguration(syncConstraints: Constraints = Constraints.Builder().build(), repeat: RepeatInterval, retryConfiguration: RetryConfiguration? = defaultRetryConfiguration)
-
-
-
-
-
-

Properties

-
-
-
-
repeat -
Link copied to clipboard
-
-
-
-
val repeat: RepeatInterval
The interval at which the sync should be triggered in.
-
-
-
-
- -
-
-
retryConfiguration -
Link copied to clipboard
-
-
-
-
val retryConfiguration: RetryConfiguration?
Configuration for synchronization retry
-
-
-
-
- -
-
-
syncConstraints -
Link copied to clipboard
-
-
-
-
val syncConstraints: Constraints
Constraints that specify the requirements needed before the synchronisation is triggered.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/repeat.html b/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/repeat.html deleted file mode 100644 index 72349c9670..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/repeat.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - repeat - - -
-
- - -
-
-
-
-
-
- -
-

repeat

-
-
- -
-
val repeat: RepeatInterval
-
-

The interval at which the sync should be triggered in. It must be greater than or equal to androidx.work.PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/retry-configuration.html b/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/retry-configuration.html deleted file mode 100644 index 4c899c4139..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/retry-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - retryConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

retryConfiguration

-
-
- -
-
val retryConfiguration: RetryConfiguration?
-
-

Configuration for synchronization retry

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/sync-constraints.html b/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/sync-constraints.html deleted file mode 100644 index 8d4dcc275c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-periodic-sync-configuration/sync-constraints.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - syncConstraints - - -
-
- - -
-
-
-
-
-
- -
-

syncConstraints

-
-
- -
-
val syncConstraints: Constraints
-
-

Constraints that specify the requirements needed before the synchronisation is triggered. E.g. network type (WiFi, 3G etc), the device should be charging etc.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/-repeat-interval.html b/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/-repeat-interval.html deleted file mode 100644 index ce64d3c23f..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/-repeat-interval.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - RepeatInterval - - -
-
- - -
-
-
-
-
-
- -
-

RepeatInterval

-
-
- -
-
fun RepeatInterval(interval: Long, timeUnit: TimeUnit)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/index.html b/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/index.html deleted file mode 100644 index 54a48f2315..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - RepeatInterval - - -
-
- - -
-
-
-
-
-
- -
-

RepeatInterval

-
data class RepeatInterval(interval: Long, timeUnit: TimeUnit)
-
-
-
-
-

Properties

-
-
-
-
interval -
Link copied to clipboard
-
-
-
-
val interval: Long
The interval at which the sync should be triggered in
-
-
-
-
- -
-
-
timeUnit -
Link copied to clipboard
-
-
-
-
val timeUnit: TimeUnit
The time unit for the repeat interval
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/interval.html b/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/interval.html deleted file mode 100644 index e855881287..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/interval.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - interval - - -
-
- - -
-
-
-
-
-
- -
-

interval

-
-
- -
-
val interval: Long
-
-

The interval at which the sync should be triggered in

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/time-unit.html b/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/time-unit.html deleted file mode 100644 index 07ddb7877b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-repeat-interval/time-unit.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - timeUnit - - -
-
- - -
-
-
-
-
-
- -
-

timeUnit

-
-
- -
-
val timeUnit: TimeUnit
-
-

The time unit for the repeat interval

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resolved/-resolved.html b/docs/engine/engine/com.google.android.fhir.sync/-resolved/-resolved.html deleted file mode 100644 index b14a943563..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resolved/-resolved.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Resolved - - -
-
- - -
-
-
-
-
-
- -
-

Resolved

-
-
- -
-
fun Resolved(resolved: Resource)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resolved/index.html b/docs/engine/engine/com.google.android.fhir.sync/-resolved/index.html deleted file mode 100644 index 8672c0009d..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resolved/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - Resolved - - -
-
- - -
-
-
-
-
-
- -
-

Resolved

-
data class Resolved(resolved: Resource) : ConflictResolutionResult
-
-
-
-
-

Properties

-
-
-
-
resolved -
Link copied to clipboard
-
-
-
-
val resolved: Resource
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resolved/resolved.html b/docs/engine/engine/com.google.android.fhir.sync/-resolved/resolved.html deleted file mode 100644 index 5ce3bbe24f..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resolved/resolved.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resolved - - -
-
- - -
-
-
-
-
-
- -
-

resolved

-
-
- -
-
val resolved: Resource
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/-resource-sync-exception.html b/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/-resource-sync-exception.html deleted file mode 100644 index b066eec29e..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/-resource-sync-exception.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ResourceSyncException - - -
-
- - -
-
-
-
-
-
- -
-

ResourceSyncException

-
-
- -
-
fun ResourceSyncException(resourceType: ResourceType, exception: Exception)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/exception.html b/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/exception.html deleted file mode 100644 index 3a329879dc..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/exception.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - exception - - -
-
- - -
-
-
-
-
-
- -
-

exception

-
-
- -
-
val exception: Exception
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/index.html b/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/index.html deleted file mode 100644 index 77f072ac22..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - ResourceSyncException - - -
-
- - -
-
-
-
-
-
- -
-

ResourceSyncException

-
data class ResourceSyncException(resourceType: ResourceType, exception: Exception)
-
-
-
-
-

Properties

-
-
-
-
exception -
Link copied to clipboard
-
-
-
-
val exception: Exception
-
-
-
-
- -
-
-
resourceType -
Link copied to clipboard
-
-
-
-
val resourceType: ResourceType
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/resource-type.html b/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/resource-type.html deleted file mode 100644 index 97fefafb49..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-resource-sync-exception/resource-type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resourceType - - -
-
- - -
-
-
-
-
-
- -
-

resourceType

-
-
- -
-
val resourceType: ResourceType
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/-retry-configuration.html b/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/-retry-configuration.html deleted file mode 100644 index d03d534874..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/-retry-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - RetryConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

RetryConfiguration

-
-
- -
-
fun RetryConfiguration(backoffCriteria: BackoffCriteria, maxRetries: Int)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/backoff-criteria.html b/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/backoff-criteria.html deleted file mode 100644 index 4049963645..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/backoff-criteria.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - backoffCriteria - - -
-
- - -
-
-
-
-
-
- -
-

backoffCriteria

-
-
- -
-
val backoffCriteria: BackoffCriteria
-
-

The criteria to retry failed synchronization work based on androidx.work.WorkRequest.Builder.setBackoffCriteria

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/index.html b/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/index.html deleted file mode 100644 index 8b9aff85bb..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - RetryConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

RetryConfiguration

-
data class RetryConfiguration(backoffCriteria: BackoffCriteria, maxRetries: Int)

Configuration for synchronization retry

-
-
-
-
-

Constructors

-
-
-
-
RetryConfiguration -
Link copied to clipboard
-
-
-
-
fun RetryConfiguration(backoffCriteria: BackoffCriteria, maxRetries: Int)
-
-
-
-
-
-

Properties

-
-
-
-
backoffCriteria -
Link copied to clipboard
-
-
-
-
val backoffCriteria: BackoffCriteria
The criteria to retry failed synchronization work based on androidx.work.WorkRequest.Builder.setBackoffCriteria
-
-
-
-
- -
-
-
maxRetries -
Link copied to clipboard
-
-
-
-
val maxRetries: Int
Maximum retries for a failing FhirSyncWorker
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/max-retries.html b/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/max-retries.html deleted file mode 100644 index 96610abc86..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-retry-configuration/max-retries.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - maxRetries - - -
-
- - -
-
-
-
-
-
- -
-

maxRetries

-
-
- -
-
val maxRetries: Int
-
-

Maximum retries for a failing FhirSyncWorker

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-a-d-d-r-e-s-s_-c-o-u-n-t-r-y_-k-e-y.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-a-d-d-r-e-s-s_-c-o-u-n-t-r-y_-k-e-y.html deleted file mode 100644 index f41f42b597..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-a-d-d-r-e-s-s_-c-o-u-n-t-r-y_-k-e-y.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ADDRESS_COUNTRY_KEY - - -
-
- - -
-
-
-
-
-
- -
-

ADDRESS_COUNTRY_KEY

-
-
- -
-
const val ADDRESS_COUNTRY_KEY: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-l-a-s-t_-u-p-d-a-t-e-d_-k-e-y.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-l-a-s-t_-u-p-d-a-t-e-d_-k-e-y.html deleted file mode 100644 index d72a99db55..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-l-a-s-t_-u-p-d-a-t-e-d_-k-e-y.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - LAST_UPDATED_KEY - - -
-
- - -
-
-
-
-
-
- -
-

LAST_UPDATED_KEY

-
-
- -
-
const val LAST_UPDATED_KEY: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-s-o-r-t_-k-e-y.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-s-o-r-t_-k-e-y.html deleted file mode 100644 index cd9257e215..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/-s-o-r-t_-k-e-y.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - SORT_KEY - - -
-
- - -
-
-
-
-
-
- -
-

SORT_KEY

-
-
- -
-
const val SORT_KEY: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/index.html deleted file mode 100644 index e8fc4d4b54..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-data-params/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - SyncDataParams - - -
-
- - -
-
-
-
-
-
- -
-

SyncDataParams

-
object SyncDataParams
-
-
-
-
-

Properties

-
-
-
-
ADDRESS_COUNTRY_KEY -
Link copied to clipboard
-
-
-
-
const val ADDRESS_COUNTRY_KEY: String
-
-
-
-
- -
-
-
LAST_UPDATED_KEY -
Link copied to clipboard
-
-
-
-
const val LAST_UPDATED_KEY: String
-
-
-
-
- -
-
-
SORT_KEY -
Link copied to clipboard
-
-
-
-
const val SORT_KEY: String
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/-failed.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/-failed.html deleted file mode 100644 index a739d90512..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/-failed.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Failed - - -
-
- - -
-
-
-
-
-
- -
-

Failed

-
-
- -
-
fun Failed(exceptions: List<ResourceSyncException>)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/exceptions.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/exceptions.html deleted file mode 100644 index 81eab59218..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/exceptions.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - exceptions - - -
-
- - -
-
-
-
-
-
- -
-

exceptions

-
-
- -
-
val exceptions: List<ResourceSyncException>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/index.html deleted file mode 100644 index 4360b55e3a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-failed/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - Failed - - -
-
- - -
-
-
-
-
-
- -
-

Failed

-
data class Failed(exceptions: List<ResourceSyncException>) : SyncJobStatus

Sync job failed.

-
-
-
-
-

Constructors

-
-
-
-
Failed -
Link copied to clipboard
-
-
-
-
fun Failed(exceptions: List<ResourceSyncException>)
-
-
-
-
-
-

Properties

-
-
-
-
exceptions -
Link copied to clipboard
-
-
-
-
val exceptions: List<ResourceSyncException>
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-finished/-finished.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-finished/-finished.html deleted file mode 100644 index aa6fdc9bdd..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-finished/-finished.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Finished - - -
-
- - -
-
-
-
-
-
- -
-

Finished

-
-
- -
-
fun Finished()
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-finished/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-finished/index.html deleted file mode 100644 index d203a3409b..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-finished/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - Finished - - -
-
- - -
-
-
-
-
-
- -
-

Finished

-
class Finished : SyncJobStatus

Sync job finished successfully.

-
-
-
-
-

Constructors

-
-
-
-
Finished -
Link copied to clipboard
-
-
-
-
fun Finished()
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/-glitch.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/-glitch.html deleted file mode 100644 index 54c621d277..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/-glitch.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Glitch - - -
-
- - -
-
-
-
-
-
- -
-

Glitch

-
-
- -
-
fun Glitch(exceptions: List<ResourceSyncException>)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/exceptions.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/exceptions.html deleted file mode 100644 index d8cf1f2320..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/exceptions.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - exceptions - - -
-
- - -
-
-
-
-
-
- -
-

exceptions

-
-
- -
-
val exceptions: List<ResourceSyncException>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/index.html deleted file mode 100644 index 8d936e98ea..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - Glitch - - -
-
- - -
-
-
-
-
-
- -
-

Glitch

-
data class Glitch(exceptions: List<ResourceSyncException>) : SyncJobStatus

Glitched but sync job is being retried.

-
-
-
-
-

Constructors

-
-
-
-
Glitch -
Link copied to clipboard
-
-
-
-
fun Glitch(exceptions: List<ResourceSyncException>)
-
-
-
-
-
-

Properties

-
-
-
-
exceptions -
Link copied to clipboard
-
-
-
-
val exceptions: List<ResourceSyncException>
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/-in-progress.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/-in-progress.html deleted file mode 100644 index d990698823..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/-in-progress.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - InProgress - - -
-
- - -
-
-
-
-
-
- -
-

InProgress

-
-
- -
-
fun InProgress(resourceType: ResourceType?)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/index.html deleted file mode 100644 index bb08bc4b7f..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - InProgress - - -
-
- - -
-
-
-
-
-
- -
-

InProgress

-
data class InProgress(resourceType: ResourceType?) : SyncJobStatus

Syncing in progress with the server.

-
-
-
-
-

Constructors

-
-
-
-
InProgress -
Link copied to clipboard
-
-
-
-
fun InProgress(resourceType: ResourceType?)
-
-
-
-
-
-

Properties

-
-
-
-
resourceType -
Link copied to clipboard
-
-
-
-
val resourceType: ResourceType?
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/resource-type.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/resource-type.html deleted file mode 100644 index 80d6004ebf..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/resource-type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resourceType - - -
-
- - -
-
-
-
-
-
- -
-

resourceType

-
-
- -
-
val resourceType: ResourceType?
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-started/-started.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-started/-started.html deleted file mode 100644 index 87a63f44c8..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-started/-started.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Started - - -
-
- - -
-
-
-
-
-
- -
-

Started

-
-
- -
-
fun Started()
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-started/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-started/index.html deleted file mode 100644 index 39945a99af..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/-started/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - Started - - -
-
- - -
-
-
-
-
-
- -
-

Started

-
class Started : SyncJobStatus

Sync job has been started on the client but the syncing is not necessarily in progress.

-
-
-
-
-

Constructors

-
-
-
-
Started -
Link copied to clipboard
-
-
-
-
fun Started()
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/index.html deleted file mode 100644 index 0f5a485ffa..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - SyncJobStatus - - -
-
- - -
-
-
-
-
-
- -
-

SyncJobStatus

-
sealed class SyncJobStatus
-
-
-
-
-

Types

-
-
-
-
Failed -
Link copied to clipboard
-
-
-
- -
-
data class Failed(exceptions: List<ResourceSyncException>) : SyncJobStatus
-
-
Sync job failed.
-
-
-
-
- -
-
-
Finished -
Link copied to clipboard
-
-
-
- -
-
class Finished : SyncJobStatus
-
-
Sync job finished successfully.
-
-
-
-
- -
-
-
Glitch -
Link copied to clipboard
-
-
-
- -
-
data class Glitch(exceptions: List<ResourceSyncException>) : SyncJobStatus
-
-
Glitched but sync job is being retried.
-
-
-
-
- -
-
-
InProgress -
Link copied to clipboard
-
-
-
- -
-
data class InProgress(resourceType: ResourceType?) : SyncJobStatus
-
-
Syncing in progress with the server.
-
-
-
-
- -
-
-
Started -
Link copied to clipboard
-
-
-
- -
-
class Started : SyncJobStatus
-
-
Sync job has been started on the client but the syncing is not necessarily in progress.
-
-
-
-
-
-

Properties

-
-
-
-
timestamp -
Link copied to clipboard
-
-
-
-
val timestamp: OffsetDateTime
-
-
-
-
-
-

Inheritors

-
-
-
-
SyncJobStatus -
Link copied to clipboard
-
-
-
-
- -
-
-
SyncJobStatus -
Link copied to clipboard
-
-
-
-
- -
-
-
SyncJobStatus -
Link copied to clipboard
-
-
-
-
- -
-
-
SyncJobStatus -
Link copied to clipboard
-
-
-
-
- -
-
-
SyncJobStatus -
Link copied to clipboard
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/timestamp.html b/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/timestamp.html deleted file mode 100644 index 1ab7dcd2cd..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync-job-status/timestamp.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - timestamp - - -
-
- - -
-
-
-
-
-
- -
-

timestamp

-
-
- -
-
val timestamp: OffsetDateTime
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync/get-last-sync-timestamp.html b/docs/engine/engine/com.google.android.fhir.sync/-sync/get-last-sync-timestamp.html deleted file mode 100644 index b8b004f6ed..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync/get-last-sync-timestamp.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getLastSyncTimestamp - - -
-
- - -
-
-
-
-
-
- -
-

getLastSyncTimestamp

-
-
- -
-
fun getLastSyncTimestamp(context: Context): OffsetDateTime?
-
-

Gets the timestamp of the last sync job.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync/get-worker-info.html b/docs/engine/engine/com.google.android.fhir.sync/-sync/get-worker-info.html deleted file mode 100644 index 36762ea967..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync/get-worker-info.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getWorkerInfo - - -
-
- - -
-
-
-
-
-
- -
-

getWorkerInfo

-
-
- -
-
inline fun <W : FhirSyncWorker> getWorkerInfo(context: Context): <ERROR CLASS>
-
-

Gets the worker info for the FhirSyncWorker

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync/gson.html b/docs/engine/engine/com.google.android.fhir.sync/-sync/gson.html deleted file mode 100644 index 15d00fed7a..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync/gson.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - gson - - -
-
- - -
-
-
-
-
-
- -
-

gson

-
-
- -
-
val gson: Gson
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync/index.html b/docs/engine/engine/com.google.android.fhir.sync/-sync/index.html deleted file mode 100644 index 417fc59333..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync/index.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - Sync - - -
-
- - -
-
-
-
-
-
- -
-

Sync

-
object Sync
-
-
-
-
-

Functions

-
-
-
-
getLastSyncTimestamp -
Link copied to clipboard
-
-
-
- -
-
fun getLastSyncTimestamp(context: Context): OffsetDateTime?
-
-
Gets the timestamp of the last sync job.
-
-
-
-
- -
-
-
getWorkerInfo -
Link copied to clipboard
-
-
-
- -
-
inline fun <W : FhirSyncWorker> getWorkerInfo(context: Context): <ERROR CLASS>
-
-
Gets the worker info for the FhirSyncWorker
-
-
-
-
- -
-
-
oneTimeSync -
Link copied to clipboard
-
-
-
- -
-
inline fun <W : FhirSyncWorker> oneTimeSync(context: Context, retryConfiguration: RetryConfiguration? = defaultRetryConfiguration): Flow<SyncJobStatus>
-
-
Starts a one time sync job based on FhirSyncWorker.
-
-
-
-
- -
-
-
periodicSync -
Link copied to clipboard
-
-
-
- -
-
@ExperimentalCoroutinesApi()
inline fun <W : FhirSyncWorker> periodicSync(context: Context, periodicSyncConfiguration: PeriodicSyncConfiguration): Flow<SyncJobStatus>
-
-
Starts a periodic sync job based on FhirSyncWorker.
-
-
-
-
-
-

Properties

-
-
-
-
gson -
Link copied to clipboard
-
-
-
-
val gson: Gson
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync/one-time-sync.html b/docs/engine/engine/com.google.android.fhir.sync/-sync/one-time-sync.html deleted file mode 100644 index 321a53786c..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync/one-time-sync.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - oneTimeSync - - -
-
- - -
-
-
-
-
-
- -
-

oneTimeSync

-
-
- -
-
inline fun <W : FhirSyncWorker> oneTimeSync(context: Context, retryConfiguration: RetryConfiguration? = defaultRetryConfiguration): Flow<SyncJobStatus>
-
-

Starts a one time sync job based on FhirSyncWorker.

Use the returned Flow to get updates of the sync job. Alternatively, use getWorkerInfo with the same FhirSyncWorker to retrieve the status of the job.

Return

a Flow of SyncJobStatus

Parameters

retryConfiguration

configuration to guide the retry mechanism, or null to stop retry.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-sync/periodic-sync.html b/docs/engine/engine/com.google.android.fhir.sync/-sync/periodic-sync.html deleted file mode 100644 index b9a24ba337..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-sync/periodic-sync.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - periodicSync - - -
-
- - -
-
-
-
-
-
- -
-

periodicSync

-
-
- -
-
@ExperimentalCoroutinesApi()
inline fun <W : FhirSyncWorker> periodicSync(context: Context, periodicSyncConfiguration: PeriodicSyncConfiguration): Flow<SyncJobStatus>
-
-

Starts a periodic sync job based on FhirSyncWorker.

Use the returned Flow to get updates of the sync job. Alternatively, use getWorkerInfo with the same FhirSyncWorker to retrieve the status of the job.

Return

a Flow of SyncJobStatus

Parameters

periodicSyncConfiguration

configuration to determine the sync frequency and retry mechanism

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/-upload-configuration.html b/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/-upload-configuration.html deleted file mode 100644 index 818fdd51e3..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/-upload-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - UploadConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

UploadConfiguration

-
-
- -
-
fun UploadConfiguration(uploadBundleSize: Int = DEFAULT_BUNDLE_SIZE)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/index.html b/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/index.html deleted file mode 100644 index 181d3791dc..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - UploadConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

UploadConfiguration

-
data class UploadConfiguration(uploadBundleSize: Int)

Configuration for max number of resources to be uploaded in a Bundle.The default size is DEFAULT_BUNDLE_SIZE.

-
-
-
-
-

Constructors

-
-
-
-
UploadConfiguration -
Link copied to clipboard
-
-
-
-
fun UploadConfiguration(uploadBundleSize: Int = DEFAULT_BUNDLE_SIZE)
-
-
-
-
-
-

Properties

-
-
-
-
uploadBundleSize -
Link copied to clipboard
-
-
-
-
val uploadBundleSize: Int
Number of Resources to be added in a singe Bundle for upload and default is DEFAULT_BUNDLE_SIZE
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/upload-bundle-size.html b/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/upload-bundle-size.html deleted file mode 100644 index 1e654e95d0..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/-upload-configuration/upload-bundle-size.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - uploadBundleSize - - -
-
- - -
-
-
-
-
-
- -
-

uploadBundleSize

-
-
- -
-
val uploadBundleSize: Int
-
-

Number of Resources to be added in a singe Bundle for upload and default is DEFAULT_BUNDLE_SIZE

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/concat-params.html b/docs/engine/engine/com.google.android.fhir.sync/concat-params.html deleted file mode 100644 index 535dde0fb7..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/concat-params.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - concatParams - - -
-
- - -
-
-
-
-
-
- -
-

concatParams

-
-
- -
-
fun ParamMap.concatParams(): String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/default-retry-configuration.html b/docs/engine/engine/com.google.android.fhir.sync/default-retry-configuration.html deleted file mode 100644 index 2cc8944a70..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/default-retry-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - defaultRetryConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

defaultRetryConfiguration

-
-
- -
-
val defaultRetryConfiguration: RetryConfiguration
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir.sync/index.html b/docs/engine/engine/com.google.android.fhir.sync/index.html deleted file mode 100644 index 9a182e4373..0000000000 --- a/docs/engine/engine/com.google.android.fhir.sync/index.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - com.google.android.fhir.sync - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.sync

-
-
-
-
-

Types

-
-
-
-
Authenticator -
Link copied to clipboard
-
-
-
- -
-
interface Authenticator
-
-
FhirEngine depends on the developer app to handle user's authentication.
-
-
-
-
- -
-
-
BackoffCriteria -
Link copied to clipboard
-
-
-
- -
-
data class BackoffCriteria(backoffPolicy: BackoffPolicy, backoffDelay: Long, timeUnit: TimeUnit)
-
-
-
-
-
-
- -
-
-
ConflictResolutionResult -
Link copied to clipboard
-
-
-
- -
-
sealed class ConflictResolutionResult
-
-
Contains the result of the conflict resolution.
-
-
-
-
- -
-
-
ConflictResolver -
Link copied to clipboard
-
-
-
- -
-
fun fun interface ConflictResolver
-
-
Resolves conflicts between the client and remote changes in a Resource.
-
-
-
-
- -
-
-
DownloadWorkManager -
Link copied to clipboard
-
-
-
- -
-
interface DownloadWorkManager
-
-
Manager that generates the FHIR requests and handles the FHIR responses of a download job.
-
-
-
-
- -
-
-
FhirSyncWorker -
Link copied to clipboard
-
-
-
- -
-
abstract class FhirSyncWorker(appContext: Context, workerParams: WorkerParameters) : CoroutineWorker
-
-
A WorkManager Worker that handles periodic sync.
-
-
-
-
- -
-
-
ParamMap -
Link copied to clipboard
-
-
-
- -
-
typealias ParamMap = Map<String, String>
-
-

Class that holds what type of resources we need to synchronise and what are the parameters of that type. e.g. we only want to synchronise patients that live in United States ResourceSyncParams(ResourceType.Patient, mapOf("address-country" to "United States")

-
-
-
-
- -
-
-
PeriodicSyncConfiguration -
Link copied to clipboard
-
-
-
- -
-
class PeriodicSyncConfiguration(syncConstraints: Constraints, repeat: RepeatInterval, retryConfiguration: RetryConfiguration?)
-
-
Configuration for period synchronisation
-
-
-
-
- -
-
-
RepeatInterval -
Link copied to clipboard
-
-
-
- -
-
data class RepeatInterval(interval: Long, timeUnit: TimeUnit)
-
-
-
-
-
-
- -
-
-
Resolved -
Link copied to clipboard
-
-
-
- -
-
data class Resolved(resolved: Resource) : ConflictResolutionResult
-
-
-
-
-
-
- -
-
-
ResourceSyncException -
Link copied to clipboard
-
-
-
- -
-
data class ResourceSyncException(resourceType: ResourceType, exception: Exception)
-
-
-
-
-
-
- -
-
-
RetryConfiguration -
Link copied to clipboard
-
-
-
- -
-
data class RetryConfiguration(backoffCriteria: BackoffCriteria, maxRetries: Int)
-
-
Configuration for synchronization retry
-
-
-
-
- -
-
-
Sync -
Link copied to clipboard
-
-
-
- -
-
object Sync
-
-
-
-
-
-
- -
-
-
SyncDataParams -
Link copied to clipboard
-
-
-
- -
-
object SyncDataParams
-
-
-
-
-
-
- -
-
-
SyncJobStatus -
Link copied to clipboard
-
-
-
- -
-
sealed class SyncJobStatus
-
-
-
-
-
-
- -
-
-
UploadConfiguration -
Link copied to clipboard
-
-
-
- -
-
data class UploadConfiguration(uploadBundleSize: Int)
-
-
Configuration for max number of resources to be uploaded in a Bundle.
-
-
-
-
-
-

Functions

-
-
-
-
concatParams -
Link copied to clipboard
-
-
-
- -
-
fun ParamMap.concatParams(): String
-
-
-
-
-
-
-
-

Properties

-
-
-
-
AcceptLocalConflictResolver -
Link copied to clipboard
-
-
-
-
val AcceptLocalConflictResolver: ConflictResolver
Accepts the local change and rejects the remote change.
-
-
-
-
- -
-
-
AcceptRemoteConflictResolver -
Link copied to clipboard
-
-
-
-
val AcceptRemoteConflictResolver: ConflictResolver
Accepts the remote change and rejects the local change.
-
-
-
-
- -
-
-
DEFAULT_BUNDLE_SIZE -
Link copied to clipboard
-
-
-
-
const val DEFAULT_BUNDLE_SIZE: Int = 500
Constant for the default number of resource entries in a singe Bundle for upload.
-
-
-
-
- -
-
-
defaultRetryConfiguration -
Link copied to clipboard
-
-
-
-
val defaultRetryConfiguration: RetryConfiguration
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-f-h-i-r_-j-s-o-n.html b/docs/engine/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-f-h-i-r_-j-s-o-n.html deleted file mode 100644 index b6ae6f215b..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-f-h-i-r_-j-s-o-n.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - APPLICATION_FHIR_JSON - - -
-
- - -
-
-
-
-
-
- -
-

APPLICATION_FHIR_JSON

-
-
- -
-
const val APPLICATION_FHIR_JSON: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-j-s-o-n_-p-a-t-c-h.html b/docs/engine/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-j-s-o-n_-p-a-t-c-h.html deleted file mode 100644 index 5687c22e34..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-j-s-o-n_-p-a-t-c-h.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - APPLICATION_JSON_PATCH - - -
-
- - -
-
-
-
-
-
- -
-

APPLICATION_JSON_PATCH

-
-
- -
-
const val APPLICATION_JSON_PATCH: String
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-content-types/index.html b/docs/engine/engine/com.google.android.fhir/-content-types/index.html deleted file mode 100644 index 3af78e5b07..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-content-types/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - ContentTypes - - -
-
- - -
-
-
-
-
-
- -
-

ContentTypes

-
object ContentTypes
-
-
-
-
-

Properties

-
-
-
-
APPLICATION_FHIR_JSON -
Link copied to clipboard
-
-
-
-
const val APPLICATION_FHIR_JSON: String
-
-
-
-
- -
-
-
APPLICATION_JSON_PATCH -
Link copied to clipboard
-
-
-
-
const val APPLICATION_JSON_PATCH: String
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-database-error-strategy/-r-e-c-r-e-a-t-e_-a-t_-o-p-e-n/index.html b/docs/engine/engine/com.google.android.fhir/-database-error-strategy/-r-e-c-r-e-a-t-e_-a-t_-o-p-e-n/index.html deleted file mode 100644 index 50b01e9647..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-database-error-strategy/-r-e-c-r-e-a-t-e_-a-t_-o-p-e-n/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - RECREATE_AT_OPEN - - -
-
- - -
-
-
-
-
-
- -
-

RECREATE_AT_OPEN

-

If a database error occurs at open, automatically recreate the database.

This strategy is NOT respected when opening a previously unencrypted database with an encrypted configuration or vice versa. An IllegalStateException is thrown instead.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-database-error-strategy/-u-n-s-p-e-c-i-f-i-e-d/index.html b/docs/engine/engine/com.google.android.fhir/-database-error-strategy/-u-n-s-p-e-c-i-f-i-e-d/index.html deleted file mode 100644 index de392cafa0..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-database-error-strategy/-u-n-s-p-e-c-i-f-i-e-d/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - UNSPECIFIED - - -
-
- - -
-
-
-
-
-
- -
-

UNSPECIFIED

-

If unspecified, all database errors will be propagated to the call site. The caller shall handle the database error on a case-by-case basis.

-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-database-error-strategy/index.html b/docs/engine/engine/com.google.android.fhir/-database-error-strategy/index.html deleted file mode 100644 index f3f62f1fcf..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-database-error-strategy/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - DatabaseErrorStrategy - - -
-
- - -
-
-
-
-
-
- -
-

DatabaseErrorStrategy

-
enum DatabaseErrorStrategy : Enum<DatabaseErrorStrategy>
-
-
-
-
-

Entries

-
-
-
-
RECREATE_AT_OPEN -
Link copied to clipboard
-
-
-
-
If a database error occurs at open, automatically recreate the database.
-
-
-
-
- -
-
-
UNSPECIFIED -
Link copied to clipboard
-
-
-
-
If unspecified, all database errors will be propagated to the call site.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-datastore-util/-datastore-util.html b/docs/engine/engine/com.google.android.fhir/-datastore-util/-datastore-util.html deleted file mode 100644 index cab247fd01..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-datastore-util/-datastore-util.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - DatastoreUtil - - -
-
- - -
-
-
-
-
-
- -
-

DatastoreUtil

-
-
- -
-
fun DatastoreUtil(context: Context)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-datastore-util/index.html b/docs/engine/engine/com.google.android.fhir/-datastore-util/index.html deleted file mode 100644 index 67767f0626..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-datastore-util/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - DatastoreUtil - - -
-
- - -
-
-
-
-
-
- -
-

DatastoreUtil

-
class DatastoreUtil(context: Context)
-
-
-
-
-

Functions

-
-
-
-
readLastSyncTimestamp -
Link copied to clipboard
-
-
-
- -
-
fun readLastSyncTimestamp(): OffsetDateTime?
-
-
-
-
-
-
- -
-
-
writeLastSyncTimestamp -
Link copied to clipboard
-
-
-
- -
-
fun writeLastSyncTimestamp(datetime: OffsetDateTime)
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-datastore-util/read-last-sync-timestamp.html b/docs/engine/engine/com.google.android.fhir/-datastore-util/read-last-sync-timestamp.html deleted file mode 100644 index f4b75aa623..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-datastore-util/read-last-sync-timestamp.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - readLastSyncTimestamp - - -
-
- - -
-
-
-
-
-
- -
-

readLastSyncTimestamp

-
-
- -
-
fun readLastSyncTimestamp(): OffsetDateTime?
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-datastore-util/write-last-sync-timestamp.html b/docs/engine/engine/com.google.android.fhir/-datastore-util/write-last-sync-timestamp.html deleted file mode 100644 index c415872533..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-datastore-util/write-last-sync-timestamp.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - writeLastSyncTimestamp - - -
-
- - -
-
-
-
-
-
- -
-

writeLastSyncTimestamp

-
-
- -
-
fun writeLastSyncTimestamp(datetime: OffsetDateTime)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-date-provider/clock.html b/docs/engine/engine/com.google.android.fhir/-date-provider/clock.html deleted file mode 100644 index 55ed04e811..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-date-provider/clock.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - clock - - -
-
- - -
-
-
-
-
-
- -
-

clock

-
-
- -
-
lateinit var clock: Clock
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-date-provider/index.html b/docs/engine/engine/com.google.android.fhir/-date-provider/index.html deleted file mode 100644 index 6b80d21d1a..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-date-provider/index.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - DateProvider - - -
-
- - -
-
-
-
-
-
- -
-

DateProvider

-
object DateProvider

The DateProvider Instance FhirEngine uses for date/time related operations.

-
-
-
-
-

Functions

-
-
-
-
invoke -
Link copied to clipboard
-
-
-
- -
-
operator fun invoke(instant: Instant? = null): Clock
-
-
  • Returns the cached clock instance. If an Instant is passed , subsequent calls to the function will return a clock fixed to instant. To reset to a normal (unfixed) clock use resetClock.

-
-
-
-
- -
-
-
resetClock -
Link copied to clipboard
-
-
-
- -
-
fun resetClock(): <ERROR CLASS>
-
-
-
-
-
-
-
-

Properties

-
-
-
-
clock -
Link copied to clipboard
-
-
-
-
lateinit var clock: Clock
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-date-provider/invoke.html b/docs/engine/engine/com.google.android.fhir/-date-provider/invoke.html deleted file mode 100644 index aa58baaac9..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-date-provider/invoke.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - invoke - - -
-
- - -
-
-
-
-
-
- -
-

invoke

-
-
- -
-
operator fun invoke(instant: Instant? = null): Clock
-
-
  • Returns the cached clock instance. If an Instant is passed , subsequent calls to the function will return a clock fixed to instant. To reset to a normal (unfixed) clock use resetClock.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-date-provider/reset-clock.html b/docs/engine/engine/com.google.android.fhir/-date-provider/reset-clock.html deleted file mode 100644 index 22baec7cd6..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-date-provider/reset-clock.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resetClock - - -
-
- - -
-
-
-
-
-
- -
-

resetClock

-
-
- -
-
fun resetClock(): <ERROR CLASS>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/-fhir-engine-configuration.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/-fhir-engine-configuration.html deleted file mode 100644 index 987a8d41a8..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/-fhir-engine-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - FhirEngineConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

FhirEngineConfiguration

-
-
- -
-
fun FhirEngineConfiguration(enableEncryptionIfSupported: Boolean = false, databaseErrorStrategy: DatabaseErrorStrategy = UNSPECIFIED, serverConfiguration: ServerConfiguration? = null, testMode: Boolean = false)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/database-error-strategy.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/database-error-strategy.html deleted file mode 100644 index aa2344afd5..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/database-error-strategy.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - databaseErrorStrategy - - -
-
- - -
-
-
-
-
-
- -
-

databaseErrorStrategy

-
-
- -
-
val databaseErrorStrategy: DatabaseErrorStrategy
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/enable-encryption-if-supported.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/enable-encryption-if-supported.html deleted file mode 100644 index 1a1e53ded0..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/enable-encryption-if-supported.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - enableEncryptionIfSupported - - -
-
- - -
-
-
-
-
-
- -
-

enableEncryptionIfSupported

-
-
- -
-
val enableEncryptionIfSupported: Boolean = false
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/index.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/index.html deleted file mode 100644 index ecf038ed0f..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - FhirEngineConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

FhirEngineConfiguration

-
data class FhirEngineConfiguration(enableEncryptionIfSupported: Boolean, databaseErrorStrategy: DatabaseErrorStrategy, serverConfiguration: ServerConfiguration?, testMode: Boolean)

A configuration which describes the database setup and error recovery.

Database encryption is only available on API 23 or above. If enableEncryptionIfSupported is true, FHIR SDK will only enable database encryption on API 23 or above.

WARNING: Your app may try to decrypt an unencrypted database from a device which was previously on API 22 but later upgraded to API 23. When this happens, an IllegalStateException is thrown.

-
-
-
-
-

Constructors

-
-
-
-
FhirEngineConfiguration -
Link copied to clipboard
-
-
-
-
fun FhirEngineConfiguration(enableEncryptionIfSupported: Boolean = false, databaseErrorStrategy: DatabaseErrorStrategy = UNSPECIFIED, serverConfiguration: ServerConfiguration? = null, testMode: Boolean = false)
-
-
-
-
-
-

Properties

-
-
-
-
databaseErrorStrategy -
Link copied to clipboard
-
-
-
-
val databaseErrorStrategy: DatabaseErrorStrategy
-
-
-
-
- -
-
-
enableEncryptionIfSupported -
Link copied to clipboard
-
-
-
-
val enableEncryptionIfSupported: Boolean = false
-
-
-
-
- -
-
-
serverConfiguration -
Link copied to clipboard
-
-
-
-
val serverConfiguration: ServerConfiguration? = null
-
-
-
-
- -
-
-
testMode -
Link copied to clipboard
-
-
-
-
val testMode: Boolean = false
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/server-configuration.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/server-configuration.html deleted file mode 100644 index ee938bef85..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/server-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - serverConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

serverConfiguration

-
-
- -
-
val serverConfiguration: ServerConfiguration? = null
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/test-mode.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/test-mode.html deleted file mode 100644 index 29cfaabf17..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-configuration/test-mode.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - testMode - - -
-
- - -
-
-
-
-
-
- -
-

testMode

-
-
- -
-
val testMode: Boolean = false
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/cleanup.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/cleanup.html deleted file mode 100644 index 47b00d3637..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/cleanup.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - cleanup - - -
-
- - -
-
-
-
-
-
- -
-

cleanup

-
-
- -
-
fun cleanup()
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/get-instance.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/get-instance.html deleted file mode 100644 index 9a39b9d55c..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/get-instance.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getInstance - - -
-
- - -
-
-
-
-
-
- -
-

getInstance

-
-
- -
-
fun getInstance(context: Context): FhirEngine
-
-

Returns the cached FhirEngine instance. Creates a new instance from the supplied Context if it doesn't exist.

If this method is called without calling init, the default FhirEngineConfiguration is used.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/index.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/index.html deleted file mode 100644 index a1e1559407..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - FhirEngineProvider - - -
-
- - -
-
-
-
-
-
- -
-

FhirEngineProvider

-
object FhirEngineProvider

The provider for FhirEngine instance.

-
-
-
-
-

Functions

-
-
-
-
cleanup -
Link copied to clipboard
-
-
-
- -
-
fun cleanup()
-
-
-
-
-
-
- -
-
-
getInstance -
Link copied to clipboard
-
-
-
- -
-
fun getInstance(context: Context): FhirEngine
-
-
Returns the cached FhirEngine instance.
-
-
-
-
- -
-
-
init -
Link copied to clipboard
-
-
-
- -
-
fun init(fhirEngineConfiguration: FhirEngineConfiguration)
-
-
Initializes the FhirEngine singleton with a custom Configuration.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/init.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/init.html deleted file mode 100644 index 7164fc45b1..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine-provider/init.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - init - - -
-
- - -
-
-
-
-
-
- -
-

init

-
-
- -
-
fun init(fhirEngineConfiguration: FhirEngineConfiguration)
-
-

Initializes the FhirEngine singleton with a custom Configuration.

This method throws IllegalStateException if it is called multiple times

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/clear-database.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/clear-database.html deleted file mode 100644 index c2a16678bb..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/clear-database.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - clearDatabase - - -
-
- - -
-
-
-
-
-
- -
-

clearDatabase

-
-
- -
-
abstract suspend fun clearDatabase()
-
-

Clears all database tables without resetting the auto-increment value generated by PrimaryKey.autoGenerate.

WARNING: This will clear the database and it's not recoverable.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/count.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/count.html deleted file mode 100644 index 39718ad8e3..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/count.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - count - - -
-
- - -
-
-
-
-
-
- -
-

count

-
-
- -
-
abstract suspend fun count(search: Search): Long
-
-

Returns the total count of entities available for given search.

Parameters

search
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/create.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/create.html deleted file mode 100644 index f4b32ab41a..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/create.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - create - - -
-
- - -
-
-
-
-
-
- -
-

create

-
-
- -
-
abstract suspend fun create(vararg resource: Resource): List<String>
-
-

Creates one or more FHIR resources in the local storage.

Return

the logical IDs of the newly created resources.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/delete.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/delete.html deleted file mode 100644 index 670f844f57..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/delete.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - delete - - -
-
- - -
-
-
-
-
-
- -
-

delete

-
-
- -
-
abstract suspend fun delete(type: ResourceType, id: String)
-
-

Removes a FHIR resource given the class and the logical ID.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/get-last-sync-time-stamp.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/get-last-sync-time-stamp.html deleted file mode 100644 index 386d65077e..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/get-last-sync-time-stamp.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getLastSyncTimeStamp - - -
-
- - -
-
-
-
-
-
- -
-

getLastSyncTimeStamp

-
-
- -
-
abstract suspend fun getLastSyncTimeStamp(): OffsetDateTime?
-
-

Returns the timestamp when data was last synchronized.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/get-local-change.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/get-local-change.html deleted file mode 100644 index 999c997141..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/get-local-change.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getLocalChange - - -
-
- - -
-
-
-
-
-
- -
-

getLocalChange

-
-
- -
-
abstract suspend fun getLocalChange(type: ResourceType, id: String): LocalChange?
-
-

Retrieve LocalChange for Resource with given type and id, which can be used to purge resource from database. Each resource will have at most one LocalChange(multiple

  • changes are squashed). If there is no local change for given resourceType and Resource.id, return null.

Return

LocalChange A squashed local changes for given resourceType and Resource.id . If there is no local change for given resourceType and Resource.id, return null.

Parameters

type
id

The resource id Resource.id

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/get.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/get.html deleted file mode 100644 index e749fceef5..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/get.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - get - - -
-
- - -
-
-
-
-
-
- -
-

get

-
-
- -
-
abstract suspend fun get(type: ResourceType, id: String): Resource
-
-

Loads a FHIR resource given the class and the logical ID.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/index.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/index.html deleted file mode 100644 index 89b2b5a6a6..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/index.html +++ /dev/null @@ -1,325 +0,0 @@ - - - - FhirEngine - - -
-
- - -
-
-
-
-
-
- -
-

FhirEngine

-
interface FhirEngine

The FHIR Engine interface that handles the local storage of FHIR resources.

-
-
-
-
-

Functions

-
-
-
-
clearDatabase -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun clearDatabase()
-
-
Clears all database tables without resetting the auto-increment value generated by PrimaryKey.autoGenerate.
-
-
-
-
- -
-
-
count -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun count(search: Search): Long
-
-
Returns the total count of entities available for given search.
-
-
-
-
- -
-
-
create -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun create(vararg resource: Resource): List<String>
-
-
Creates one or more FHIR resources in the local storage.
-
-
-
-
- -
-
-
delete -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun delete(type: ResourceType, id: String)
-
-
Removes a FHIR resource given the class and the logical ID.
-
-
-
-
- -
-
-
get -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun get(type: ResourceType, id: String): Resource
-
-
Loads a FHIR resource given the class and the logical ID.
-
-
-
-
- -
-
-
getLastSyncTimeStamp -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun getLastSyncTimeStamp(): OffsetDateTime?
-
-
Returns the timestamp when data was last synchronized.
-
-
-
-
- -
-
-
getLocalChange -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun getLocalChange(type: ResourceType, id: String): LocalChange?
-
-
Retrieve LocalChange for Resource with given type and id, which can be used to purge resource from database.
-
-
-
-
- -
-
-
purge -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun purge(type: ResourceType, id: String, forcePurge: Boolean = false)
-
-
Purges a resource from the database based on resource type and id without any deletion of data from the server.
-
-
-
-
- -
-
-
search -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun <R : Resource> search(search: Search): List<R>
-
-
Searches the database and returns a list resources according to the search specifications.
-
-
-
-
- -
-
-
syncDownload -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun syncDownload(conflictResolver: ConflictResolver, download: suspend (SyncDownloadContext) -> Flow<List<Resource>>)
-
-
Synchronizes the download result in the database.
-
-
-
-
- -
-
-
syncUpload -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun syncUpload(upload: suspend (List<LocalChange>) -> Flow<Pair<LocalChangeToken, Resource>>)
-
-
Synchronizes the upload result in the database.
-
-
-
-
- -
-
-
update -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun update(vararg resource: Resource)
-
-
Updates a FHIR resource in the local storage.
-
-
-
-
-
-

Extensions

-
-
-
-
count -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.count(init: Search.() -> Unit): Long
-
-
-
-
-
-
- -
-
-
delete -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.delete(id: String)
-
-
Deletes a FHIR resource of type R with id from the local storage.
-
-
-
-
- -
-
-
get -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.get(id: String): R
-
-
Returns a FHIR resource of type R with id from the local storage.
-
-
-
-
- -
-
-
search -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.search(init: Search.() -> Unit): List<R>
suspend fun FhirEngine.search(xFhirQuery: String): List<Resource>
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/purge.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/purge.html deleted file mode 100644 index 3366e45e9c..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/purge.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - purge - - -
-
- - -
-
-
-
-
-
- -
-

purge

-
-
- -
-
abstract suspend fun purge(type: ResourceType, id: String, forcePurge: Boolean = false)
-
-

Purges a resource from the database based on resource type and id without any deletion of data from the server.

Parameters

type
id

The resource id Resource.id

isLocalPurge

default value is false here resource will not be deleted from LocalChangeEntity table but it will throw IllegalStateException("Resource has local changes either sync with server or FORCE_PURGE required") if local change exists. If true this API will delete resource entry from LocalChangeEntity table.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/search.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/search.html deleted file mode 100644 index 475c1952e0..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/search.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - search - - -
-
- - -
-
-
-
-
-
- -
-

search

-
-
- -
-
abstract suspend fun <R : Resource> search(search: Search): List<R>
-
-

Searches the database and returns a list resources according to the search specifications.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/sync-download.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/sync-download.html deleted file mode 100644 index 9fa46c32b9..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/sync-download.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - syncDownload - - -
-
- - -
-
-
-
-
-
- -
-

syncDownload

-
-
- -
-
abstract suspend fun syncDownload(conflictResolver: ConflictResolver, download: suspend (SyncDownloadContext) -> Flow<List<Resource>>)
-
-

Synchronizes the download result in the database. The database will be updated to reflect the result of the download operation.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/sync-upload.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/sync-upload.html deleted file mode 100644 index b1258a0f70..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/sync-upload.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - syncUpload - - -
-
- - -
-
-
-
-
-
- -
-

syncUpload

-
-
- -
-
abstract suspend fun syncUpload(upload: suspend (List<LocalChange>) -> Flow<Pair<LocalChangeToken, Resource>>)
-
-

Synchronizes the upload result in the database. upload operation may result in multiple calls to the server to upload the data. Result of each call will be emitted by upload and the api caller should Flow.collect it.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-fhir-engine/update.html b/docs/engine/engine/com.google.android.fhir/-fhir-engine/update.html deleted file mode 100644 index f6aac9b82e..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-fhir-engine/update.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - update - - -
-
- - -
-
-
-
-
-
- -
-

update

-
-
- -
-
abstract suspend fun update(vararg resource: Resource)
-
-

Updates a FHIR resource in the local storage.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-local-change.html b/docs/engine/engine/com.google.android.fhir/-local-change/-local-change.html deleted file mode 100644 index d06f86652c..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-local-change.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - LocalChange - - -
-
- - -
-
-
-
-
-
- -
-

LocalChange

-
-
- -
-
fun LocalChange(resourceType: String, resourceId: String, versionId: String? = null, timestamp: String = "", type: LocalChange.Type, payload: String, token: LocalChangeToken)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-companion/from.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/-companion/from.html deleted file mode 100644 index 56d4e4d5ce..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-companion/from.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - from - - -
-
- - -
-
-
-
-
-
- -
-

from

-
-
- -
-
fun from(input: Int): LocalChange.Type
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-companion/index.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/-companion/index.html deleted file mode 100644 index 190dd27d1d..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-companion/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - Companion - - -
-
- - -
-
-
-
-
-
- -
-

Companion

-
object Companion
-
-
-
-
-

Functions

-
-
-
-
from -
Link copied to clipboard
-
-
-
- -
-
fun from(input: Int): LocalChange.Type
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-d-e-l-e-t-e/index.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/-d-e-l-e-t-e/index.html deleted file mode 100644 index 6f3111cdba..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-d-e-l-e-t-e/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - DELETE - - -
-
- - -
-
-
-
-
-
- -
-

DELETE

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-i-n-s-e-r-t/index.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/-i-n-s-e-r-t/index.html deleted file mode 100644 index 91ddd2d92c..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-i-n-s-e-r-t/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - INSERT - - -
-
- - -
-
-
-
-
-
- -
-

INSERT

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-u-p-d-a-t-e/index.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/-u-p-d-a-t-e/index.html deleted file mode 100644 index 6ae39aa8e1..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/-u-p-d-a-t-e/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - UPDATE - - -
-
- - -
-
-
-
-
-
- -
-

UPDATE

-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/index.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/index.html deleted file mode 100644 index 0264c02599..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - Type - - -
-
- - -
-
-
-
-
-
- -
-

Type

-
enum Type : Enum<LocalChange.Type>
-
-
-
-
-

Entries

-
-
-
-
DELETE -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
-
UPDATE -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
-
INSERT -
Link copied to clipboard
-
-
-
-
-
-
-
-
-
-

Types

-
-
-
-
Companion -
Link copied to clipboard
-
-
-
- -
-
object Companion
-
-
-
-
-
-
-
-

Properties

-
-
-
-
value -
Link copied to clipboard
-
-
-
-
val value: Int
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/-type/value.html b/docs/engine/engine/com.google.android.fhir/-local-change/-type/value.html deleted file mode 100644 index f9d0598c13..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/-type/value.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - value - - -
-
- - -
-
-
-
-
-
- -
-

value

-
-
- -
-
val value: Int
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/index.html b/docs/engine/engine/com.google.android.fhir/-local-change/index.html deleted file mode 100644 index 6495fcb5ee..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - LocalChange - - -
-
- - -
-
-
-
-
-
- -
-

LocalChange

-
data class LocalChange(resourceType: String, resourceId: String, versionId: String?, timestamp: String, type: LocalChange.Type, payload: String, token: LocalChangeToken)

Data class for squashed local changes for resource

-
-
-
-
-

Constructors

-
-
-
-
LocalChange -
Link copied to clipboard
-
-
-
-
fun LocalChange(resourceType: String, resourceId: String, versionId: String? = null, timestamp: String = "", type: LocalChange.Type, payload: String, token: LocalChangeToken)
-
-
-
-
-
-

Types

-
-
-
-
Type -
Link copied to clipboard
-
-
-
- -
-
enum Type : Enum<LocalChange.Type>
-
-
-
-
-
-
-
-

Properties

-
-
-
-
payload -
Link copied to clipboard
-
-
-
-
val payload: String
json string with local changes
-
-
-
-
- -
-
-
resourceId -
Link copied to clipboard
-
-
-
-
val resourceId: String
The resource id Resource.id
-
-
-
-
- -
-
-
resourceType -
Link copied to clipboard
-
-
-
-
val resourceType: String
The ResourceType
-
-
-
-
- -
-
-
timestamp -
Link copied to clipboard
-
-
-
-
val timestamp: String
last updated timestamp on server when this local changes are sync with server
-
-
-
-
- -
-
-
token -
Link copied to clipboard
-
-
-
-
var token: LocalChangeToken
This token value must be explicitly applied when list of local changes are squashed and LocalChange class instance is created.
-
-
-
-
- -
-
-
type -
Link copied to clipboard
-
-
-
-
val type: LocalChange.Type
Type of local change like insert, delete, etc
-
-
-
-
- -
-
-
versionId -
Link copied to clipboard
-
-
-
-
val versionId: String? = null
This is the id of the version of the resource that this local change is based of
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/payload.html b/docs/engine/engine/com.google.android.fhir/-local-change/payload.html deleted file mode 100644 index f8e02a6d3e..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/payload.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - payload - - -
-
- - -
-
-
-
-
-
- -
-

payload

-
-
- -
-
val payload: String
-
-

json string with local changes

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/resource-id.html b/docs/engine/engine/com.google.android.fhir/-local-change/resource-id.html deleted file mode 100644 index e8354ac14b..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/resource-id.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resourceId - - -
-
- - -
-
-
-
-
-
- -
-

resourceId

-
-
- -
-
val resourceId: String
-
-

The resource id Resource.id

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/resource-type.html b/docs/engine/engine/com.google.android.fhir/-local-change/resource-type.html deleted file mode 100644 index 2bb30d619a..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/resource-type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - resourceType - - -
-
- - -
-
-
-
-
-
- -
-

resourceType

-
-
- -
-
val resourceType: String
-
-

The ResourceType

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/timestamp.html b/docs/engine/engine/com.google.android.fhir/-local-change/timestamp.html deleted file mode 100644 index fe925ac90f..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/timestamp.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - timestamp - - -
-
- - -
-
-
-
-
-
- -
-

timestamp

-
-
- -
-
val timestamp: String
-
-

last updated timestamp on server when this local changes are sync with server

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/token.html b/docs/engine/engine/com.google.android.fhir/-local-change/token.html deleted file mode 100644 index d15c582eeb..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/token.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - token - - -
-
- - -
-
-
-
-
-
- -
-

token

-
-
- -
-
var token: LocalChangeToken
-
-

This token value must be explicitly applied when list of local changes are squashed and LocalChange class instance is created.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/type.html b/docs/engine/engine/com.google.android.fhir/-local-change/type.html deleted file mode 100644 index 18802de178..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - type - - -
-
- - -
-
-
-
-
-
- -
-

type

-
-
- -
-
val type: LocalChange.Type
-
-

Type of local change like insert, delete, etc

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-local-change/version-id.html b/docs/engine/engine/com.google.android.fhir/-local-change/version-id.html deleted file mode 100644 index 04bfa6ea97..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-local-change/version-id.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - versionId - - -
-
- - -
-
-
-
-
-
- -
-

versionId

-
-
- -
-
val versionId: String? = null
-
-

This is the id of the version of the resource that this local change is based of

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-media-types/-m-e-d-i-a_-t-y-p-e_-f-h-i-r_-j-s-o-n.html b/docs/engine/engine/com.google.android.fhir/-media-types/-m-e-d-i-a_-t-y-p-e_-f-h-i-r_-j-s-o-n.html deleted file mode 100644 index 478bf26116..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-media-types/-m-e-d-i-a_-t-y-p-e_-f-h-i-r_-j-s-o-n.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - MEDIA_TYPE_FHIR_JSON - - -
-
- - -
-
-
-
-
-
- -
-

MEDIA_TYPE_FHIR_JSON

-
-
- -
-
val MEDIA_TYPE_FHIR_JSON: MediaType
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-media-types/index.html b/docs/engine/engine/com.google.android.fhir/-media-types/index.html deleted file mode 100644 index 5cd3a983e3..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-media-types/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - MediaTypes - - -
-
- - -
-
-
-
-
-
- -
-

MediaTypes

-
object MediaTypes
-
-
-
-
-

Properties

-
-
-
-
MEDIA_TYPE_FHIR_JSON -
Link copied to clipboard
-
-
-
-
val MEDIA_TYPE_FHIR_JSON: MediaType
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-network-configuration/-network-configuration.html b/docs/engine/engine/com.google.android.fhir/-network-configuration/-network-configuration.html deleted file mode 100644 index 5bfb928f13..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-network-configuration/-network-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - NetworkConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

NetworkConfiguration

-
-
- -
-
fun NetworkConfiguration(connectionTimeOut: Long = 10, readTimeOut: Long = 10, writeTimeOut: Long = 10)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-network-configuration/connection-time-out.html b/docs/engine/engine/com.google.android.fhir/-network-configuration/connection-time-out.html deleted file mode 100644 index fb65fa1e19..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-network-configuration/connection-time-out.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - connectionTimeOut - - -
-
- - -
-
-
-
-
-
- -
-

connectionTimeOut

-
-
- -
-
val connectionTimeOut: Long = 10
-
-

Connection timeout (in seconds). The default is 10 seconds.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-network-configuration/index.html b/docs/engine/engine/com.google.android.fhir/-network-configuration/index.html deleted file mode 100644 index aa3368227c..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-network-configuration/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - NetworkConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

NetworkConfiguration

-
data class NetworkConfiguration(connectionTimeOut: Long, readTimeOut: Long, writeTimeOut: Long)

A configuration to provide the network connection parameters.

-
-
-
-
-

Constructors

-
-
-
-
NetworkConfiguration -
Link copied to clipboard
-
-
-
-
fun NetworkConfiguration(connectionTimeOut: Long = 10, readTimeOut: Long = 10, writeTimeOut: Long = 10)
-
-
-
-
-
-

Properties

-
-
-
-
connectionTimeOut -
Link copied to clipboard
-
-
-
-
val connectionTimeOut: Long = 10
Connection timeout (in seconds).
-
-
-
-
- -
-
-
readTimeOut -
Link copied to clipboard
-
-
-
-
val readTimeOut: Long = 10
Read timeout (in seconds) for network connection.
-
-
-
-
- -
-
-
writeTimeOut -
Link copied to clipboard
-
-
-
-
val writeTimeOut: Long = 10
Write timeout (in seconds) for network connection.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-network-configuration/read-time-out.html b/docs/engine/engine/com.google.android.fhir/-network-configuration/read-time-out.html deleted file mode 100644 index cfcf22dbbe..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-network-configuration/read-time-out.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - readTimeOut - - -
-
- - -
-
-
-
-
-
- -
-

readTimeOut

-
-
- -
-
val readTimeOut: Long = 10
-
-

Read timeout (in seconds) for network connection. The default is 10 seconds.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-network-configuration/write-time-out.html b/docs/engine/engine/com.google.android.fhir/-network-configuration/write-time-out.html deleted file mode 100644 index 11305b0e57..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-network-configuration/write-time-out.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - writeTimeOut - - -
-
- - -
-
-
-
-
-
- -
-

writeTimeOut

-
-
- -
-
val writeTimeOut: Long = 10
-
-

Write timeout (in seconds) for network connection. The default is 10 seconds.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/-offset-date-time-type-adapter.html b/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/-offset-date-time-type-adapter.html deleted file mode 100644 index 263d698ca7..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/-offset-date-time-type-adapter.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - OffsetDateTimeTypeAdapter - - -
-
- - -
-
-
-
-
-
- -
-

OffsetDateTimeTypeAdapter

-
-
- -
-
fun OffsetDateTimeTypeAdapter()
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/index.html b/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/index.html deleted file mode 100644 index 8ac1bfd4a8..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - OffsetDateTimeTypeAdapter - - -
-
- - -
-
-
-
-
-
- -
-

OffsetDateTimeTypeAdapter

-
class OffsetDateTimeTypeAdapter : TypeAdapter<OffsetDateTime>
-
-
-
-
-

Functions

-
-
-
-
read -
Link copied to clipboard
-
-
-
- -
-
open override fun read(input: JsonReader): OffsetDateTime
-
-
-
-
-
-
- -
-
-
write -
Link copied to clipboard
-
-
-
- -
-
open override fun write(out: JsonWriter, value: OffsetDateTime)
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/read.html b/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/read.html deleted file mode 100644 index 519308c36d..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/read.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - read - - -
-
- - -
-
-
-
-
-
- -
-

read

-
-
- -
-
open override fun read(input: JsonReader): OffsetDateTime
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/write.html b/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/write.html deleted file mode 100644 index 6dcf0c4564..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-offset-date-time-type-adapter/write.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - write - - -
-
- - -
-
-
-
-
-
- -
-

write

-
-
- -
-
open override fun write(out: JsonWriter, value: OffsetDateTime)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-server-configuration/-server-configuration.html b/docs/engine/engine/com.google.android.fhir/-server-configuration/-server-configuration.html deleted file mode 100644 index 6f9124d8da..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-server-configuration/-server-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ServerConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

ServerConfiguration

-
-
- -
-
fun ServerConfiguration(baseUrl: String, networkConfiguration: NetworkConfiguration = NetworkConfiguration(), authenticator: Authenticator? = null, httpLogger: HttpLogger = HttpLogger.NONE)
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-server-configuration/authenticator.html b/docs/engine/engine/com.google.android.fhir/-server-configuration/authenticator.html deleted file mode 100644 index 93b0ed500c..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-server-configuration/authenticator.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - authenticator - - -
-
- - -
-
-
-
-
-
- -
-

authenticator

-
-
- -
-
val authenticator: Authenticator? = null
-
-

An Authenticator for supplying any auth token that may be necessary to communicate with the server

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-server-configuration/base-url.html b/docs/engine/engine/com.google.android.fhir/-server-configuration/base-url.html deleted file mode 100644 index 06154cbc99..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-server-configuration/base-url.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - baseUrl - - -
-
- - -
-
-
-
-
-
- -
-

baseUrl

-
-
- -
-
val baseUrl: String
-
-

Url of the remote FHIR server.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-server-configuration/http-logger.html b/docs/engine/engine/com.google.android.fhir/-server-configuration/http-logger.html deleted file mode 100644 index b982a8ffbe..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-server-configuration/http-logger.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - httpLogger - - -
-
- - -
-
-
-
-
-
- -
-

httpLogger

-
-
- -
-
val httpLogger: HttpLogger
-
-

Logs the communication between the engine and the remote server.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-server-configuration/index.html b/docs/engine/engine/com.google.android.fhir/-server-configuration/index.html deleted file mode 100644 index a6d6461d5a..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-server-configuration/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - ServerConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

ServerConfiguration

-
data class ServerConfiguration(baseUrl: String, networkConfiguration: NetworkConfiguration, authenticator: Authenticator?, httpLogger: HttpLogger)

A configuration to provide necessary params for network connection.

-
-
-
-
-

Constructors

-
-
-
-
ServerConfiguration -
Link copied to clipboard
-
-
-
-
fun ServerConfiguration(baseUrl: String, networkConfiguration: NetworkConfiguration = NetworkConfiguration(), authenticator: Authenticator? = null, httpLogger: HttpLogger = HttpLogger.NONE)
-
-
-
-
-
-

Properties

-
-
-
-
authenticator -
Link copied to clipboard
-
-
-
-
val authenticator: Authenticator? = null
An Authenticator for supplying any auth token that may be necessary to communicate with the server
-
-
-
-
- -
-
-
baseUrl -
Link copied to clipboard
-
-
-
-
val baseUrl: String
Url of the remote FHIR server.
-
-
-
-
- -
-
-
httpLogger -
Link copied to clipboard
-
-
-
-
val httpLogger: HttpLogger
Logs the communication between the engine and the remote server.
-
-
-
-
- -
-
-
networkConfiguration -
Link copied to clipboard
-
-
-
-
val networkConfiguration: NetworkConfiguration
A configuration to provide the network connection parameters.
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-server-configuration/network-configuration.html b/docs/engine/engine/com.google.android.fhir/-server-configuration/network-configuration.html deleted file mode 100644 index f3c1e4a289..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-server-configuration/network-configuration.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - networkConfiguration - - -
-
- - -
-
-
-
-
-
- -
-

networkConfiguration

-
-
- -
-
val networkConfiguration: NetworkConfiguration
-
-

A configuration to provide the network connection parameters.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-sync-download-context/get-latest-timestamp-for.html b/docs/engine/engine/com.google.android.fhir/-sync-download-context/get-latest-timestamp-for.html deleted file mode 100644 index 91fd21ea01..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-sync-download-context/get-latest-timestamp-for.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getLatestTimestampFor - - -
-
- - -
-
-
-
-
-
- -
-

getLatestTimestampFor

-
-
- -
-
abstract suspend fun getLatestTimestampFor(type: ResourceType): String?
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/-sync-download-context/index.html b/docs/engine/engine/com.google.android.fhir/-sync-download-context/index.html deleted file mode 100644 index da64f85ea9..0000000000 --- a/docs/engine/engine/com.google.android.fhir/-sync-download-context/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - SyncDownloadContext - - -
-
- - -
-
-
-
-
-
- -
-

SyncDownloadContext

-
interface SyncDownloadContext
-
-
-
-
-

Functions

-
-
-
-
getLatestTimestampFor -
Link copied to clipboard
-
-
-
- -
-
abstract suspend fun getLatestTimestampFor(type: ResourceType): String?
-
-
-
-
-
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/data-store.html b/docs/engine/engine/com.google.android.fhir/data-store.html deleted file mode 100644 index c31c54313b..0000000000 --- a/docs/engine/engine/com.google.android.fhir/data-store.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - dataStore - - -
-
- - -
-
-
-
-
-
- -
-

dataStore

-
-
- -
-
val Context.dataStore: DataStore<Preferences>
-
-
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/delete.html b/docs/engine/engine/com.google.android.fhir/delete.html deleted file mode 100644 index 3b27a2a745..0000000000 --- a/docs/engine/engine/com.google.android.fhir/delete.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - delete - - -
-
- - -
-
-
-
-
-
- -
-

delete

-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.delete(id: String)
-
-

Deletes a FHIR resource of type R with id from the local storage.

Parameters

The resource type which should be a subtype of [Resource].
-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/get-resource-class.html b/docs/engine/engine/com.google.android.fhir/get-resource-class.html deleted file mode 100644 index 4bb054bd23..0000000000 --- a/docs/engine/engine/com.google.android.fhir/get-resource-class.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - getResourceClass - - -
-
- - -
-
-
-
-
-
- -
-

getResourceClass

-
-
- -
-
fun <R : Resource> getResourceClass(resourceType: ResourceType): Class<R>
fun <R : Resource> getResourceClass(resourceType: String): Class<R>
-
-

Returns the {@link Class} object for the resource type.

-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/get-resource-type.html b/docs/engine/engine/com.google.android.fhir/get-resource-type.html deleted file mode 100644 index d8e1b5acc1..0000000000 --- a/docs/engine/engine/com.google.android.fhir/get-resource-type.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - getResourceType - - -
-
- - -
-
-
-
-
-
- -
-

getResourceType

-
-
- -
-
fun <R : Resource> getResourceType(clazz: Class<R>): ResourceType
-
-

Returns the FHIR resource type.

Throws

if class name cannot be mapped to valid resource type

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/get.html b/docs/engine/engine/com.google.android.fhir/get.html deleted file mode 100644 index 68caa96d2a..0000000000 --- a/docs/engine/engine/com.google.android.fhir/get.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - get - - -
-
- - -
-
-
-
-
-
- -
-

get

-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.get(id: String): R
-
-

Returns a FHIR resource of type R with id from the local storage.

Parameters

The resource type which should be a subtype of [Resource].

Throws

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/index.html b/docs/engine/engine/com.google.android.fhir/index.html deleted file mode 100644 index 1f4de66afc..0000000000 --- a/docs/engine/engine/com.google.android.fhir/index.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - com.google.android.fhir - - -
-
- - -
-
-
-
-
-
- -
-

Package com.google.android.fhir

-
-
-
-
-

Types

-
-
-
-
ContentTypes -
Link copied to clipboard
-
-
-
- -
-
object ContentTypes
-
-
-
-
-
-
- -
-
-
DatabaseErrorStrategy -
Link copied to clipboard
-
-
-
- -
-
enum DatabaseErrorStrategy : Enum<DatabaseErrorStrategy>
-
-
-
-
-
-
- -
-
-
DatastoreUtil -
Link copied to clipboard
-
-
-
- -
-
class DatastoreUtil(context: Context)
-
-
-
-
-
-
- -
-
-
DateProvider -
Link copied to clipboard
-
-
-
- -
-
object DateProvider
-
-
The DateProvider Instance FhirEngine uses for date/time related operations.
-
-
-
-
- -
-
-
FhirEngine -
Link copied to clipboard
-
-
-
- -
-
interface FhirEngine
-
-
The FHIR Engine interface that handles the local storage of FHIR resources.
-
-
-
-
- -
-
-
FhirEngineConfiguration -
Link copied to clipboard
-
-
-
- -
-
data class FhirEngineConfiguration(enableEncryptionIfSupported: Boolean, databaseErrorStrategy: DatabaseErrorStrategy, serverConfiguration: ServerConfiguration?, testMode: Boolean)
-
-
A configuration which describes the database setup and error recovery.
-
-
-
-
- -
-
-
FhirEngineProvider -
Link copied to clipboard
-
-
-
- -
-
object FhirEngineProvider
-
-
The provider for FhirEngine instance.
-
-
-
-
- -
-
-
LocalChange -
Link copied to clipboard
-
-
-
- -
-
data class LocalChange(resourceType: String, resourceId: String, versionId: String?, timestamp: String, type: LocalChange.Type, payload: String, token: LocalChangeToken)
-
-
Data class for squashed local changes for resource
-
-
-
-
- -
-
-
MediaTypes -
Link copied to clipboard
-
-
-
- -
-
object MediaTypes
-
-
-
-
-
-
- -
-
-
NetworkConfiguration -
Link copied to clipboard
-
-
-
- -
-
data class NetworkConfiguration(connectionTimeOut: Long, readTimeOut: Long, writeTimeOut: Long)
-
-
A configuration to provide the network connection parameters.
-
-
-
-
- -
-
-
OffsetDateTimeTypeAdapter -
Link copied to clipboard
-
-
-
- -
-
class OffsetDateTimeTypeAdapter : TypeAdapter<OffsetDateTime>
-
-
-
-
-
-
- -
-
-
ServerConfiguration -
Link copied to clipboard
-
-
-
- -
-
data class ServerConfiguration(baseUrl: String, networkConfiguration: NetworkConfiguration, authenticator: Authenticator?, httpLogger: HttpLogger)
-
-
A configuration to provide necessary params for network connection.
-
-
-
-
- -
-
-
SyncDownloadContext -
Link copied to clipboard
-
-
-
- -
-
interface SyncDownloadContext
-
-
-
-
-
-
-
-

Functions

-
-
-
-
delete -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.delete(id: String)
-
-
Deletes a FHIR resource of type R with id from the local storage.
-
-
-
-
- -
-
-
get -
Link copied to clipboard
-
-
-
- -
-
inline suspend fun <R : Resource> FhirEngine.get(id: String): R
-
-
Returns a FHIR resource of type R with id from the local storage.
-
-
-
-
- -
-
-
getResourceClass -
Link copied to clipboard
-
-
-
- -
-
fun <R : Resource> getResourceClass(resourceType: String): Class<R>
-
-
Returns the {@link Class} object for the resource type.
-
- -
-
fun <R : Resource> getResourceClass(resourceType: ResourceType): Class<R>
-
-
Returns the {@link Class} object for the resource type.
-
-
-
-
- -
-
-
getResourceType -
Link copied to clipboard
-
-
-
- -
-
fun <R : Resource> getResourceType(clazz: Class<R>): ResourceType
-
-
Returns the FHIR resource type.
-
-
-
-
- -
-
-
isUploadSuccess -
Link copied to clipboard
-
-
-
- -
-
fun Resource.isUploadSuccess(): Boolean
-
-
Determines if the upload operation was successful or not.
-
-
-
-
-
-

Properties

-
-
-
-
dataStore -
Link copied to clipboard
-
-
-
-
val Context.dataStore: DataStore<Preferences>
-
-
-
-
- -
-
-
logicalId -
Link copied to clipboard
-
-
-
-
val Resource.logicalId: String
The logical (unqualified) part of the ID.
-
-
-
-
- -
-
-
ucumUrl -
Link copied to clipboard
-
-
-
-
const val ucumUrl: String
Url for the UCUM system of measures.
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/is-upload-success.html b/docs/engine/engine/com.google.android.fhir/is-upload-success.html deleted file mode 100644 index 11eea2b184..0000000000 --- a/docs/engine/engine/com.google.android.fhir/is-upload-success.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - isUploadSuccess - - -
-
- - -
-
-
-
-
-
- -
-

isUploadSuccess

-
-
- -
-
fun Resource.isUploadSuccess(): Boolean
-
-

Determines if the upload operation was successful or not.

Current HAPI FHIR implementation does not give any signal other than 'severity' level for operation success/failure. TODO: pass along the HTTP result (or any other signal) to determine the outcome of an instance level RESTful operation.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/logical-id.html b/docs/engine/engine/com.google.android.fhir/logical-id.html deleted file mode 100644 index 828f823995..0000000000 --- a/docs/engine/engine/com.google.android.fhir/logical-id.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - logicalId - - -
-
- - -
-
-
-
-
-
- -
-

logicalId

-
-
- -
-
val Resource.logicalId: String
-
-

The logical (unqualified) part of the ID. For example, if the ID is "http://example.com/fhir/Patient/123/_history/456", then this value would be "123".

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/com.google.android.fhir/ucum-url.html b/docs/engine/engine/com.google.android.fhir/ucum-url.html deleted file mode 100644 index 16edace1b1..0000000000 --- a/docs/engine/engine/com.google.android.fhir/ucum-url.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - ucumUrl - - -
-
- - -
-
-
-
-
-
- -
-

ucumUrl

-
-
- -
-
const val ucumUrl: String
-
-

Url for the UCUM system of measures.

-

Sources

-
-
-
-
androidJvm source -
Link copied to clipboard
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/engine/package-list b/docs/engine/engine/package-list deleted file mode 100644 index ccd89d4e9b..0000000000 --- a/docs/engine/engine/package-list +++ /dev/null @@ -1,405 +0,0 @@ -$dokka.format:html-v1 -$dokka.linkExtension:html -$dokka.location:com.google.android.fhir.db.impl.dao////PointingToDeclaration/engine/com.google.android.fhir.db.impl.dao/index.html -$dokka.location:com.google.android.fhir.db.impl.dao/LocalChangeToken///PointingToDeclaration/engine/com.google.android.fhir.db.impl.dao/-local-change-token/index.html -$dokka.location:com.google.android.fhir.db.impl.dao/LocalChangeToken/LocalChangeToken/#kotlin.collections.List[kotlin.Long]/PointingToDeclaration/engine/com.google.android.fhir.db.impl.dao/-local-change-token/-local-change-token.html -$dokka.location:com.google.android.fhir.db.impl.dao/LocalChangeToken/ids/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl.dao/-local-change-token/ids.html -$dokka.location:com.google.android.fhir.db.impl////PointingToDeclaration/engine/com.google.android.fhir.db.impl/index.html -$dokka.location:com.google.android.fhir.db.impl/DatabaseConfig///PointingToDeclaration/engine/com.google.android.fhir.db.impl/-database-config/index.html -$dokka.location:com.google.android.fhir.db.impl/DatabaseConfig/DatabaseConfig/#kotlin.Boolean#kotlin.Boolean#com.google.android.fhir.DatabaseErrorStrategy/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-database-config/-database-config.html -$dokka.location:com.google.android.fhir.db.impl/DatabaseConfig/databaseErrorStrategy/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-database-config/database-error-strategy.html -$dokka.location:com.google.android.fhir.db.impl/DatabaseConfig/enableEncryption/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-database-config/enable-encryption.html -$dokka.location:com.google.android.fhir.db.impl/DatabaseConfig/inMemory/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-database-config/in-memory.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper///PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/index.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper/SQLCipherSupportHelper/#androidx.sqlite.db.SupportSQLiteOpenHelper.Configuration#net.sqlcipher.database.SQLiteDatabaseHook?#com.google.android.fhir.DatabaseErrorStrategy#kotlin.Function0[kotlin.ByteArray]/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/-s-q-l-cipher-support-helper.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper/close/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/close.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper/getDatabaseName/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-database-name.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper/getReadableDatabase/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-readable-database.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper/getWritableDatabase/#/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/get-writable-database.html -$dokka.location:com.google.android.fhir.db.impl/SQLCipherSupportHelper/setWriteAheadLoggingEnabled/#kotlin.Boolean/PointingToDeclaration/engine/com.google.android.fhir.db.impl/-s-q-l-cipher-support-helper/set-write-ahead-logging-enabled.html -$dokka.location:com.google.android.fhir.db////PointingToDeclaration/engine/com.google.android.fhir.db/index.html -$dokka.location:com.google.android.fhir.db//databaseEncryptionException/java.security.KeyStoreException#/PointingToDeclaration/engine/com.google.android.fhir.db/database-encryption-exception.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException.DatabaseEncryptionErrorCode.TIMEOUT///PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-t-i-m-e-o-u-t/index.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException.DatabaseEncryptionErrorCode.UNKNOWN///PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-k-n-o-w-n/index.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException.DatabaseEncryptionErrorCode.UNSUPPORTED///PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/-u-n-s-u-p-p-o-r-t-e-d/index.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException.DatabaseEncryptionErrorCode///PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-error-code/index.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException///PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/index.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException/DatabaseEncryptionException/#java.lang.Exception#com.google.android.fhir.db.DatabaseEncryptionException.DatabaseEncryptionErrorCode/PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/-database-encryption-exception.html -$dokka.location:com.google.android.fhir.db/DatabaseEncryptionException/errorCode/#/PointingToDeclaration/engine/com.google.android.fhir.db/-database-encryption-exception/error-code.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode///PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/index.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_CALLER_NONCE_PROHIBITED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-l-l-e-r_-n-o-n-c-e_-p-r-o-h-i-b-i-t-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_CANNOT_ATTEST_IDS/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-a-n-n-o-t_-a-t-t-e-s-t_-i-d-s.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_CONCURRENT_ACCESS_CONFLICT/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-c-o-n-c-u-r-r-e-n-t_-a-c-c-e-s-s_-c-o-n-f-l-i-c-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_DELEGATION_NOT_ALLOWED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-d-e-l-e-g-a-t-i-o-n_-n-o-t_-a-l-l-o-w-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_IMPORTED_KEY_DECRYPTION_FAILED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-d-e-c-r-y-p-t-i-o-n_-f-a-i-l-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_IMPORTED_KEY_NOT_ENCRYPTED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-e-n-c-r-y-p-t-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_IMPORTED_KEY_NOT_SIGNED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-n-o-t_-s-i-g-n-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_IMPORTED_KEY_VERIFICATION_FAILED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_IMPORT_PARAMETER_MISMATCH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-m-p-o-r-t_-p-a-r-a-m-e-t-e-r_-m-i-s-m-a-t-c-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INCOMPATIBLE_ALGORITHM/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-a-l-g-o-r-i-t-h-m.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INCOMPATIBLE_BLOCK_MODE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-b-l-o-c-k_-m-o-d-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INCOMPATIBLE_DIGEST/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-d-i-g-e-s-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INCOMPATIBLE_KEY_FORMAT/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-k-e-y_-f-o-r-m-a-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INCOMPATIBLE_PADDING_MODE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-a-d-d-i-n-g_-m-o-d-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INCOMPATIBLE_PURPOSE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-c-o-m-p-a-t-i-b-l-e_-p-u-r-p-o-s-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INSUFFICIENT_BUFFER_SPACE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-s-u-f-f-i-c-i-e-n-t_-b-u-f-f-e-r_-s-p-a-c-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_ARGUMENT/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-r-g-u-m-e-n-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_AUTHORIZATION_TIMEOUT/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-a-u-t-h-o-r-i-z-a-t-i-o-n_-t-i-m-e-o-u-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_EXPIRATION_TIME/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-e-x-p-i-r-a-t-i-o-n_-t-i-m-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_INPUT_LENGTH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-i-n-p-u-t_-l-e-n-g-t-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_KEY_BLOB/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-k-e-y_-b-l-o-b.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_MAC_LENGTH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-m-a-c_-l-e-n-g-t-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_NONCE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-n-o-n-c-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_OPERATION_HANDLE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-o-p-e-r-a-t-i-o-n_-h-a-n-d-l-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_RESCOPING/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-r-e-s-c-o-p-i-n-g.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_TAG/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-t-a-g.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_INVALID_USER_ID/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-i-n-v-a-l-i-d_-u-s-e-r_-i-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_KEY_EXPIRED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-i-r-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_KEY_EXPORT_OPTIONS_INVALID/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-e-x-p-o-r-t_-o-p-t-i-o-n-s_-i-n-v-a-l-i-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_KEY_MAX_OPS_EXCEEDED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-m-a-x_-o-p-s_-e-x-c-e-e-d-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_KEY_NOT_YET_VALID/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-n-o-t_-y-e-t_-v-a-l-i-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_KEY_RATE_LIMIT_EXCEEDED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-r-a-t-e_-l-i-m-i-t_-e-x-c-e-e-d-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_KEY_USER_NOT_AUTHENTICATED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-k-e-y_-u-s-e-r_-n-o-t_-a-u-t-h-e-n-t-i-c-a-t-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_MEMORY_ALLOCATION_FAILED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-e-m-o-r-y_-a-l-l-o-c-a-t-i-o-n_-f-a-i-l-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_MISSING_MAC_LENGTH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-a-c_-l-e-n-g-t-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_MISSING_MIN_MAC_LENGTH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-m-i-n_-m-a-c_-l-e-n-g-t-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_MISSING_NONCE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-m-i-s-s-i-n-g_-n-o-n-c-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_OK/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-k.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_OPERATION_CANCELLED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-p-e-r-a-t-i-o-n_-c-a-n-c-e-l-l-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_OUTPUT_PARAMETER_NULL/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-o-u-t-p-u-t_-p-a-r-a-m-e-t-e-r_-n-u-l-l.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_ROOT_OF_TRUST_ALREADY_SET/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-r-o-o-t_-o-f_-t-r-u-s-t_-a-l-r-e-a-d-y_-s-e-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_SECURE_HW_ACCESS_DENIED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-a-c-c-e-s-s_-d-e-n-i-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_SECURE_HW_BUSY/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-b-u-s-y.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_SECURE_HW_COMMUNICATION_FAILED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-s-e-c-u-r-e_-h-w_-c-o-m-m-u-n-i-c-a-t-i-o-n_-f-a-i-l-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_TOO_MANY_OPERATIONS/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-t-o-o_-m-a-n-y_-o-p-e-r-a-t-i-o-n-s.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNEXPECTED_NULL_POINTER/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-e-x-p-e-c-t-e-d_-n-u-l-l_-p-o-i-n-t-e-r.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNIMPLEMENTED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-i-m-p-l-e-m-e-n-t-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNKNOWN_ERROR/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-k-n-o-w-n_-e-r-r-o-r.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_ALGORITHM/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-a-l-g-o-r-i-t-h-m.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_BLOCK_MODE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-b-l-o-c-k_-m-o-d-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_DIGEST/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-d-i-g-e-s-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_EC_FIELD/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-e-c_-f-i-e-l-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-e-n-c-r-y-p-t-i-o-n_-a-l-g-o-r-i-t-h-m.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_KEY_FORMAT/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-f-o-r-m-a-t.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_KEY_SIZE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-s-i-z-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-k-e-y_-v-e-r-i-f-i-c-a-t-i-o-n_-a-l-g-o-r-i-t-h-m.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_MAC_LENGTH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-a-c_-l-e-n-g-t-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_MIN_MAC_LENGTH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-m-i-n_-m-a-c_-l-e-n-g-t-h.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_PADDING_MODE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-a-d-d-i-n-g_-m-o-d-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_PURPOSE/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-p-u-r-p-o-s-e.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_UNSUPPORTED_TAG/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-u-n-s-u-p-p-o-r-t-e-d_-t-a-g.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_VERIFICATION_FAILED/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-i-f-i-c-a-t-i-o-n_-f-a-i-l-e-d.html -$dokka.location:com.google.android.fhir.db/KeyStoreExceptionErrorCode/ERROR_VERSION_MISMATCH/#/PointingToDeclaration/engine/com.google.android.fhir.db/-key-store-exception-error-code/-e-r-r-o-r_-v-e-r-s-i-o-n_-m-i-s-m-a-t-c-h.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundException///PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-exception/index.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundException/ResourceNotFoundException/#kotlin.String#kotlin.String#kotlin.Throwable/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-exception/-resource-not-found-exception.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundException/ResourceNotFoundException/#kotlin.String#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-exception/-resource-not-found-exception.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundException/id/#/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-exception/id.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundException/type/#/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-exception/type.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundInDbException///PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/index.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundInDbException/ResourceNotFoundInDbException/#kotlin.String#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/-resource-not-found-in-db-exception.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundInDbException/id/#/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/id.html -$dokka.location:com.google.android.fhir.db/ResourceNotFoundInDbException/type/#/PointingToDeclaration/engine/com.google.android.fhir.db/-resource-not-found-in-db-exception/type.html -$dokka.location:com.google.android.fhir.index.entities////PointingToDeclaration/engine/com.google.android.fhir.index.entities/index.html -$dokka.location:com.google.android.fhir.index.entities/PositionIndex///PointingToDeclaration/engine/com.google.android.fhir.index.entities/-position-index/index.html -$dokka.location:com.google.android.fhir.index.entities/PositionIndex/PositionIndex/#kotlin.Double#kotlin.Double/PointingToDeclaration/engine/com.google.android.fhir.index.entities/-position-index/-position-index.html -$dokka.location:com.google.android.fhir.index.entities/PositionIndex/latitude/#/PointingToDeclaration/engine/com.google.android.fhir.index.entities/-position-index/latitude.html -$dokka.location:com.google.android.fhir.index.entities/PositionIndex/longitude/#/PointingToDeclaration/engine/com.google.android.fhir.index.entities/-position-index/longitude.html -$dokka.location:com.google.android.fhir.index////PointingToDeclaration/engine/com.google.android.fhir.index/index.html -$dokka.location:com.google.android.fhir.index/SearchParamDefinition///PointingToDeclaration/engine/com.google.android.fhir.index/-search-param-definition/index.html -$dokka.location:com.google.android.fhir.index/SearchParamDefinition/SearchParamDefinition/#kotlin.String#org.hl7.fhir.r4.model.Enumerations.SearchParamType#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir.index/-search-param-definition/-search-param-definition.html -$dokka.location:com.google.android.fhir.index/SearchParamDefinition/name/#/PointingToDeclaration/engine/com.google.android.fhir.index/-search-param-definition/name.html -$dokka.location:com.google.android.fhir.index/SearchParamDefinition/path/#/PointingToDeclaration/engine/com.google.android.fhir.index/-search-param-definition/path.html -$dokka.location:com.google.android.fhir.index/SearchParamDefinition/type/#/PointingToDeclaration/engine/com.google.android.fhir.index/-search-param-definition/type.html -$dokka.location:com.google.android.fhir.search.filter////PointingToDeclaration/engine/com.google.android.fhir.search.filter/index.html -$dokka.location:com.google.android.fhir.search.filter/DateFilterValues///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-filter-values/index.html -$dokka.location:com.google.android.fhir.search.filter/DateFilterValues/date/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-filter-values/date.html -$dokka.location:com.google.android.fhir.search.filter/DateFilterValues/dateTime/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-filter-values/date-time.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/DateParamFilterCriterion/#ca.uhn.fhir.rest.gclient.DateClientParam#ca.uhn.fhir.rest.param.ParamPrefixEnum#com.google.android.fhir.search.filter.DateFilterValues?/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/-date-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/of/#org.hl7.fhir.r4.model.DateTimeType/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/of/#org.hl7.fhir.r4.model.DateType/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/prefix/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/prefix.html -$dokka.location:com.google.android.fhir.search.filter/DateParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-date-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.filter/NumberParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/NumberParamFilterCriterion/NumberParamFilterCriterion/#ca.uhn.fhir.rest.gclient.NumberClientParam#ca.uhn.fhir.rest.param.ParamPrefixEnum?#java.math.BigDecimal?/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/-number-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/NumberParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/NumberParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/NumberParamFilterCriterion/prefix/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/prefix.html -$dokka.location:com.google.android.fhir.search.filter/NumberParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-number-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/QuantityParamFilterCriterion/#ca.uhn.fhir.rest.gclient.QuantityClientParam#ca.uhn.fhir.rest.param.ParamPrefixEnum?#java.math.BigDecimal?#kotlin.String?#kotlin.String?/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/-quantity-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/prefix/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/prefix.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/system/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/system.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/unit/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/unit.html -$dokka.location:com.google.android.fhir.search.filter/QuantityParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-quantity-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.filter/ReferenceParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/ReferenceParamFilterCriterion/ReferenceParamFilterCriterion/#ca.uhn.fhir.rest.gclient.ReferenceClientParam#kotlin.String?/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/-reference-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/ReferenceParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/ReferenceParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/ReferenceParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-reference-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.filter/StringParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/StringParamFilterCriterion/StringParamFilterCriterion/#ca.uhn.fhir.rest.gclient.StringClientParam#com.google.android.fhir.search.StringFilterModifier#kotlin.String?/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/-string-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/StringParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/StringParamFilterCriterion/modifier/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/modifier.html -$dokka.location:com.google.android.fhir.search.filter/StringParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/StringParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-string-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.filter/TokenFilterValue///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-filter-value/index.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/TokenParamFilterCriterion/#ca.uhn.fhir.rest.gclient.TokenClientParam/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/-token-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#kotlin.Boolean/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#org.hl7.fhir.r4.model.CodeType/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#org.hl7.fhir.r4.model.CodeableConcept/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#org.hl7.fhir.r4.model.Coding/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#org.hl7.fhir.r4.model.ContactPoint/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#org.hl7.fhir.r4.model.Identifier/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/of/#org.hl7.fhir.r4.model.UriType/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/of.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/TokenParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-token-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.filter/UriParamFilterCriterion///PointingToDeclaration/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/index.html -$dokka.location:com.google.android.fhir.search.filter/UriParamFilterCriterion/UriParamFilterCriterion/#ca.uhn.fhir.rest.gclient.UriClientParam#kotlin.String?/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/-uri-param-filter-criterion.html -$dokka.location:com.google.android.fhir.search.filter/UriParamFilterCriterion/getConditionalParams/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/get-conditional-params.html -$dokka.location:com.google.android.fhir.search.filter/UriParamFilterCriterion/parameter/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/parameter.html -$dokka.location:com.google.android.fhir.search.filter/UriParamFilterCriterion/value/#/PointingToDeclaration/engine/com.google.android.fhir.search.filter/-uri-param-filter-criterion/value.html -$dokka.location:com.google.android.fhir.search.query////PointingToDeclaration/engine/com.google.android.fhir.search.query/index.html -$dokka.location:com.google.android.fhir.search.query/XFhirQueryTranslator///PointingToDeclaration/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/index.html -$dokka.location:com.google.android.fhir.search.query/XFhirQueryTranslator/applyFilterParam/com.google.android.fhir.search.Search#com.google.android.fhir.index.SearchParamDefinition#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir.search.query/-x-fhir-query-translator/apply-filter-param.html -$dokka.location:com.google.android.fhir.search////PointingToDeclaration/engine/com.google.android.fhir.search/index.html -$dokka.location:com.google.android.fhir.search//count/com.google.android.fhir.FhirEngine#kotlin.Function1[com.google.android.fhir.search.Search,kotlin.Unit]/PointingToDeclaration/engine/com.google.android.fhir.search/count.html -$dokka.location:com.google.android.fhir.search//getQuery/com.google.android.fhir.search.Search#kotlin.Boolean/PointingToDeclaration/engine/com.google.android.fhir.search/get-query.html -$dokka.location:com.google.android.fhir.search//has/com.google.android.fhir.search.Search#ca.uhn.fhir.rest.gclient.ReferenceClientParam#kotlin.Function1[com.google.android.fhir.search.Search,kotlin.Unit]/PointingToDeclaration/engine/com.google.android.fhir.search/has.html -$dokka.location:com.google.android.fhir.search//search/com.google.android.fhir.FhirEngine#kotlin.Function1[com.google.android.fhir.search.Search,kotlin.Unit]/PointingToDeclaration/engine/com.google.android.fhir.search/search.html -$dokka.location:com.google.android.fhir.search//search/com.google.android.fhir.FhirEngine#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir.search/search.html -$dokka.location:com.google.android.fhir.search/ConditionParam///PointingToDeclaration/engine/com.google.android.fhir.search/-condition-param/index.html -$dokka.location:com.google.android.fhir.search/ConditionParam/ConditionParam/#kotlin.String#kotlin.Array[TypeParam(bounds=[kotlin.Any?])]/PointingToDeclaration/engine/com.google.android.fhir.search/-condition-param/-condition-param.html -$dokka.location:com.google.android.fhir.search/ConditionParam/ConditionParam/#kotlin.String#kotlin.collections.List[TypeParam(bounds=[kotlin.Any?])]/PointingToDeclaration/engine/com.google.android.fhir.search/-condition-param/-condition-param.html -$dokka.location:com.google.android.fhir.search/ConditionParam/condition/#/PointingToDeclaration/engine/com.google.android.fhir.search/-condition-param/condition.html -$dokka.location:com.google.android.fhir.search/ConditionParam/params/#/PointingToDeclaration/engine/com.google.android.fhir.search/-condition-param/params.html -$dokka.location:com.google.android.fhir.search/Operation.AND///PointingToDeclaration/engine/com.google.android.fhir.search/-operation/-a-n-d/index.html -$dokka.location:com.google.android.fhir.search/Operation.OR///PointingToDeclaration/engine/com.google.android.fhir.search/-operation/-o-r/index.html -$dokka.location:com.google.android.fhir.search/Operation///PointingToDeclaration/engine/com.google.android.fhir.search/-operation/index.html -$dokka.location:com.google.android.fhir.search/Operation/logicalOperator/#/PointingToDeclaration/engine/com.google.android.fhir.search/-operation/logical-operator.html -$dokka.location:com.google.android.fhir.search/Order.ASCENDING///PointingToDeclaration/engine/com.google.android.fhir.search/-order/-a-s-c-e-n-d-i-n-g/index.html -$dokka.location:com.google.android.fhir.search/Order.DESCENDING///PointingToDeclaration/engine/com.google.android.fhir.search/-order/-d-e-s-c-e-n-d-i-n-g/index.html -$dokka.location:com.google.android.fhir.search/Order///PointingToDeclaration/engine/com.google.android.fhir.search/-order/index.html -$dokka.location:com.google.android.fhir.search/Search///PointingToDeclaration/engine/com.google.android.fhir.search/-search/index.html -$dokka.location:com.google.android.fhir.search/Search/Search/#org.hl7.fhir.r4.model.ResourceType#kotlin.Int?#kotlin.Int?/PointingToDeclaration/engine/com.google.android.fhir.search/-search/-search.html -$dokka.location:com.google.android.fhir.search/Search/count/#/PointingToDeclaration/engine/com.google.android.fhir.search/-search/count.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.DateClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.DateParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.NumberClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.NumberParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.QuantityClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.QuantityParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.ReferenceClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.ReferenceParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.StringClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.StringParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.TokenClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.TokenParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/filter/#ca.uhn.fhir.rest.gclient.UriClientParam#kotlin.Array[kotlin.Function1[com.google.android.fhir.search.filter.UriParamFilterCriterion,kotlin.Unit]]#com.google.android.fhir.search.Operation/PointingToDeclaration/engine/com.google.android.fhir.search/-search/filter.html -$dokka.location:com.google.android.fhir.search/Search/from/#/PointingToDeclaration/engine/com.google.android.fhir.search/-search/from.html -$dokka.location:com.google.android.fhir.search/Search/operation/#/PointingToDeclaration/engine/com.google.android.fhir.search/-search/operation.html -$dokka.location:com.google.android.fhir.search/Search/sort/#ca.uhn.fhir.rest.gclient.DateClientParam#com.google.android.fhir.search.Order/PointingToDeclaration/engine/com.google.android.fhir.search/-search/sort.html -$dokka.location:com.google.android.fhir.search/Search/sort/#ca.uhn.fhir.rest.gclient.NumberClientParam#com.google.android.fhir.search.Order/PointingToDeclaration/engine/com.google.android.fhir.search/-search/sort.html -$dokka.location:com.google.android.fhir.search/Search/sort/#ca.uhn.fhir.rest.gclient.StringClientParam#com.google.android.fhir.search.Order/PointingToDeclaration/engine/com.google.android.fhir.search/-search/sort.html -$dokka.location:com.google.android.fhir.search/Search/type/#/PointingToDeclaration/engine/com.google.android.fhir.search/-search/type.html -$dokka.location:com.google.android.fhir.search/SearchQuery///PointingToDeclaration/engine/com.google.android.fhir.search/-search-query/index.html -$dokka.location:com.google.android.fhir.search/SearchQuery/SearchQuery/#kotlin.String#kotlin.collections.List[kotlin.Any]/PointingToDeclaration/engine/com.google.android.fhir.search/-search-query/-search-query.html -$dokka.location:com.google.android.fhir.search/SearchQuery/args/#/PointingToDeclaration/engine/com.google.android.fhir.search/-search-query/args.html -$dokka.location:com.google.android.fhir.search/SearchQuery/query/#/PointingToDeclaration/engine/com.google.android.fhir.search/-search-query/query.html -$dokka.location:com.google.android.fhir.search/StringFilterModifier.CONTAINS///PointingToDeclaration/engine/com.google.android.fhir.search/-string-filter-modifier/-c-o-n-t-a-i-n-s/index.html -$dokka.location:com.google.android.fhir.search/StringFilterModifier.MATCHES_EXACTLY///PointingToDeclaration/engine/com.google.android.fhir.search/-string-filter-modifier/-m-a-t-c-h-e-s_-e-x-a-c-t-l-y/index.html -$dokka.location:com.google.android.fhir.search/StringFilterModifier.STARTS_WITH///PointingToDeclaration/engine/com.google.android.fhir.search/-string-filter-modifier/-s-t-a-r-t-s_-w-i-t-h/index.html -$dokka.location:com.google.android.fhir.search/StringFilterModifier///PointingToDeclaration/engine/com.google.android.fhir.search/-string-filter-modifier/index.html -$dokka.location:com.google.android.fhir.sync.download////PointingToDeclaration/engine/com.google.android.fhir.sync.download/index.html -$dokka.location:com.google.android.fhir.sync.download/ResourceParamsBasedDownloadWorkManager///PointingToDeclaration/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/index.html -$dokka.location:com.google.android.fhir.sync.download/ResourceParamsBasedDownloadWorkManager/ResourceParamsBasedDownloadWorkManager/#kotlin.collections.Map[org.hl7.fhir.r4.model.ResourceType,kotlin.collections.Map[kotlin.String,kotlin.String]]/PointingToDeclaration/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/-resource-params-based-download-work-manager.html -$dokka.location:com.google.android.fhir.sync.download/ResourceParamsBasedDownloadWorkManager/getNextRequestUrl/#com.google.android.fhir.SyncDownloadContext/PointingToDeclaration/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/get-next-request-url.html -$dokka.location:com.google.android.fhir.sync.download/ResourceParamsBasedDownloadWorkManager/processResponse/#org.hl7.fhir.r4.model.Resource/PointingToDeclaration/engine/com.google.android.fhir.sync.download/-resource-params-based-download-work-manager/process-response.html -$dokka.location:com.google.android.fhir.sync.remote////PointingToDeclaration/engine/com.google.android.fhir.sync.remote/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Companion///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Companion/NONE/#/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-companion/-n-o-n-e.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Configuration///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Configuration/Configuration/#com.google.android.fhir.sync.remote.HttpLogger.Level#kotlin.collections.List[kotlin.String]?/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/-configuration.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Configuration/headersToIgnore/#/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/headers-to-ignore.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Configuration/level/#/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-configuration/level.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Level.BASIC///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-a-s-i-c/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Level.BODY///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-b-o-d-y/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Level.HEADERS///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-h-e-a-d-e-r-s/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Level.NONE///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-level/-n-o-n-e/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger.Level///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-level/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger///PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/index.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger/HttpLogger/#com.google.android.fhir.sync.remote.HttpLogger.Configuration#kotlin.Function1[kotlin.String,kotlin.Unit]/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/-http-logger.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger/configuration/#/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/configuration.html -$dokka.location:com.google.android.fhir.sync.remote/HttpLogger/log/#/PointingToDeclaration/engine/com.google.android.fhir.sync.remote/-http-logger/log.html -$dokka.location:com.google.android.fhir.sync.upload////PointingToDeclaration/engine/com.google.android.fhir.sync.upload.html -$dokka.location:com.google.android.fhir.sync////PointingToDeclaration/engine/com.google.android.fhir.sync/index.html -$dokka.location:com.google.android.fhir.sync//AcceptLocalConflictResolver/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-accept-local-conflict-resolver.html -$dokka.location:com.google.android.fhir.sync//AcceptRemoteConflictResolver/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-accept-remote-conflict-resolver.html -$dokka.location:com.google.android.fhir.sync//DEFAULT_BUNDLE_SIZE/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-d-e-f-a-u-l-t_-b-u-n-d-l-e_-s-i-z-e.html -$dokka.location:com.google.android.fhir.sync//concatParams/kotlin.collections.Map[kotlin.String,kotlin.String]#/PointingToDeclaration/engine/com.google.android.fhir.sync/concat-params.html -$dokka.location:com.google.android.fhir.sync//defaultRetryConfiguration/#/PointingToDeclaration/engine/com.google.android.fhir.sync/default-retry-configuration.html -$dokka.location:com.google.android.fhir.sync/Authenticator///PointingToDeclaration/engine/com.google.android.fhir.sync/-authenticator/index.html -$dokka.location:com.google.android.fhir.sync/Authenticator/getAccessToken/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-authenticator/get-access-token.html -$dokka.location:com.google.android.fhir.sync/BackoffCriteria///PointingToDeclaration/engine/com.google.android.fhir.sync/-backoff-criteria/index.html -$dokka.location:com.google.android.fhir.sync/BackoffCriteria/BackoffCriteria/#androidx.work.BackoffPolicy#kotlin.Long#java.util.concurrent.TimeUnit/PointingToDeclaration/engine/com.google.android.fhir.sync/-backoff-criteria/-backoff-criteria.html -$dokka.location:com.google.android.fhir.sync/BackoffCriteria/backoffDelay/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-delay.html -$dokka.location:com.google.android.fhir.sync/BackoffCriteria/backoffPolicy/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-backoff-criteria/backoff-policy.html -$dokka.location:com.google.android.fhir.sync/BackoffCriteria/timeUnit/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-backoff-criteria/time-unit.html -$dokka.location:com.google.android.fhir.sync/ConflictResolutionResult///PointingToDeclaration/engine/com.google.android.fhir.sync/-conflict-resolution-result/index.html -$dokka.location:com.google.android.fhir.sync/ConflictResolver///PointingToDeclaration/engine/com.google.android.fhir.sync/-conflict-resolver/index.html -$dokka.location:com.google.android.fhir.sync/ConflictResolver/resolve/#org.hl7.fhir.r4.model.Resource#org.hl7.fhir.r4.model.Resource/PointingToDeclaration/engine/com.google.android.fhir.sync/-conflict-resolver/resolve.html -$dokka.location:com.google.android.fhir.sync/DownloadWorkManager///PointingToDeclaration/engine/com.google.android.fhir.sync/-download-work-manager/index.html -$dokka.location:com.google.android.fhir.sync/DownloadWorkManager/getNextRequestUrl/#com.google.android.fhir.SyncDownloadContext/PointingToDeclaration/engine/com.google.android.fhir.sync/-download-work-manager/get-next-request-url.html -$dokka.location:com.google.android.fhir.sync/DownloadWorkManager/processResponse/#org.hl7.fhir.r4.model.Resource/PointingToDeclaration/engine/com.google.android.fhir.sync/-download-work-manager/process-response.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker///PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/index.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker/FhirSyncWorker/#android.content.Context#androidx.work.WorkerParameters/PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/-fhir-sync-worker.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker/doWork/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/do-work.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker/getConflictResolver/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-conflict-resolver.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker/getDownloadWorkManager/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-download-work-manager.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker/getFhirEngine/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-fhir-engine.html -$dokka.location:com.google.android.fhir.sync/FhirSyncWorker/getUploadConfiguration/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-fhir-sync-worker/get-upload-configuration.html -$dokka.location:com.google.android.fhir.sync/PeriodicSyncConfiguration///PointingToDeclaration/engine/com.google.android.fhir.sync/-periodic-sync-configuration/index.html -$dokka.location:com.google.android.fhir.sync/PeriodicSyncConfiguration/PeriodicSyncConfiguration/#androidx.work.Constraints#com.google.android.fhir.sync.RepeatInterval#com.google.android.fhir.sync.RetryConfiguration?/PointingToDeclaration/engine/com.google.android.fhir.sync/-periodic-sync-configuration/-periodic-sync-configuration.html -$dokka.location:com.google.android.fhir.sync/PeriodicSyncConfiguration/repeat/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-periodic-sync-configuration/repeat.html -$dokka.location:com.google.android.fhir.sync/PeriodicSyncConfiguration/retryConfiguration/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-periodic-sync-configuration/retry-configuration.html -$dokka.location:com.google.android.fhir.sync/PeriodicSyncConfiguration/syncConstraints/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-periodic-sync-configuration/sync-constraints.html -$dokka.location:com.google.android.fhir.sync/RepeatInterval///PointingToDeclaration/engine/com.google.android.fhir.sync/-repeat-interval/index.html -$dokka.location:com.google.android.fhir.sync/RepeatInterval/RepeatInterval/#kotlin.Long#java.util.concurrent.TimeUnit/PointingToDeclaration/engine/com.google.android.fhir.sync/-repeat-interval/-repeat-interval.html -$dokka.location:com.google.android.fhir.sync/RepeatInterval/interval/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-repeat-interval/interval.html -$dokka.location:com.google.android.fhir.sync/RepeatInterval/timeUnit/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-repeat-interval/time-unit.html -$dokka.location:com.google.android.fhir.sync/Resolved///PointingToDeclaration/engine/com.google.android.fhir.sync/-resolved/index.html -$dokka.location:com.google.android.fhir.sync/Resolved/Resolved/#org.hl7.fhir.r4.model.Resource/PointingToDeclaration/engine/com.google.android.fhir.sync/-resolved/-resolved.html -$dokka.location:com.google.android.fhir.sync/Resolved/resolved/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-resolved/resolved.html -$dokka.location:com.google.android.fhir.sync/ResourceSyncException///PointingToDeclaration/engine/com.google.android.fhir.sync/-resource-sync-exception/index.html -$dokka.location:com.google.android.fhir.sync/ResourceSyncException/ResourceSyncException/#org.hl7.fhir.r4.model.ResourceType#java.lang.Exception/PointingToDeclaration/engine/com.google.android.fhir.sync/-resource-sync-exception/-resource-sync-exception.html -$dokka.location:com.google.android.fhir.sync/ResourceSyncException/exception/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-resource-sync-exception/exception.html -$dokka.location:com.google.android.fhir.sync/ResourceSyncException/resourceType/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-resource-sync-exception/resource-type.html -$dokka.location:com.google.android.fhir.sync/RetryConfiguration///PointingToDeclaration/engine/com.google.android.fhir.sync/-retry-configuration/index.html -$dokka.location:com.google.android.fhir.sync/RetryConfiguration/RetryConfiguration/#com.google.android.fhir.sync.BackoffCriteria#kotlin.Int/PointingToDeclaration/engine/com.google.android.fhir.sync/-retry-configuration/-retry-configuration.html -$dokka.location:com.google.android.fhir.sync/RetryConfiguration/backoffCriteria/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-retry-configuration/backoff-criteria.html -$dokka.location:com.google.android.fhir.sync/RetryConfiguration/maxRetries/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-retry-configuration/max-retries.html -$dokka.location:com.google.android.fhir.sync/Sync///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync/index.html -$dokka.location:com.google.android.fhir.sync/Sync/getLastSyncTimestamp/#android.content.Context/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync/get-last-sync-timestamp.html -$dokka.location:com.google.android.fhir.sync/Sync/getWorkerInfo/#android.content.Context/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync/get-worker-info.html -$dokka.location:com.google.android.fhir.sync/Sync/gson/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync/gson.html -$dokka.location:com.google.android.fhir.sync/Sync/oneTimeSync/#android.content.Context#com.google.android.fhir.sync.RetryConfiguration?/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync/one-time-sync.html -$dokka.location:com.google.android.fhir.sync/Sync/periodicSync/#android.content.Context#com.google.android.fhir.sync.PeriodicSyncConfiguration/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync/periodic-sync.html -$dokka.location:com.google.android.fhir.sync/SyncDataParams///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-data-params/index.html -$dokka.location:com.google.android.fhir.sync/SyncDataParams/ADDRESS_COUNTRY_KEY/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-data-params/-a-d-d-r-e-s-s_-c-o-u-n-t-r-y_-k-e-y.html -$dokka.location:com.google.android.fhir.sync/SyncDataParams/LAST_UPDATED_KEY/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-data-params/-l-a-s-t_-u-p-d-a-t-e-d_-k-e-y.html -$dokka.location:com.google.android.fhir.sync/SyncDataParams/SORT_KEY/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-data-params/-s-o-r-t_-k-e-y.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Failed///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-failed/index.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Failed/Failed/#kotlin.collections.List[com.google.android.fhir.sync.ResourceSyncException]/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-failed/-failed.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Failed/exceptions/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-failed/exceptions.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Finished///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-finished/index.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Finished/Finished/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-finished/-finished.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Glitch///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/index.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Glitch/Glitch/#kotlin.collections.List[com.google.android.fhir.sync.ResourceSyncException]/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/-glitch.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Glitch/exceptions/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-glitch/exceptions.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.InProgress///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/index.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.InProgress/InProgress/#org.hl7.fhir.r4.model.ResourceType?/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/-in-progress.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.InProgress/resourceType/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-in-progress/resource-type.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Started///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-started/index.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus.Started/Started/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/-started/-started.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus///PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/index.html -$dokka.location:com.google.android.fhir.sync/SyncJobStatus/timestamp/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-sync-job-status/timestamp.html -$dokka.location:com.google.android.fhir.sync/UploadConfiguration///PointingToDeclaration/engine/com.google.android.fhir.sync/-upload-configuration/index.html -$dokka.location:com.google.android.fhir.sync/UploadConfiguration/UploadConfiguration/#kotlin.Int/PointingToDeclaration/engine/com.google.android.fhir.sync/-upload-configuration/-upload-configuration.html -$dokka.location:com.google.android.fhir.sync/UploadConfiguration/uploadBundleSize/#/PointingToDeclaration/engine/com.google.android.fhir.sync/-upload-configuration/upload-bundle-size.html -$dokka.location:com.google.android.fhir////PointingToDeclaration/engine/com.google.android.fhir/index.html -$dokka.location:com.google.android.fhir//dataStore/android.content.Context#/PointingToDeclaration/engine/com.google.android.fhir/data-store.html -$dokka.location:com.google.android.fhir//delete/com.google.android.fhir.FhirEngine#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir/delete.html -$dokka.location:com.google.android.fhir//get/com.google.android.fhir.FhirEngine#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir/get.html -$dokka.location:com.google.android.fhir//getResourceClass/#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir/get-resource-class.html -$dokka.location:com.google.android.fhir//getResourceClass/#org.hl7.fhir.r4.model.ResourceType/PointingToDeclaration/engine/com.google.android.fhir/get-resource-class.html -$dokka.location:com.google.android.fhir//getResourceType/#java.lang.Class[TypeParam(bounds=[org.hl7.fhir.r4.model.Resource])]/PointingToDeclaration/engine/com.google.android.fhir/get-resource-type.html -$dokka.location:com.google.android.fhir//isUploadSuccess/org.hl7.fhir.r4.model.Resource#/PointingToDeclaration/engine/com.google.android.fhir/is-upload-success.html -$dokka.location:com.google.android.fhir//logicalId/org.hl7.fhir.r4.model.Resource#/PointingToDeclaration/engine/com.google.android.fhir/logical-id.html -$dokka.location:com.google.android.fhir//ucumUrl/#/PointingToDeclaration/engine/com.google.android.fhir/ucum-url.html -$dokka.location:com.google.android.fhir/ContentTypes///PointingToDeclaration/engine/com.google.android.fhir/-content-types/index.html -$dokka.location:com.google.android.fhir/ContentTypes/APPLICATION_FHIR_JSON/#/PointingToDeclaration/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-f-h-i-r_-j-s-o-n.html -$dokka.location:com.google.android.fhir/ContentTypes/APPLICATION_JSON_PATCH/#/PointingToDeclaration/engine/com.google.android.fhir/-content-types/-a-p-p-l-i-c-a-t-i-o-n_-j-s-o-n_-p-a-t-c-h.html -$dokka.location:com.google.android.fhir/DatabaseErrorStrategy.RECREATE_AT_OPEN///PointingToDeclaration/engine/com.google.android.fhir/-database-error-strategy/-r-e-c-r-e-a-t-e_-a-t_-o-p-e-n/index.html -$dokka.location:com.google.android.fhir/DatabaseErrorStrategy.UNSPECIFIED///PointingToDeclaration/engine/com.google.android.fhir/-database-error-strategy/-u-n-s-p-e-c-i-f-i-e-d/index.html -$dokka.location:com.google.android.fhir/DatabaseErrorStrategy///PointingToDeclaration/engine/com.google.android.fhir/-database-error-strategy/index.html -$dokka.location:com.google.android.fhir/DatastoreUtil///PointingToDeclaration/engine/com.google.android.fhir/-datastore-util/index.html -$dokka.location:com.google.android.fhir/DatastoreUtil/DatastoreUtil/#android.content.Context/PointingToDeclaration/engine/com.google.android.fhir/-datastore-util/-datastore-util.html -$dokka.location:com.google.android.fhir/DatastoreUtil/readLastSyncTimestamp/#/PointingToDeclaration/engine/com.google.android.fhir/-datastore-util/read-last-sync-timestamp.html -$dokka.location:com.google.android.fhir/DatastoreUtil/writeLastSyncTimestamp/#java.time.OffsetDateTime/PointingToDeclaration/engine/com.google.android.fhir/-datastore-util/write-last-sync-timestamp.html -$dokka.location:com.google.android.fhir/DateProvider///PointingToDeclaration/engine/com.google.android.fhir/-date-provider/index.html -$dokka.location:com.google.android.fhir/DateProvider/clock/#/PointingToDeclaration/engine/com.google.android.fhir/-date-provider/clock.html -$dokka.location:com.google.android.fhir/DateProvider/invoke/#java.time.Instant?/PointingToDeclaration/engine/com.google.android.fhir/-date-provider/invoke.html -$dokka.location:com.google.android.fhir/DateProvider/resetClock/#/PointingToDeclaration/engine/com.google.android.fhir/-date-provider/reset-clock.html -$dokka.location:com.google.android.fhir/FhirEngine///PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/index.html -$dokka.location:com.google.android.fhir/FhirEngine/clearDatabase/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/clear-database.html -$dokka.location:com.google.android.fhir/FhirEngine/count/#com.google.android.fhir.search.Search/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/count.html -$dokka.location:com.google.android.fhir/FhirEngine/create/#kotlin.Array[org.hl7.fhir.r4.model.Resource]/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/create.html -$dokka.location:com.google.android.fhir/FhirEngine/delete/#org.hl7.fhir.r4.model.ResourceType#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/delete.html -$dokka.location:com.google.android.fhir/FhirEngine/get/#org.hl7.fhir.r4.model.ResourceType#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/get.html -$dokka.location:com.google.android.fhir/FhirEngine/getLastSyncTimeStamp/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/get-last-sync-time-stamp.html -$dokka.location:com.google.android.fhir/FhirEngine/getLocalChange/#org.hl7.fhir.r4.model.ResourceType#kotlin.String/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/get-local-change.html -$dokka.location:com.google.android.fhir/FhirEngine/purge/#org.hl7.fhir.r4.model.ResourceType#kotlin.String#kotlin.Boolean/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/purge.html -$dokka.location:com.google.android.fhir/FhirEngine/search/#com.google.android.fhir.search.Search/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/search.html -$dokka.location:com.google.android.fhir/FhirEngine/syncDownload/#com.google.android.fhir.sync.ConflictResolver#kotlin.coroutines.SuspendFunction1[com.google.android.fhir.SyncDownloadContext,kotlinx.coroutines.flow.Flow[kotlin.collections.List[org.hl7.fhir.r4.model.Resource]]]/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/sync-download.html -$dokka.location:com.google.android.fhir/FhirEngine/syncUpload/#kotlin.coroutines.SuspendFunction1[kotlin.collections.List[com.google.android.fhir.LocalChange],kotlinx.coroutines.flow.Flow[kotlin.Pair[com.google.android.fhir.db.impl.dao.LocalChangeToken,org.hl7.fhir.r4.model.Resource]]]/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/sync-upload.html -$dokka.location:com.google.android.fhir/FhirEngine/update/#kotlin.Array[org.hl7.fhir.r4.model.Resource]/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine/update.html -$dokka.location:com.google.android.fhir/FhirEngineConfiguration///PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-configuration/index.html -$dokka.location:com.google.android.fhir/FhirEngineConfiguration/FhirEngineConfiguration/#kotlin.Boolean#com.google.android.fhir.DatabaseErrorStrategy#com.google.android.fhir.ServerConfiguration?#kotlin.Boolean/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-configuration/-fhir-engine-configuration.html -$dokka.location:com.google.android.fhir/FhirEngineConfiguration/databaseErrorStrategy/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-configuration/database-error-strategy.html -$dokka.location:com.google.android.fhir/FhirEngineConfiguration/enableEncryptionIfSupported/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-configuration/enable-encryption-if-supported.html -$dokka.location:com.google.android.fhir/FhirEngineConfiguration/serverConfiguration/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-configuration/server-configuration.html -$dokka.location:com.google.android.fhir/FhirEngineConfiguration/testMode/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-configuration/test-mode.html -$dokka.location:com.google.android.fhir/FhirEngineProvider///PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-provider/index.html -$dokka.location:com.google.android.fhir/FhirEngineProvider/cleanup/#/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-provider/cleanup.html -$dokka.location:com.google.android.fhir/FhirEngineProvider/getInstance/#android.content.Context/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-provider/get-instance.html -$dokka.location:com.google.android.fhir/FhirEngineProvider/init/#com.google.android.fhir.FhirEngineConfiguration/PointingToDeclaration/engine/com.google.android.fhir/-fhir-engine-provider/init.html -$dokka.location:com.google.android.fhir/LocalChange.Type.Companion///PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/-companion/index.html -$dokka.location:com.google.android.fhir/LocalChange.Type.Companion/from/#kotlin.Int/PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/-companion/from.html -$dokka.location:com.google.android.fhir/LocalChange.Type.DELETE///PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/-d-e-l-e-t-e/index.html -$dokka.location:com.google.android.fhir/LocalChange.Type.INSERT///PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/-i-n-s-e-r-t/index.html -$dokka.location:com.google.android.fhir/LocalChange.Type.UPDATE///PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/-u-p-d-a-t-e/index.html -$dokka.location:com.google.android.fhir/LocalChange.Type///PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/index.html -$dokka.location:com.google.android.fhir/LocalChange.Type/value/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/-type/value.html -$dokka.location:com.google.android.fhir/LocalChange///PointingToDeclaration/engine/com.google.android.fhir/-local-change/index.html -$dokka.location:com.google.android.fhir/LocalChange/LocalChange/#kotlin.String#kotlin.String#kotlin.String?#kotlin.String#com.google.android.fhir.LocalChange.Type#kotlin.String#com.google.android.fhir.db.impl.dao.LocalChangeToken/PointingToDeclaration/engine/com.google.android.fhir/-local-change/-local-change.html -$dokka.location:com.google.android.fhir/LocalChange/payload/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/payload.html -$dokka.location:com.google.android.fhir/LocalChange/resourceId/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/resource-id.html -$dokka.location:com.google.android.fhir/LocalChange/resourceType/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/resource-type.html -$dokka.location:com.google.android.fhir/LocalChange/timestamp/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/timestamp.html -$dokka.location:com.google.android.fhir/LocalChange/token/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/token.html -$dokka.location:com.google.android.fhir/LocalChange/type/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/type.html -$dokka.location:com.google.android.fhir/LocalChange/versionId/#/PointingToDeclaration/engine/com.google.android.fhir/-local-change/version-id.html -$dokka.location:com.google.android.fhir/MediaTypes///PointingToDeclaration/engine/com.google.android.fhir/-media-types/index.html -$dokka.location:com.google.android.fhir/MediaTypes/MEDIA_TYPE_FHIR_JSON/#/PointingToDeclaration/engine/com.google.android.fhir/-media-types/-m-e-d-i-a_-t-y-p-e_-f-h-i-r_-j-s-o-n.html -$dokka.location:com.google.android.fhir/NetworkConfiguration///PointingToDeclaration/engine/com.google.android.fhir/-network-configuration/index.html -$dokka.location:com.google.android.fhir/NetworkConfiguration/NetworkConfiguration/#kotlin.Long#kotlin.Long#kotlin.Long/PointingToDeclaration/engine/com.google.android.fhir/-network-configuration/-network-configuration.html -$dokka.location:com.google.android.fhir/NetworkConfiguration/connectionTimeOut/#/PointingToDeclaration/engine/com.google.android.fhir/-network-configuration/connection-time-out.html -$dokka.location:com.google.android.fhir/NetworkConfiguration/readTimeOut/#/PointingToDeclaration/engine/com.google.android.fhir/-network-configuration/read-time-out.html -$dokka.location:com.google.android.fhir/NetworkConfiguration/writeTimeOut/#/PointingToDeclaration/engine/com.google.android.fhir/-network-configuration/write-time-out.html -$dokka.location:com.google.android.fhir/OffsetDateTimeTypeAdapter///PointingToDeclaration/engine/com.google.android.fhir/-offset-date-time-type-adapter/index.html -$dokka.location:com.google.android.fhir/OffsetDateTimeTypeAdapter/OffsetDateTimeTypeAdapter/#/PointingToDeclaration/engine/com.google.android.fhir/-offset-date-time-type-adapter/-offset-date-time-type-adapter.html -$dokka.location:com.google.android.fhir/OffsetDateTimeTypeAdapter/read/#com.google.gson.stream.JsonReader/PointingToDeclaration/engine/com.google.android.fhir/-offset-date-time-type-adapter/read.html -$dokka.location:com.google.android.fhir/OffsetDateTimeTypeAdapter/write/#com.google.gson.stream.JsonWriter#java.time.OffsetDateTime/PointingToDeclaration/engine/com.google.android.fhir/-offset-date-time-type-adapter/write.html -$dokka.location:com.google.android.fhir/ServerConfiguration///PointingToDeclaration/engine/com.google.android.fhir/-server-configuration/index.html -$dokka.location:com.google.android.fhir/ServerConfiguration/ServerConfiguration/#kotlin.String#com.google.android.fhir.NetworkConfiguration#com.google.android.fhir.sync.Authenticator?#com.google.android.fhir.sync.remote.HttpLogger/PointingToDeclaration/engine/com.google.android.fhir/-server-configuration/-server-configuration.html -$dokka.location:com.google.android.fhir/ServerConfiguration/authenticator/#/PointingToDeclaration/engine/com.google.android.fhir/-server-configuration/authenticator.html -$dokka.location:com.google.android.fhir/ServerConfiguration/baseUrl/#/PointingToDeclaration/engine/com.google.android.fhir/-server-configuration/base-url.html -$dokka.location:com.google.android.fhir/ServerConfiguration/httpLogger/#/PointingToDeclaration/engine/com.google.android.fhir/-server-configuration/http-logger.html -$dokka.location:com.google.android.fhir/ServerConfiguration/networkConfiguration/#/PointingToDeclaration/engine/com.google.android.fhir/-server-configuration/network-configuration.html -$dokka.location:com.google.android.fhir/SyncDownloadContext///PointingToDeclaration/engine/com.google.android.fhir/-sync-download-context/index.html -$dokka.location:com.google.android.fhir/SyncDownloadContext/getLatestTimestampFor/#org.hl7.fhir.r4.model.ResourceType/PointingToDeclaration/engine/com.google.android.fhir/-sync-download-context/get-latest-timestamp-for.html -com.google.android.fhir -com.google.android.fhir.db -com.google.android.fhir.db.impl -com.google.android.fhir.db.impl.dao -com.google.android.fhir.index -com.google.android.fhir.index.entities -com.google.android.fhir.search -com.google.android.fhir.search.filter -com.google.android.fhir.search.query -com.google.android.fhir.sync -com.google.android.fhir.sync.download -com.google.android.fhir.sync.remote -com.google.android.fhir.sync.upload - diff --git a/docs/engine/images/anchor-copy-button.svg b/docs/engine/images/anchor-copy-button.svg deleted file mode 100644 index bab9d747ff..0000000000 --- a/docs/engine/images/anchor-copy-button.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/docs/engine/images/arrow_down.svg b/docs/engine/images/arrow_down.svg deleted file mode 100644 index 89e7df4710..0000000000 --- a/docs/engine/images/arrow_down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/engine/images/copy-icon.svg b/docs/engine/images/copy-icon.svg deleted file mode 100644 index 61440f0a40..0000000000 --- a/docs/engine/images/copy-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/engine/images/copy-successful-icon.svg b/docs/engine/images/copy-successful-icon.svg deleted file mode 100644 index 1865f739b0..0000000000 --- a/docs/engine/images/copy-successful-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/engine/images/docs_logo.svg b/docs/engine/images/docs_logo.svg deleted file mode 100644 index 7c1e3ae8ea..0000000000 --- a/docs/engine/images/docs_logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/engine/images/footer-go-to-link.svg b/docs/engine/images/footer-go-to-link.svg deleted file mode 100644 index 0137e22313..0000000000 --- a/docs/engine/images/footer-go-to-link.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/engine/images/go-to-top-icon.svg b/docs/engine/images/go-to-top-icon.svg deleted file mode 100644 index d987f3eadc..0000000000 --- a/docs/engine/images/go-to-top-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/docs/engine/images/logo-icon.svg b/docs/engine/images/logo-icon.svg deleted file mode 100644 index 1b3b3670e0..0000000000 --- a/docs/engine/images/logo-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/engine/index.html b/docs/engine/index.html deleted file mode 100644 index 6f0ec2fc81..0000000000 --- a/docs/engine/index.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - engine - - -
-
- - -
-
-
-
-
-
- -
-

engine

-
-

Packages

-
-
-
-
-
com.google.android.fhir -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.db -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.db.impl -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.db.impl.dao -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.index -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.index.entities -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.search -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.search.filter -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.search.query -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.sync -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.sync.download -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.sync.remote -
Link copied to clipboard
-
-
-
-
-
-
- -
-
-
-
com.google.android.fhir.sync.upload -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/engine/navigation.html b/docs/engine/navigation.html deleted file mode 100644 index 3cd3a539c1..0000000000 --- a/docs/engine/navigation.html +++ /dev/null @@ -1,289 +0,0 @@ -
- - - - - - - -
- - -
- -
- -
- -
-
- -
- -
-
- -
-
-
- -
- -
- -
-
- -
-
- -
- - -
- - - - - - -
- diff --git a/docs/engine/scripts/clipboard.js b/docs/engine/scripts/clipboard.js deleted file mode 100644 index b00ce246ef..0000000000 --- a/docs/engine/scripts/clipboard.js +++ /dev/null @@ -1,52 +0,0 @@ -window.addEventListener('load', () => { - document.querySelectorAll('span.copy-icon').forEach(element => { - element.addEventListener('click', (el) => copyElementsContentToClipboard(element)); - }) - - document.querySelectorAll('span.anchor-icon').forEach(element => { - element.addEventListener('click', (el) => { - if(element.hasAttribute('pointing-to')){ - const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to') - copyTextToClipboard(element, location) - } - }); - }) -}) - -const copyElementsContentToClipboard = (element) => { - const selection = window.getSelection(); - const range = document.createRange(); - range.selectNodeContents(element.parentNode.parentNode); - selection.removeAllRanges(); - selection.addRange(range); - - copyAndShowPopup(element, () => selection.removeAllRanges()) -} - -const copyTextToClipboard = (element, text) => { - var textarea = document.createElement("textarea"); - textarea.textContent = text; - textarea.style.position = "fixed"; - document.body.appendChild(textarea); - textarea.select(); - - copyAndShowPopup(element, () => document.body.removeChild(textarea)) -} - -const copyAndShowPopup = (element, after) => { - try { - document.execCommand('copy'); - element.nextElementSibling.classList.add('active-popup'); - setTimeout(() => { - element.nextElementSibling.classList.remove('active-popup'); - }, 1200); - } catch (e) { - console.error('Failed to write to clipboard:', e) - } - finally { - if(after) after() - } -} - -const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0] - diff --git a/docs/engine/scripts/main.js b/docs/engine/scripts/main.js deleted file mode 100644 index 029fa9eb88..0000000000 --- a/docs/engine/scripts/main.js +++ /dev/null @@ -1,67 +0,0 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=390)}([function(e,t,n){e.exports=n(264)()},function(e,t,n){"use strict";e.exports=n(239)},function(e,t,n){var r; -/*! - Copyright (c) 2017 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;to;)Q(e,n=r[o++],t[n]);return e},X=function(e){var t=F.call(this,e=x(e,!0));return!(this===W&&o(H,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(H,e)||o(this,A)&&this[A][e])||t)},J=function(e,t){if(e=w(e),t=x(t,!0),e!==W||!o(H,t)||o(U,t)){var n=I(e,t);return!n||!o(H,t)||o(e,A)&&e[A][t]||(n.enumerable=!0),n}},Z=function(e){for(var t,n=z(w(e)),r=[],i=0;n.length>i;)o(H,t=n[i++])||t==A||t==c||r.push(t);return r},ee=function(e){for(var t,n=e===W,r=z(n?U:w(e)),i=[],a=0;r.length>a;)!o(H,t=r[a++])||n&&!o(W,t)||i.push(H[t]);return i};B||(l((R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(n){this===W&&t.call(U,n),o(this,A)&&o(this[A],e)&&(this[A][e]=!1),K(this,e,S(1,n))};return i&&G&&K(W,e,{configurable:!0,set:t}),q(e)}).prototype,"toString",(function(){return this._k})),E.f=J,C.f=Q,n(114).f=O.f=Z,n(95).f=X,T.f=ee,i&&!n(111)&&l(W,"propertyIsEnumerable",X,!0),h.f=function(e){return q(d(e))}),a(a.G+a.W+a.F*!B,{Symbol:R});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)d(te[ne++]);for(var re=P(d.store),oe=0;re.length>oe;)v(re[oe++]);a(a.S+a.F*!B,"Symbol",{for:function(e){return o(D,e+="")?D[e]:D[e]=R(e)},keyFor:function(e){if(!$(e))throw TypeError(e+" is not a symbol!");for(var t in D)if(D[t]===e)return t},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!B,"Object",{create:function(e,t){return void 0===t?k(e):Y(k(e),t)},defineProperty:Q,defineProperties:Y,getOwnPropertyDescriptor:J,getOwnPropertyNames:Z,getOwnPropertySymbols:ee});var ie=u((function(){T.f(1)}));a(a.S+a.F*ie,"Object",{getOwnPropertySymbols:function(e){return T.f(_(e))}}),M&&a(a.S+a.F*(!B||u((function(){var e=R();return"[null]"!=N([e])||"{}"!=N({a:e})||"{}"!=N(Object(e))}))),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(b(t)||void 0!==e)&&!$(e))return m(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!$(t))return t}),r[1]=t,N.apply(M,r)}}),R.prototype[L]||n(59)(R.prototype,L,R.prototype.valueOf),f(R,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(10);r(r.S+r.F*!n(30),"Object",{defineProperty:n(39).f})},function(e,t,n){"use strict";n(257);var r=n(27),o=n(135),i=n(30),a=/./.toString,l=function(e){n(42)(RegExp.prototype,"toString",e,!0)};n(31)((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?l((function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!i&&e instanceof RegExp?o.call(e):void 0)})):"toString"!=a.name&&l((function(){return a.call(this)}))},function(e,t,n){var r=Date.prototype,o=r.toString,i=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(42)(r,"toString",(function(){var e=i.call(this);return e==e?o.call(this):"Invalid Date"}))},function(e,t,n){n(182)("asyncIterator")},function(e,t,n){var r=n(32),o=n(79),i=n(59),a=n(42),l=n(80),c=function(e,t,n){var u,s,f,p,d=e&c.F,h=e&c.G,v=e&c.S,g=e&c.P,m=e&c.B,y=h?r:v?r[t]||(r[t]={}):(r[t]||{}).prototype,b=h?o:o[t]||(o[t]={}),_=b.prototype||(b.prototype={});for(u in h&&(n=t),n)f=((s=!d&&y&&void 0!==y[u])?y:n)[u],p=m&&s?l(f,r):g&&"function"==typeof f?l(Function.call,f):f,y&&a(y,u,f,e&c.U),b[u]!=f&&i(b,u,p),g&&_[u]!=f&&(_[u]=f)};r.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){for(var r=n(12),o=n(70),i=n(42),a=n(32),l=n(59),c=n(96),u=n(25),s=u("iterator"),f=u("toStringTag"),p=c.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(d),v=0;v=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t,n){var r=n(10);r(r.S,"Object",{create:n(83)})},function(e,t,n){var r=n(10),o=n(83),i=n(81),a=n(27),l=n(29),c=n(31),u=n(184),s=(n(32).Reflect||{}).construct,f=c((function(){function e(){}return!(s((function(){}),[],e)instanceof e)})),p=!c((function(){s((function(){}))}));r(r.S+r.F*(f||p),"Reflect",{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!f)return s(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(u.apply(e,r))}var c=n.prototype,d=o(l(c)?c:Object.prototype),h=Function.apply.call(e,d,t);return l(h)?h:d}})},function(e,t,n){var r=n(10);r(r.S,"Object",{setPrototypeOf:n(180).set})},function(e,t,n){var r=n(54),o=n(70);n(252)("keys",(function(){return function(e){return o(r(e))}}))},function(e,t,n){"use strict";var r=n(10),o=n(130)(!1),i=[].indexOf,a=!!i&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(a||!n(72)(i)),"Array",{indexOf:function(e){return a?i.apply(this,arguments)||0:o(this,e,arguments[1])}})},function(e,t,n){var r=n(26),o=n(266);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(10);r(r.S+r.F,"Object",{assign:n(185)})},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,l=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(l),"/*# ".concat(c," */")),i=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(i).concat([o]).join("\n")}var a,l,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(r)for(var i=0;i=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})}))},function(e,t,n){var r=n(35),o=n(28),i=n(98),a=n(74),l=n(75),c=function(e,t,n){var u,s,f,p=e&c.F,d=e&c.G,h=e&c.S,v=e&c.P,g=e&c.B,m=e&c.W,y=d?o:o[t]||(o[t]={}),b=y.prototype,_=d?r:h?r[t]:(r[t]||{}).prototype;for(u in d&&(n=t),n)(s=!p&&_&&void 0!==_[u])&&l(y,u)||(f=s?_[u]:n[u],y[u]=d&&"function"!=typeof _[u]?n[u]:g&&s?i(f,r):m&&_[u]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):v&&"function"==typeof f?i(Function.call,f):f,v&&((y.virtual||(y.virtual={}))[u]=f,e&c.R&&b&&!b[u]&&a(b,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var r=n(26),o=n(332);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(113),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(71);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";var r=n(10),o=n(62)(1);r(r.P+r.F*!n(72)([].map,!0),"Array",{map:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(64);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){e.exports=!n(85)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(80),o=n(10),i=n(54),a=n(189),l=n(190),c=n(53),u=n(174),s=n(191);o(o.S+o.F*!n(192)((function(e){Array.from(e)})),"Array",{from:function(e){var t,n,o,f,p=i(e),d="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,g=void 0!==v,m=0,y=s(p);if(g&&(v=r(v,h>2?arguments[2]:void 0,2)),null==y||d==Array&&l(y))for(n=new d(t=c(p.length));t>m;m++)u(n,m,g?v(p[m],m):p[m]);else for(f=y.call(p),n=new d;!(o=f.next()).done;m++)u(n,m,g?a(f,v,[o.value,m],!0):o.value);return n.length=m,n}})},function(e,t,n){var r=n(39),o=n(91);e.exports=n(30)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(112),o=n(71);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(10),o=n(62)(0),i=n(72)([].forEach,!0);r(r.P+r.F*!i,"Array",{forEach:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(80),o=n(112),i=n(54),a=n(53),l=n(259);e.exports=function(e,t){var n=1==e,c=2==e,u=3==e,s=4==e,f=6==e,p=5==e||f,d=t||l;return function(t,l,h){for(var v,g,m=i(t),y=o(m),b=r(l,h,3),_=a(y.length),w=0,x=n?d(t,_):c?d(t,0):void 0;_>w;w++)if((p||w in y)&&(g=b(v=y[w],w,m),e))if(n)x[w]=g;else if(g)switch(e){case 3:return!0;case 5:return v;case 6:return w;case 2:x.push(v)}else if(s)return!1;return f?-1:u||s?s:x}}},function(e,t,n){var r=n(56),o=n(200),i=n(147),a=Object.defineProperty;t.f=n(57)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports={default:n(282),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(304)),o=a(n(308)),i=a(n(205));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,i.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){(function(e,r){var o; -/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(){var i="Expected a function",a="__lodash_placeholder__",l=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],c="[object Arguments]",u="[object Array]",s="[object Boolean]",f="[object Date]",p="[object Error]",d="[object Function]",h="[object GeneratorFunction]",v="[object Map]",g="[object Number]",m="[object Object]",y="[object RegExp]",b="[object Set]",_="[object String]",w="[object Symbol]",x="[object WeakMap]",S="[object ArrayBuffer]",k="[object DataView]",O="[object Float32Array]",E="[object Float64Array]",T="[object Int8Array]",C="[object Int16Array]",P="[object Int32Array]",I="[object Uint8Array]",j="[object Uint16Array]",z="[object Uint32Array]",R=/\b__p \+= '';/g,M=/\b(__p \+=) '' \+/g,N=/(__e\(.*?\)|\b__t\)) \+\n'';/g,A=/&(?:amp|lt|gt|quot|#39);/g,L=/[&<>"']/g,F=RegExp(A.source),D=RegExp(L.source),H=/<%-([\s\S]+?)%>/g,U=/<%([\s\S]+?)%>/g,W=/<%=([\s\S]+?)%>/g,B=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,V=/^\w*$/,G=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,K=/[\\^$.*+?()[\]{}|]/g,q=RegExp(K.source),$=/^\s+|\s+$/g,Q=/^\s+/,Y=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Z=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,oe=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,le=/^0o[0-7]+$/i,ce=/^(?:0|[1-9]\d*)$/,ue=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,se=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",he="[\\ud800-\\udfff]",ve="["+de+"]",ge="["+pe+"]",me="\\d+",ye="[\\u2700-\\u27bf]",be="[a-z\\xdf-\\xf6\\xf8-\\xff]",_e="[^\\ud800-\\udfff"+de+me+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",we="\\ud83c[\\udffb-\\udfff]",xe="[^\\ud800-\\udfff]",Se="(?:\\ud83c[\\udde6-\\uddff]){2}",ke="[\\ud800-\\udbff][\\udc00-\\udfff]",Oe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ee="(?:"+be+"|"+_e+")",Te="(?:"+Oe+"|"+_e+")",Ce="(?:"+ge+"|"+we+")"+"?",Pe="[\\ufe0e\\ufe0f]?"+Ce+("(?:\\u200d(?:"+[xe,Se,ke].join("|")+")[\\ufe0e\\ufe0f]?"+Ce+")*"),Ie="(?:"+[ye,Se,ke].join("|")+")"+Pe,je="(?:"+[xe+ge+"?",ge,Se,ke,he].join("|")+")",ze=RegExp("['’]","g"),Re=RegExp(ge,"g"),Me=RegExp(we+"(?="+we+")|"+je+Pe,"g"),Ne=RegExp([Oe+"?"+be+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ve,Oe,"$"].join("|")+")",Te+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ve,Oe+Ee,"$"].join("|")+")",Oe+"?"+Ee+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Oe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",me,Ie].join("|"),"g"),Ae=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\ufe0e\\ufe0f]"),Le=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Fe=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],De=-1,He={};He[O]=He[E]=He[T]=He[C]=He[P]=He[I]=He["[object Uint8ClampedArray]"]=He[j]=He[z]=!0,He[c]=He[u]=He[S]=He[s]=He[k]=He[f]=He[p]=He[d]=He[v]=He[g]=He[m]=He[y]=He[b]=He[_]=He[x]=!1;var Ue={};Ue[c]=Ue[u]=Ue[S]=Ue[k]=Ue[s]=Ue[f]=Ue[O]=Ue[E]=Ue[T]=Ue[C]=Ue[P]=Ue[v]=Ue[g]=Ue[m]=Ue[y]=Ue[b]=Ue[_]=Ue[w]=Ue[I]=Ue["[object Uint8ClampedArray]"]=Ue[j]=Ue[z]=!0,Ue[p]=Ue[d]=Ue[x]=!1;var We={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Be=parseFloat,Ve=parseInt,Ge="object"==typeof e&&e&&e.Object===Object&&e,Ke="object"==typeof self&&self&&self.Object===Object&&self,qe=Ge||Ke||Function("return this")(),$e=t&&!t.nodeType&&t,Qe=$e&&"object"==typeof r&&r&&!r.nodeType&&r,Ye=Qe&&Qe.exports===$e,Xe=Ye&&Ge.process,Je=function(){try{var e=Qe&&Qe.require&&Qe.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(e){}}(),Ze=Je&&Je.isArrayBuffer,et=Je&&Je.isDate,tt=Je&&Je.isMap,nt=Je&&Je.isRegExp,rt=Je&&Je.isSet,ot=Je&&Je.isTypedArray;function it(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function at(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o-1}function pt(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function Mt(e,t){for(var n=e.length;n--&&wt(t,e[n],0)>-1;);return n}function Nt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var At=Et({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Lt=Et({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ft(e){return"\\"+We[e]}function Dt(e){return Ae.test(e)}function Ht(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Ut(e,t){return function(n){return e(t(n))}}function Wt(e,t){for(var n=-1,r=e.length,o=0,i=[];++n",""":'"',"'":"'"});var $t=function e(t){var n,r=(t=null==t?qe:$t.defaults(qe.Object(),t,$t.pick(qe,Fe))).Array,o=t.Date,pe=t.Error,de=t.Function,he=t.Math,ve=t.Object,ge=t.RegExp,me=t.String,ye=t.TypeError,be=r.prototype,_e=de.prototype,we=ve.prototype,xe=t["__core-js_shared__"],Se=_e.toString,ke=we.hasOwnProperty,Oe=0,Ee=(n=/[^.]+$/.exec(xe&&xe.keys&&xe.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Te=we.toString,Ce=Se.call(ve),Pe=qe._,Ie=ge("^"+Se.call(ke).replace(K,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),je=Ye?t.Buffer:void 0,Me=t.Symbol,Ae=t.Uint8Array,We=je?je.allocUnsafe:void 0,Ge=Ut(ve.getPrototypeOf,ve),Ke=ve.create,$e=we.propertyIsEnumerable,Qe=be.splice,Xe=Me?Me.isConcatSpreadable:void 0,Je=Me?Me.iterator:void 0,yt=Me?Me.toStringTag:void 0,Et=function(){try{var e=ei(ve,"defineProperty");return e({},"",{}),e}catch(e){}}(),Qt=t.clearTimeout!==qe.clearTimeout&&t.clearTimeout,Yt=o&&o.now!==qe.Date.now&&o.now,Xt=t.setTimeout!==qe.setTimeout&&t.setTimeout,Jt=he.ceil,Zt=he.floor,en=ve.getOwnPropertySymbols,tn=je?je.isBuffer:void 0,nn=t.isFinite,rn=be.join,on=Ut(ve.keys,ve),an=he.max,ln=he.min,cn=o.now,un=t.parseInt,sn=he.random,fn=be.reverse,pn=ei(t,"DataView"),dn=ei(t,"Map"),hn=ei(t,"Promise"),vn=ei(t,"Set"),gn=ei(t,"WeakMap"),mn=ei(ve,"create"),yn=gn&&new gn,bn={},_n=Ti(pn),wn=Ti(dn),xn=Ti(hn),Sn=Ti(vn),kn=Ti(gn),On=Me?Me.prototype:void 0,En=On?On.valueOf:void 0,Tn=On?On.toString:void 0;function Cn(e){if(Va(e)&&!Ra(e)&&!(e instanceof zn)){if(e instanceof jn)return e;if(ke.call(e,"__wrapped__"))return Ci(e)}return new jn(e)}var Pn=function(){function e(){}return function(t){if(!Ba(t))return{};if(Ke)return Ke(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function In(){}function jn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function zn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Rn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Yn(e,t,n,r,o,i){var a,l=1&t,u=2&t,p=4&t;if(n&&(a=o?n(e,r,o,i):n(e)),void 0!==a)return a;if(!Ba(e))return e;var x=Ra(e);if(x){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&ke.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!l)return yo(e,a)}else{var R=ri(e),M=R==d||R==h;if(La(e))return fo(e,l);if(R==m||R==c||M&&!o){if(a=u||M?{}:ii(e),!l)return u?function(e,t){return bo(e,ni(e),t)}(e,function(e,t){return e&&bo(t,wl(t),e)}(a,e)):function(e,t){return bo(e,ti(e),t)}(e,Kn(a,e))}else{if(!Ue[R])return o?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case S:return po(e);case s:case f:return new r(+e);case k:return function(e,t){var n=t?po(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case O:case E:case T:case C:case P:case I:case"[object Uint8ClampedArray]":case j:case z:return ho(e,n);case v:return new r;case g:case _:return new r(e);case y:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case b:return new r;case w:return o=e,En?ve(En.call(o)):{}}var o}(e,R,l)}}i||(i=new Ln);var N=i.get(e);if(N)return N;i.set(e,a),Qa(e)?e.forEach((function(r){a.add(Yn(r,t,n,r,e,i))})):Ga(e)&&e.forEach((function(r,o){a.set(o,Yn(r,t,n,o,e,i))}));var A=x?void 0:(p?u?qo:Ko:u?wl:_l)(e);return lt(A||e,(function(r,o){A&&(r=e[o=r]),Bn(a,o,Yn(r,t,n,o,e,i))})),a}function Xn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var o=n[r],i=t[o],a=e[o];if(void 0===a&&!(o in e)||!i(a))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new ye(i);return _i((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,r){var o=-1,i=ft,a=!0,l=e.length,c=[],u=t.length;if(!l)return c;n&&(t=dt(t,It(n))),r?(i=pt,a=!1):t.length>=200&&(i=zt,a=!1,t=new An(t));e:for(;++o-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Vn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Nn.prototype.clear=function(){this.size=0,this.__data__={hash:new Rn,map:new(dn||Mn),string:new Rn}},Nn.prototype.delete=function(e){var t=Jo(this,e).delete(e);return this.size-=t?1:0,t},Nn.prototype.get=function(e){return Jo(this,e).get(e)},Nn.prototype.has=function(e){return Jo(this,e).has(e)},Nn.prototype.set=function(e,t){var n=Jo(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},An.prototype.add=An.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},An.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Mn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Nn(r)}return n.set(e,t),this.size=n.size,this};var er=xo(cr),tr=xo(ur,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,o){return n=!!t(e,r,o)})),n}function rr(e,t,n){for(var r=-1,o=e.length;++r0&&n(l)?t>1?ir(l,t-1,n,r,o):ht(o,l):r||(o[o.length]=l)}return o}var ar=So(),lr=So(!0);function cr(e,t){return e&&ar(e,t,_l)}function ur(e,t){return e&&lr(e,t,_l)}function sr(e,t){return st(t,(function(t){return Ha(e[t])}))}function fr(e,t){for(var n=0,r=(t=lo(t,e)).length;null!=e&&nt}function vr(e,t){return null!=e&&ke.call(e,t)}function gr(e,t){return null!=e&&t in ve(e)}function mr(e,t,n){for(var o=n?pt:ft,i=e[0].length,a=e.length,l=a,c=r(a),u=1/0,s=[];l--;){var f=e[l];l&&t&&(f=dt(f,It(t))),u=ln(f.length,u),c[l]=!n&&(t||i>=120&&f.length>=120)?new An(l&&f):void 0}f=e[0];var p=-1,d=c[0];e:for(;++p=l)return c;var u=n[r];return c*("desc"==u?-1:1)}}return e.index-t.index}(e,t,n)}))}function Rr(e,t,n){for(var r=-1,o=t.length,i={};++r-1;)l!==e&&Qe.call(l,c,1),Qe.call(e,c,1);return e}function Nr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;li(o)?Qe.call(e,o,1):Zr(e,o)}}return e}function Ar(e,t){return e+Zt(sn()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Zt(t/2))&&(e+=e)}while(t);return n}function Fr(e,t){return wi(vi(e,t,Kl),e+"")}function Dr(e){return Dn(Pl(e))}function Hr(e,t){var n=Pl(e);return ki(n,Qn(t,0,n.length))}function Ur(e,t,n,r){if(!Ba(e))return e;for(var o=-1,i=(t=lo(t,e)).length,a=i-1,l=e;null!=l&&++oi?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=r(i);++o>>1,a=e[i];null!==a&&!Xa(a)&&(n?a<=t:a=200){var u=t?null:Fo(e);if(u)return Bt(u);a=!1,o=zt,c=new An}else c=t?[]:l;e:for(;++r=r?e:Gr(e,t,n)}var so=Qt||function(e){return qe.clearTimeout(e)};function fo(e,t){if(t)return e.slice();var n=e.length,r=We?We(n):new e.constructor(n);return e.copy(r),r}function po(e){var t=new e.constructor(e.byteLength);return new Ae(t).set(new Ae(e)),t}function ho(e,t){var n=t?po(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function vo(e,t){if(e!==t){var n=void 0!==e,r=null===e,o=e==e,i=Xa(e),a=void 0!==t,l=null===t,c=t==t,u=Xa(t);if(!l&&!u&&!i&&e>t||i&&a&&c&&!l&&!u||r&&a&&c||!n&&c||!o)return 1;if(!r&&!i&&!u&&e1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&ci(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=ve(t);++r-1?o[i?t[a]:a]:void 0}}function Co(e){return Go((function(t){var n=t.length,r=n,o=jn.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new ye(i);if(o&&!l&&"wrapper"==Qo(a))var l=new jn([],!0)}for(r=l?r:n;++r1&&b.reverse(),f&&ul))return!1;var u=i.get(e),s=i.get(t);if(u&&s)return u==t&&s==e;var f=-1,p=!0,d=2&n?new An:void 0;for(i.set(e,t),i.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return lt(l,(function(n){var r="_."+n[0];t&n[1]&&!ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(J);return t?t[1].split(Z):[]}(r),n)))}function Si(e){var t=0,n=0;return function(){var r=cn(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function ki(e,t){var n=-1,r=e.length,o=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,$i(e,n)}));function ta(e){var t=Cn(e);return t.__chain__=!0,t}function na(e,t){return t(e)}var ra=Go((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,o=function(t){return $n(t,e)};return!(t>1||this.__actions__.length)&&r instanceof zn&&li(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:na,args:[o],thisArg:void 0}),new jn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(o)}));var oa=_o((function(e,t,n){ke.call(e,n)?++e[n]:qn(e,n,1)}));var ia=To(zi),aa=To(Ri);function la(e,t){return(Ra(e)?lt:er)(e,Xo(t,3))}function ca(e,t){return(Ra(e)?ct:tr)(e,Xo(t,3))}var ua=_o((function(e,t,n){ke.call(e,n)?e[n].push(t):qn(e,n,[t])}));var sa=Fr((function(e,t,n){var o=-1,i="function"==typeof t,a=Na(e)?r(e.length):[];return er(e,(function(e){a[++o]=i?it(t,e,n):yr(e,t,n)})),a})),fa=_o((function(e,t,n){qn(e,n,t)}));function pa(e,t){return(Ra(e)?dt:Tr)(e,Xo(t,3))}var da=_o((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ha=Fr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ci(e,t[0],t[1])?t=[]:n>2&&ci(t[0],t[1],t[2])&&(t=[t[0]]),zr(e,ir(t,1),[])})),va=Yt||function(){return qe.Date.now()};function ga(e,t,n){return t=n?void 0:t,Ho(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function ma(e,t){var n;if("function"!=typeof t)throw new ye(i);return e=rl(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var ya=Fr((function(e,t,n){var r=1;if(n.length){var o=Wt(n,Yo(ya));r|=32}return Ho(e,r,t,n,o)})),ba=Fr((function(e,t,n){var r=3;if(n.length){var o=Wt(n,Yo(ba));r|=32}return Ho(t,r,e,n,o)}));function _a(e,t,n){var r,o,a,l,c,u,s=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new ye(i);function h(t){var n=r,i=o;return r=o=void 0,s=t,l=e.apply(i,n)}function v(e){return s=e,c=_i(m,t),f?h(e):l}function g(e){var n=e-u;return void 0===u||n>=t||n<0||p&&e-s>=a}function m(){var e=va();if(g(e))return y(e);c=_i(m,function(e){var n=t-(e-u);return p?ln(n,a-(e-s)):n}(e))}function y(e){return c=void 0,d&&r?h(e):(r=o=void 0,l)}function b(){var e=va(),n=g(e);if(r=arguments,o=this,u=e,n){if(void 0===c)return v(u);if(p)return so(c),c=_i(m,t),h(u)}return void 0===c&&(c=_i(m,t)),l}return t=il(t)||0,Ba(n)&&(f=!!n.leading,a=(p="maxWait"in n)?an(il(n.maxWait)||0,t):a,d="trailing"in n?!!n.trailing:d),b.cancel=function(){void 0!==c&&so(c),s=0,r=u=o=c=void 0},b.flush=function(){return void 0===c?l:y(va())},b}var wa=Fr((function(e,t){return Jn(e,1,t)})),xa=Fr((function(e,t,n){return Jn(e,il(t)||0,n)}));function Sa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ye(i);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(Sa.Cache||Nn),n}function ka(e){if("function"!=typeof e)throw new ye(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Sa.Cache=Nn;var Oa=co((function(e,t){var n=(t=1==t.length&&Ra(t[0])?dt(t[0],It(Xo())):dt(ir(t,1),It(Xo()))).length;return Fr((function(r){for(var o=-1,i=ln(r.length,n);++o=t})),za=br(function(){return arguments}())?br:function(e){return Va(e)&&ke.call(e,"callee")&&!$e.call(e,"callee")},Ra=r.isArray,Ma=Ze?It(Ze):function(e){return Va(e)&&dr(e)==S};function Na(e){return null!=e&&Wa(e.length)&&!Ha(e)}function Aa(e){return Va(e)&&Na(e)}var La=tn||ic,Fa=et?It(et):function(e){return Va(e)&&dr(e)==f};function Da(e){if(!Va(e))return!1;var t=dr(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!qa(e)}function Ha(e){if(!Ba(e))return!1;var t=dr(e);return t==d||t==h||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ua(e){return"number"==typeof e&&e==rl(e)}function Wa(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Ba(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Va(e){return null!=e&&"object"==typeof e}var Ga=tt?It(tt):function(e){return Va(e)&&ri(e)==v};function Ka(e){return"number"==typeof e||Va(e)&&dr(e)==g}function qa(e){if(!Va(e)||dr(e)!=m)return!1;var t=Ge(e);if(null===t)return!0;var n=ke.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Se.call(n)==Ce}var $a=nt?It(nt):function(e){return Va(e)&&dr(e)==y};var Qa=rt?It(rt):function(e){return Va(e)&&ri(e)==b};function Ya(e){return"string"==typeof e||!Ra(e)&&Va(e)&&dr(e)==_}function Xa(e){return"symbol"==typeof e||Va(e)&&dr(e)==w}var Ja=ot?It(ot):function(e){return Va(e)&&Wa(e.length)&&!!He[dr(e)]};var Za=No(Er),el=No((function(e,t){return e<=t}));function tl(e){if(!e)return[];if(Na(e))return Ya(e)?Kt(e):yo(e);if(Je&&e[Je])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Je]());var t=ri(e);return(t==v?Ht:t==b?Bt:Pl)(e)}function nl(e){return e?(e=il(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function rl(e){var t=nl(e),n=t%1;return t==t?n?t-n:t:0}function ol(e){return e?Qn(rl(e),0,4294967295):0}function il(e){if("number"==typeof e)return e;if(Xa(e))return NaN;if(Ba(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ba(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace($,"");var n=ie.test(e);return n||le.test(e)?Ve(e.slice(2),n?2:8):oe.test(e)?NaN:+e}function al(e){return bo(e,wl(e))}function ll(e){return null==e?"":Xr(e)}var cl=wo((function(e,t){if(pi(t)||Na(t))bo(t,_l(t),e);else for(var n in t)ke.call(t,n)&&Bn(e,n,t[n])})),ul=wo((function(e,t){bo(t,wl(t),e)})),sl=wo((function(e,t,n,r){bo(t,wl(t),e,r)})),fl=wo((function(e,t,n,r){bo(t,_l(t),e,r)})),pl=Go($n);var dl=Fr((function(e,t){e=ve(e);var n=-1,r=t.length,o=r>2?t[2]:void 0;for(o&&ci(t[0],t[1],o)&&(r=1);++n1),t})),bo(e,qo(e),n),r&&(n=Yn(n,7,Bo));for(var o=t.length;o--;)Zr(n,t[o]);return n}));var Ol=Go((function(e,t){return null==e?{}:function(e,t){return Rr(e,t,(function(t,n){return gl(e,n)}))}(e,t)}));function El(e,t){if(null==e)return{};var n=dt(qo(e),(function(e){return[e]}));return t=Xo(t),Rr(e,n,(function(e,n){return t(e,n[0])}))}var Tl=Do(_l),Cl=Do(wl);function Pl(e){return null==e?[]:jt(e,_l(e))}var Il=Oo((function(e,t,n){return t=t.toLowerCase(),e+(n?jl(t):t)}));function jl(e){return Dl(ll(e).toLowerCase())}function zl(e){return(e=ll(e))&&e.replace(ue,At).replace(Re,"")}var Rl=Oo((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ml=Oo((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Nl=ko("toLowerCase");var Al=Oo((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Ll=Oo((function(e,t,n){return e+(n?" ":"")+Dl(t)}));var Fl=Oo((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Dl=ko("toUpperCase");function Hl(e,t,n){return e=ll(e),void 0===(t=n?void 0:t)?function(e){return Le.test(e)}(e)?function(e){return e.match(Ne)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var Ul=Fr((function(e,t){try{return it(e,void 0,t)}catch(e){return Da(e)?e:new pe(e)}})),Wl=Go((function(e,t){return lt(t,(function(t){t=Ei(t),qn(e,t,ya(e[t],e))})),e}));function Bl(e){return function(){return e}}var Vl=Co(),Gl=Co(!0);function Kl(e){return e}function ql(e){return Sr("function"==typeof e?e:Yn(e,1))}var $l=Fr((function(e,t){return function(n){return yr(n,e,t)}})),Ql=Fr((function(e,t){return function(n){return yr(e,n,t)}}));function Yl(e,t,n){var r=_l(t),o=sr(t,r);null!=n||Ba(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=sr(t,_l(t)));var i=!(Ba(n)&&"chain"in n&&!n.chain),a=Ha(e);return lt(o,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__),o=n.__actions__=yo(this.__actions__);return o.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,ht([this.value()],arguments))})})),e}function Xl(){}var Jl=zo(dt),Zl=zo(ut),ec=zo(mt);function tc(e){return ui(e)?Ot(Ei(e)):function(e){return function(t){return fr(t,e)}}(e)}var nc=Mo(),rc=Mo(!0);function oc(){return[]}function ic(){return!1}var ac=jo((function(e,t){return e+t}),0),lc=Lo("ceil"),cc=jo((function(e,t){return e/t}),1),uc=Lo("floor");var sc,fc=jo((function(e,t){return e*t}),1),pc=Lo("round"),dc=jo((function(e,t){return e-t}),0);return Cn.after=function(e,t){if("function"!=typeof t)throw new ye(i);return e=rl(e),function(){if(--e<1)return t.apply(this,arguments)}},Cn.ary=ga,Cn.assign=cl,Cn.assignIn=ul,Cn.assignInWith=sl,Cn.assignWith=fl,Cn.at=pl,Cn.before=ma,Cn.bind=ya,Cn.bindAll=Wl,Cn.bindKey=ba,Cn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ra(e)?e:[e]},Cn.chain=ta,Cn.chunk=function(e,t,n){t=(n?ci(e,t,n):void 0===t)?1:an(rl(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var i=0,a=0,l=r(Jt(o/t));io?0:o+n),(r=void 0===r||r>o?o:rl(r))<0&&(r+=o),r=n>r?0:ol(r);n>>0)?(e=ll(e))&&("string"==typeof t||null!=t&&!$a(t))&&!(t=Xr(t))&&Dt(e)?uo(Kt(e),0,n):e.split(t,n):[]},Cn.spread=function(e,t){if("function"!=typeof e)throw new ye(i);return t=null==t?0:an(rl(t),0),Fr((function(n){var r=n[t],o=uo(n,0,t);return r&&ht(o,r),it(e,this,o)}))},Cn.tail=function(e){var t=null==e?0:e.length;return t?Gr(e,1,t):[]},Cn.take=function(e,t,n){return e&&e.length?Gr(e,0,(t=n||void 0===t?1:rl(t))<0?0:t):[]},Cn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Gr(e,(t=r-(t=n||void 0===t?1:rl(t)))<0?0:t,r):[]},Cn.takeRightWhile=function(e,t){return e&&e.length?to(e,Xo(t,3),!1,!0):[]},Cn.takeWhile=function(e,t){return e&&e.length?to(e,Xo(t,3)):[]},Cn.tap=function(e,t){return t(e),e},Cn.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new ye(i);return Ba(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),_a(e,t,{leading:r,maxWait:t,trailing:o})},Cn.thru=na,Cn.toArray=tl,Cn.toPairs=Tl,Cn.toPairsIn=Cl,Cn.toPath=function(e){return Ra(e)?dt(e,Ei):Xa(e)?[e]:yo(Oi(ll(e)))},Cn.toPlainObject=al,Cn.transform=function(e,t,n){var r=Ra(e),o=r||La(e)||Ja(e);if(t=Xo(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:Ba(e)&&Ha(i)?Pn(Ge(e)):{}}return(o?lt:cr)(e,(function(e,r,o){return t(n,e,r,o)})),n},Cn.unary=function(e){return ga(e,1)},Cn.union=Vi,Cn.unionBy=Gi,Cn.unionWith=Ki,Cn.uniq=function(e){return e&&e.length?Jr(e):[]},Cn.uniqBy=function(e,t){return e&&e.length?Jr(e,Xo(t,2)):[]},Cn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},Cn.unset=function(e,t){return null==e||Zr(e,t)},Cn.unzip=qi,Cn.unzipWith=$i,Cn.update=function(e,t,n){return null==e?e:eo(e,t,ao(n))},Cn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:eo(e,t,ao(n),r)},Cn.values=Pl,Cn.valuesIn=function(e){return null==e?[]:jt(e,wl(e))},Cn.without=Qi,Cn.words=Hl,Cn.wrap=function(e,t){return Ea(ao(t),e)},Cn.xor=Yi,Cn.xorBy=Xi,Cn.xorWith=Ji,Cn.zip=Zi,Cn.zipObject=function(e,t){return oo(e||[],t||[],Bn)},Cn.zipObjectDeep=function(e,t){return oo(e||[],t||[],Ur)},Cn.zipWith=ea,Cn.entries=Tl,Cn.entriesIn=Cl,Cn.extend=ul,Cn.extendWith=sl,Yl(Cn,Cn),Cn.add=ac,Cn.attempt=Ul,Cn.camelCase=Il,Cn.capitalize=jl,Cn.ceil=lc,Cn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=il(n))==n?n:0),void 0!==t&&(t=(t=il(t))==t?t:0),Qn(il(e),t,n)},Cn.clone=function(e){return Yn(e,4)},Cn.cloneDeep=function(e){return Yn(e,5)},Cn.cloneDeepWith=function(e,t){return Yn(e,5,t="function"==typeof t?t:void 0)},Cn.cloneWith=function(e,t){return Yn(e,4,t="function"==typeof t?t:void 0)},Cn.conformsTo=function(e,t){return null==t||Xn(e,t,_l(t))},Cn.deburr=zl,Cn.defaultTo=function(e,t){return null==e||e!=e?t:e},Cn.divide=cc,Cn.endsWith=function(e,t,n){e=ll(e),t=Xr(t);var r=e.length,o=n=void 0===n?r:Qn(rl(n),0,r);return(n-=t.length)>=0&&e.slice(n,o)==t},Cn.eq=Pa,Cn.escape=function(e){return(e=ll(e))&&D.test(e)?e.replace(L,Lt):e},Cn.escapeRegExp=function(e){return(e=ll(e))&&q.test(e)?e.replace(K,"\\$&"):e},Cn.every=function(e,t,n){var r=Ra(e)?ut:nr;return n&&ci(e,t,n)&&(t=void 0),r(e,Xo(t,3))},Cn.find=ia,Cn.findIndex=zi,Cn.findKey=function(e,t){return bt(e,Xo(t,3),cr)},Cn.findLast=aa,Cn.findLastIndex=Ri,Cn.findLastKey=function(e,t){return bt(e,Xo(t,3),ur)},Cn.floor=uc,Cn.forEach=la,Cn.forEachRight=ca,Cn.forIn=function(e,t){return null==e?e:ar(e,Xo(t,3),wl)},Cn.forInRight=function(e,t){return null==e?e:lr(e,Xo(t,3),wl)},Cn.forOwn=function(e,t){return e&&cr(e,Xo(t,3))},Cn.forOwnRight=function(e,t){return e&&ur(e,Xo(t,3))},Cn.get=vl,Cn.gt=Ia,Cn.gte=ja,Cn.has=function(e,t){return null!=e&&oi(e,t,vr)},Cn.hasIn=gl,Cn.head=Ni,Cn.identity=Kl,Cn.includes=function(e,t,n,r){e=Na(e)?e:Pl(e),n=n&&!r?rl(n):0;var o=e.length;return n<0&&(n=an(o+n,0)),Ya(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&wt(e,t,n)>-1},Cn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:rl(n);return o<0&&(o=an(r+o,0)),wt(e,t,o)},Cn.inRange=function(e,t,n){return t=nl(t),void 0===n?(n=t,t=0):n=nl(n),function(e,t,n){return e>=ln(t,n)&&e=-9007199254740991&&e<=9007199254740991},Cn.isSet=Qa,Cn.isString=Ya,Cn.isSymbol=Xa,Cn.isTypedArray=Ja,Cn.isUndefined=function(e){return void 0===e},Cn.isWeakMap=function(e){return Va(e)&&ri(e)==x},Cn.isWeakSet=function(e){return Va(e)&&"[object WeakSet]"==dr(e)},Cn.join=function(e,t){return null==e?"":rn.call(e,t)},Cn.kebabCase=Rl,Cn.last=Di,Cn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return void 0!==n&&(o=(o=rl(n))<0?an(r+o,0):ln(o,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,o):_t(e,St,o,!0)},Cn.lowerCase=Ml,Cn.lowerFirst=Nl,Cn.lt=Za,Cn.lte=el,Cn.max=function(e){return e&&e.length?rr(e,Kl,hr):void 0},Cn.maxBy=function(e,t){return e&&e.length?rr(e,Xo(t,2),hr):void 0},Cn.mean=function(e){return kt(e,Kl)},Cn.meanBy=function(e,t){return kt(e,Xo(t,2))},Cn.min=function(e){return e&&e.length?rr(e,Kl,Er):void 0},Cn.minBy=function(e,t){return e&&e.length?rr(e,Xo(t,2),Er):void 0},Cn.stubArray=oc,Cn.stubFalse=ic,Cn.stubObject=function(){return{}},Cn.stubString=function(){return""},Cn.stubTrue=function(){return!0},Cn.multiply=fc,Cn.nth=function(e,t){return e&&e.length?jr(e,rl(t)):void 0},Cn.noConflict=function(){return qe._===this&&(qe._=Pe),this},Cn.noop=Xl,Cn.now=va,Cn.pad=function(e,t,n){e=ll(e);var r=(t=rl(t))?Gt(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return Ro(Zt(o),n)+e+Ro(Jt(o),n)},Cn.padEnd=function(e,t,n){e=ll(e);var r=(t=rl(t))?Gt(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=sn();return ln(e+o*(t-e+Be("1e-"+((o+"").length-1))),t)}return Ar(e,t)},Cn.reduce=function(e,t,n){var r=Ra(e)?vt:Tt,o=arguments.length<3;return r(e,Xo(t,4),n,o,er)},Cn.reduceRight=function(e,t,n){var r=Ra(e)?gt:Tt,o=arguments.length<3;return r(e,Xo(t,4),n,o,tr)},Cn.repeat=function(e,t,n){return t=(n?ci(e,t,n):void 0===t)?1:rl(t),Lr(ll(e),t)},Cn.replace=function(){var e=arguments,t=ll(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Cn.result=function(e,t,n){var r=-1,o=(t=lo(t,e)).length;for(o||(o=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=ln(e,4294967295);e-=4294967295;for(var o=Pt(r,t=Xo(t));++n=i)return e;var l=n-Gt(r);if(l<1)return r;var c=a?uo(a,0,l).join(""):e.slice(0,l);if(void 0===o)return c+r;if(a&&(l+=c.length-l),$a(o)){if(e.slice(l).search(o)){var u,s=c;for(o.global||(o=ge(o.source,ll(re.exec(o))+"g")),o.lastIndex=0;u=o.exec(s);)var f=u.index;c=c.slice(0,void 0===f?l:f)}}else if(e.indexOf(Xr(o),l)!=l){var p=c.lastIndexOf(o);p>-1&&(c=c.slice(0,p))}return c+r},Cn.unescape=function(e){return(e=ll(e))&&F.test(e)?e.replace(A,qt):e},Cn.uniqueId=function(e){var t=++Oe;return ll(e)+t},Cn.upperCase=Fl,Cn.upperFirst=Dl,Cn.each=la,Cn.eachRight=ca,Cn.first=Ni,Yl(Cn,(sc={},cr(Cn,(function(e,t){ke.call(Cn.prototype,t)||(sc[t]=e)})),sc),{chain:!1}),Cn.VERSION="4.17.19",lt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Cn[e].placeholder=Cn})),lt(["drop","take"],(function(e,t){zn.prototype[e]=function(n){n=void 0===n?1:an(rl(n),0);var r=this.__filtered__&&!t?new zn(this):this.clone();return r.__filtered__?r.__takeCount__=ln(n,r.__takeCount__):r.__views__.push({size:ln(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},zn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),lt(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;zn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Xo(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),lt(["head","last"],(function(e,t){var n="take"+(t?"Right":"");zn.prototype[e]=function(){return this[n](1).value()[0]}})),lt(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");zn.prototype[e]=function(){return this.__filtered__?new zn(this):this[n](1)}})),zn.prototype.compact=function(){return this.filter(Kl)},zn.prototype.find=function(e){return this.filter(e).head()},zn.prototype.findLast=function(e){return this.reverse().find(e)},zn.prototype.invokeMap=Fr((function(e,t){return"function"==typeof e?new zn(this):this.map((function(n){return yr(n,e,t)}))})),zn.prototype.reject=function(e){return this.filter(ka(Xo(e)))},zn.prototype.slice=function(e,t){e=rl(e);var n=this;return n.__filtered__&&(e>0||t<0)?new zn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=rl(t))<0?n.dropRight(-t):n.take(t-e)),n)},zn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},zn.prototype.toArray=function(){return this.take(4294967295)},cr(zn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=Cn[r?"take"+("last"==t?"Right":""):t],i=r||/^find/.test(t);o&&(Cn.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,l=t instanceof zn,c=a[0],u=l||Ra(t),s=function(e){var t=o.apply(Cn,ht([e],a));return r&&f?t[0]:t};u&&n&&"function"==typeof c&&1!=c.length&&(l=u=!1);var f=this.__chain__,p=!!this.__actions__.length,d=i&&!f,h=l&&!p;if(!i&&u){t=h?t:new zn(this);var v=e.apply(t,a);return v.__actions__.push({func:na,args:[s],thisArg:void 0}),new jn(v,f)}return d&&h?e.apply(this,a):(v=this.thru(s),d?r?v.value()[0]:v.value():v)})})),lt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=be[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Cn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(Ra(o)?o:[],e)}return this[n]((function(n){return t.apply(Ra(n)?n:[],e)}))}})),cr(zn.prototype,(function(e,t){var n=Cn[t];if(n){var r=n.name+"";ke.call(bn,r)||(bn[r]=[]),bn[r].push({name:t,func:n})}})),bn[Po(void 0,2).name]=[{name:"wrapper",func:void 0}],zn.prototype.clone=function(){var e=new zn(this.__wrapped__);return e.__actions__=yo(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=yo(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=yo(this.__views__),e},zn.prototype.reverse=function(){if(this.__filtered__){var e=new zn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},zn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ra(e),r=t<0,o=n?e.length:0,i=function(e,t,n){var r=-1,o=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Cn.prototype.plant=function(e){for(var t,n=this;n instanceof In;){var r=Ci(n);r.__index__=0,r.__values__=void 0,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},Cn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof zn){var t=e;return this.__actions__.length&&(t=new zn(this)),(t=t.reverse()).__actions__.push({func:na,args:[Bi],thisArg:void 0}),new jn(t,this.__chain__)}return this.thru(Bi)},Cn.prototype.toJSON=Cn.prototype.valueOf=Cn.prototype.value=function(){return no(this.__wrapped__,this.__actions__)},Cn.prototype.first=Cn.prototype.head,Je&&(Cn.prototype[Je]=function(){return this}),Cn}();qe._=$t,void 0===(o=function(){return $t}.call(t,n,t,r))||(r.exports=o)}).call(this)}).call(this,n(108),n(243)(e))},function(e,t,n){var r=n(26),o=n(335);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(26),o=n(376);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);e.exports=o.locals||{}},function(e,t,n){var r=n(173),o=n(132);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(31);e.exports=function(e,t){return!!e&&r((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},function(e,t,n){"use strict";var r=n(27),o=n(54),i=n(53),a=n(113),l=n(138),c=n(139),u=Math.max,s=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;n(140)("replace",2,(function(e,t,n,h){return[function(r,o){var i=e(this),a=null==r?void 0:r[t];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(e,t){var o=h(n,e,this,t);if(o.done)return o.value;var f=r(e),p=String(this),d="function"==typeof t;d||(t=String(t));var g=f.global;if(g){var m=f.unicode;f.lastIndex=0}for(var y=[];;){var b=c(f,p);if(null===b)break;if(y.push(b),!g)break;""===String(b[0])&&(f.lastIndex=l(p,i(f.lastIndex),m))}for(var _,w="",x=0,S=0;S=x&&(w+=p.slice(x,O)+I,x=O+k.length)}return w+p.slice(x)}];function v(e,t,r,i,a,l){var c=r+e.length,u=i.length,s=d;return void 0!==a&&(a=o(a),s=p),n.call(l,s,(function(n,o){var l;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,r);case"'":return t.slice(c);case"<":l=a[o.slice(1,-1)];break;default:var s=+o;if(0===s)return n;if(s>u){var p=f(s/10);return 0===p?n:p<=u?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}l=i[s-1]}return void 0===l?"":l}))}}))},function(e,t,n){var r=n(63),o=n(121);e.exports=n(57)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(202),o=n(148);e.exports=function(e){return r(o(e))}},function(e,t,n){(function(t){function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}}).call(this,n(108))},function(e,t,n){var r=n(10);r(r.S+r.F*!n(30),"Object",{defineProperties:n(172)})},function(e,t){var n=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(81);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(10),o=n(249),i=n(60),a=n(94),l=n(174);r(r.S,"Object",{getOwnPropertyDescriptors:function(e){for(var t,n,r=i(e),c=a.f,u=o(r),s={},f=0;u.length>f;)void 0!==(n=c(r,t=u[f++]))&&l(s,t,n);return s}})},function(e,t,n){var r=n(27),o=n(172),i=n(132),a=n(131)("IE_PROTO"),l=function(){},c=function(){var e,t=n(171)("iframe"),r=i.length;for(t.style.display="none",n(251).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" - - - -
-
-
-
-
-
- -
-

workflow

-
-

Packages

-
-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/navigation.html b/docs/workflow/navigation.html deleted file mode 100644 index 765127ec4a..0000000000 --- a/docs/workflow/navigation.html +++ /dev/null @@ -1,22 +0,0 @@ - - diff --git a/docs/workflow/scripts/clipboard.js b/docs/workflow/scripts/clipboard.js deleted file mode 100644 index b00ce246ef..0000000000 --- a/docs/workflow/scripts/clipboard.js +++ /dev/null @@ -1,52 +0,0 @@ -window.addEventListener('load', () => { - document.querySelectorAll('span.copy-icon').forEach(element => { - element.addEventListener('click', (el) => copyElementsContentToClipboard(element)); - }) - - document.querySelectorAll('span.anchor-icon').forEach(element => { - element.addEventListener('click', (el) => { - if(element.hasAttribute('pointing-to')){ - const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to') - copyTextToClipboard(element, location) - } - }); - }) -}) - -const copyElementsContentToClipboard = (element) => { - const selection = window.getSelection(); - const range = document.createRange(); - range.selectNodeContents(element.parentNode.parentNode); - selection.removeAllRanges(); - selection.addRange(range); - - copyAndShowPopup(element, () => selection.removeAllRanges()) -} - -const copyTextToClipboard = (element, text) => { - var textarea = document.createElement("textarea"); - textarea.textContent = text; - textarea.style.position = "fixed"; - document.body.appendChild(textarea); - textarea.select(); - - copyAndShowPopup(element, () => document.body.removeChild(textarea)) -} - -const copyAndShowPopup = (element, after) => { - try { - document.execCommand('copy'); - element.nextElementSibling.classList.add('active-popup'); - setTimeout(() => { - element.nextElementSibling.classList.remove('active-popup'); - }, 1200); - } catch (e) { - console.error('Failed to write to clipboard:', e) - } - finally { - if(after) after() - } -} - -const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0] - diff --git a/docs/workflow/scripts/main.js b/docs/workflow/scripts/main.js deleted file mode 100644 index b3ee88c57d..0000000000 --- a/docs/workflow/scripts/main.js +++ /dev/null @@ -1,44 +0,0 @@ -(()=>{var e={8527:e=>{e.exports=''},5570:e=>{e.exports=''},107:e=>{e.exports=''},7224:e=>{e.exports=''},538:e=>{e.exports=''},1924:(e,n,t)=>{"use strict";var r=t(210),o=t(5559),i=o(r("String.prototype.indexOf"));e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o(t):t}},5559:(e,n,t)=>{"use strict";var r=t(8612),o=t(210),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),l=o("%Reflect.apply%",!0)||r.call(a,i),c=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),s=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var n=l(r,a,arguments);if(c&&u){var t=c(n,"length");t.configurable&&u(n,"length",{value:1+s(0,e.length-(arguments.length-1))})}return n};var f=function(){return l(r,i,arguments)};u?u(e.exports,"apply",{value:f}):e.exports.apply=f},4184:(e,n)=>{var t; -/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],n=0;n{"use strict";e.exports=function(e,n){var t=this,r=t.constructor;return t.options=Object.assign({storeInstancesGlobally:!0},n||{}),t.callbacks={},t.directMap={},t.sequenceLevels={},t.resetTimer=null,t.ignoreNextKeyup=!1,t.ignoreNextKeypress=!1,t.nextExpectedAction=!1,t.element=e,t.addEvents(),t.options.storeInstancesGlobally&&r.instances.push(t),t},e.exports.prototype.bind=t(2207),e.exports.prototype.bindMultiple=t(3396),e.exports.prototype.unbind=t(9208),e.exports.prototype.trigger=t(9855),e.exports.prototype.reset=t(6214),e.exports.prototype.stopCallback=t(3450),e.exports.prototype.handleKey=t(3067),e.exports.prototype.addEvents=t(718),e.exports.prototype.bindSingle=t(8763),e.exports.prototype.getKeyInfo=t(5825),e.exports.prototype.pickBestAction=t(8608),e.exports.prototype.getReverseMap=t(3956),e.exports.prototype.getMatches=t(3373),e.exports.prototype.resetSequences=t(3346),e.exports.prototype.fireCallback=t(2684),e.exports.prototype.bindSequence=t(7103),e.exports.prototype.resetSequenceTimer=t(7309),e.exports.prototype.detach=t(7554),e.exports.instances=[],e.exports.reset=t(1822),e.exports.REVERSE_MAP=null},718:(e,n,t)=>{"use strict";e.exports=function(){var e=this,n=t(4323),r=e.element;e.eventHandler=t(9646).bind(e),n(r,"keypress",e.eventHandler),n(r,"keydown",e.eventHandler),n(r,"keyup",e.eventHandler)}},2207:e=>{"use strict";e.exports=function(e,n,t){return e=e instanceof Array?e:[e],this.bindMultiple(e,n,t),this}},3396:e=>{"use strict";e.exports=function(e,n,t){for(var r=0;r{"use strict";e.exports=function(e,n,r,o){var i=this;function a(n){return function(){i.nextExpectedAction=n,++i.sequenceLevels[e],i.resetSequenceTimer()}}function l(n){var a;i.fireCallback(r,n,e),"keyup"!==o&&(a=t(6770),i.ignoreNextKeyup=a(n)),setTimeout((function(){i.resetSequences()}),10)}i.sequenceLevels[e]=0;for(var c=0;c{"use strict";e.exports=function(e,n,t,r,o){var i=this;i.directMap[e+":"+t]=n;var a,l=(e=e.replace(/\s+/g," ")).split(" ");l.length>1?i.bindSequence(e,l,n,t):(a=i.getKeyInfo(e,t),i.callbacks[a.key]=i.callbacks[a.key]||[],i.getMatches(a.key,a.modifiers,{type:a.action},r,e,o),i.callbacks[a.key][r?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:r,level:o,combo:e}))}},7554:(e,n,t)=>{var r=t(4323).off;e.exports=function(){var e=this,n=e.element;r(n,"keypress",e.eventHandler),r(n,"keydown",e.eventHandler),r(n,"keyup",e.eventHandler)}},4323:e=>{function n(e,n,t,r){return!e.addEventListener&&(n="on"+n),(e.addEventListener||e.attachEvent).call(e,n,t,r),t}e.exports=n,e.exports.on=n,e.exports.off=function(e,n,t,r){return!e.removeEventListener&&(n="on"+n),(e.removeEventListener||e.detachEvent).call(e,n,t,r),t}},2684:(e,n,t)=>{"use strict";e.exports=function(e,n,r,o){this.stopCallback(n,n.target||n.srcElement,r,o)||!1===e(n,r)&&(t(1350)(n),t(6103)(n))}},5825:(e,n,t)=>{"use strict";e.exports=function(e,n){var r,o,i,a,l,c,u=[];for(r=t(4520)(e),a=t(7549),l=t(5355),c=t(8581),i=0;i{"use strict";e.exports=function(e,n,r,o,i,a){var l,c,u,s,f=this,p=[],d=r.type;"keypress"!==d||r.code&&"Arrow"===r.code.slice(0,5)||(f.callbacks["any-character"]||[]).forEach((function(e){p.push(e)}));if(!f.callbacks[e])return p;for(u=t(8581),"keyup"===d&&u(e)&&(n=[e]),l=0;l{"use strict";e.exports=function(){var e,n=this.constructor;if(!n.REVERSE_MAP)for(var r in n.REVERSE_MAP={},e=t(4766))r>95&&r<112||e.hasOwnProperty(r)&&(n.REVERSE_MAP[e[r]]=r);return n.REVERSE_MAP}},3067:(e,n,t)=>{"use strict";e.exports=function(e,n,r){var o,i,a,l,c=this,u={},s=0,f=!1;for(o=c.getMatches(e,n,r),i=0;i{"use strict";e.exports=function(e){var n,r=this;"number"!=typeof e.which&&(e.which=e.keyCode);var o=t(6770)(e);void 0!==o&&("keyup"!==e.type||r.ignoreNextKeyup!==o?(n=t(4610),r.handleKey(o,n(e),e)):r.ignoreNextKeyup=!1)}},5532:e=>{"use strict";e.exports=function(e,n){return e.sort().join(",")===n.sort().join(",")}},8608:e=>{"use strict";e.exports=function(e,n,t){return t||(t=this.getReverseMap()[e]?"keydown":"keypress"),"keypress"===t&&n.length&&(t="keydown"),t}},6214:e=>{"use strict";e.exports=function(){return this.callbacks={},this.directMap={},this}},7309:e=>{"use strict";e.exports=function(){var e=this;clearTimeout(e.resetTimer),e.resetTimer=setTimeout((function(){e.resetSequences()}),1e3)}},3346:e=>{"use strict";e.exports=function(e){var n=this;e=e||{};var t,r=!1;for(t in n.sequenceLevels)e[t]?r=!0:n.sequenceLevels[t]=0;r||(n.nextExpectedAction=!1)}},3450:e=>{"use strict";e.exports=function(e,n){if((" "+n.className+" ").indexOf(" combokeys ")>-1)return!1;var t=n.tagName.toLowerCase();return"input"===t||"select"===t||"textarea"===t||n.isContentEditable}},9855:e=>{"use strict";e.exports=function(e,n){return this.directMap[e+":"+n]&&this.directMap[e+":"+n]({},e),this}},9208:e=>{"use strict";e.exports=function(e,n){return this.bind(e,(function(){}),n)}},1822:e=>{"use strict";e.exports=function(){this.instances.forEach((function(e){e.reset()}))}},6770:(e,n,t)=>{"use strict";e.exports=function(e){var n,r;if(n=t(4766),r=t(5295),"keypress"===e.type){var o=String.fromCharCode(e.which);return e.shiftKey||(o=o.toLowerCase()),o}return void 0!==n[e.which]?n[e.which]:void 0!==r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}},4610:e=>{"use strict";e.exports=function(e){var n=[];return e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt"),e.ctrlKey&&n.push("ctrl"),e.metaKey&&n.push("meta"),n}},8581:e=>{"use strict";e.exports=function(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}},4520:e=>{"use strict";e.exports=function(e){return"+"===e?["+"]:e.split("+")}},1350:e=>{"use strict";e.exports=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},5355:e=>{"use strict";e.exports={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"}},7549:e=>{"use strict";e.exports={option:"alt",command:"meta",return:"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"}},5295:e=>{"use strict";e.exports={106:"*",107:"plus",109:"minus",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},4766:e=>{"use strict";e.exports={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",173:"minus",187:"plus",189:"minus",224:"meta"};for(var n=1;n<20;++n)e.exports[111+n]="f"+n;for(n=0;n<=9;++n)e.exports[n+96]=n},6103:e=>{"use strict";e.exports=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}},3362:()=>{var e;!function(){var e=Math.PI,n=2*e,t=e/180,r=document.createElement("div");document.head.appendChild(r);var o=self.ConicGradient=function(e){o.all.push(this),e=e||{},this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.repeating=!!e.repeating,this.size=e.size||Math.max(innerWidth,innerHeight),this.canvas.width=this.canvas.height=this.size;var n=e.stops;this.stops=(n||"").split(/\s*,(?![^(]*\))\s*/),this.from=0;for(var t=0;t0){var i=this.stops[0].clone();i.pos=0,this.stops.unshift(i)}if(void 0===this.stops[this.stops.length-1].pos)this.stops[this.stops.length-1].pos=1;else if(!this.repeating&&this.stops[this.stops.length-1].pos<1){var a=this.stops[this.stops.length-1].clone();a.pos=1,this.stops.push(a)}if(this.stops.forEach((function(e,n){if(void 0===e.pos){for(var t=n+1;this[t];t++)if(void 0!==this[t].pos){e.pos=this[n-1].pos+(this[t].pos-this[n-1].pos)/(t-n+1);break}}else n>0&&(e.pos=Math.max(e.pos,this[n-1].pos))}),this.stops),this.repeating){var l=(n=this.stops.slice())[n.length-1].pos-n[0].pos;for(t=0;this.stops[this.stops.length-1].pos<1&&t<1e4;t++)for(var c=0;c'},get png(){return this.canvas.toDataURL()},get r(){return Math.sqrt(2)*this.size/2},paint:function(){var e,n,r,o=this.context,i=this.r,a=this.size/2,l=0,c=this.stops[l];o.translate(this.size/2,this.size/2),o.rotate(-90*t),o.rotate(this.from*t),o.translate(-this.size/2,-this.size/2);for(var u=0;u<360;){if(u/360+1e-5>=c.pos){do{e=c,l++,c=this.stops[l]}while(c&&c!=e&&c.pos===e.pos);if(!c)break;var s=e.color+""==c.color+""&&e!=c;n=e.color.map((function(e,n){return c.color[n]-e}))}r=(u/360-e.pos)/(c.pos-e.pos);var f=s?c.color:n.map((function(n,t){var o=n*r+e.color[t];return t<3?255&o:o}));if(o.fillStyle="rgba("+f.join(",")+")",o.beginPath(),o.moveTo(a,a),s)var p=360*(c.pos-e.pos);else p=.5;var d=u*t,h=(d=Math.min(360*t,d))+p*t;h=Math.min(360*t,h+.02),o.arc(a,a,i,d,h),o.closePath(),o.fill(),u+=p}}},o.ColorStop=function(e,t){if(this.gradient=e,t){var r=t.match(/^(.+?)(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?\s*$/);if(this.color=o.ColorStop.colorToRGBA(r[1]),r[2]){var i=r[3];"%"==i||"0"===r[2]&&!i?this.pos=r[2]/100:"turn"==i?this.pos=+r[2]:"deg"==i?this.pos=r[2]/360:"grad"==i?this.pos=r[2]/400:"rad"==i&&(this.pos=r[2]/n)}r[4]&&(this.next=new o.ColorStop(e,r[1]+" "+r[4]+r[5]))}},o.ColorStop.prototype={clone:function(){var e=new o.ColorStop(this.gradient);return e.color=this.color,e.pos=this.pos,e},toString:function(){return"rgba("+this.color.join(", ")+") "+100*this.pos+"%"}},o.ColorStop.colorToRGBA=function(e){if(!Array.isArray(e)&&-1==e.indexOf("from")){r.style.color=e;var n=getComputedStyle(r).color.match(/rgba?\(([\d.]+), ([\d.]+), ([\d.]+)(?:, ([\d.]+))?\)/);return n&&(n.shift(),(n=n.map((function(e){return+e})))[3]=isNaN(n[3])?1:n[3]),n||[0,0,0,0]}return e}}(),self.StyleFix&&((e=document.createElement("p")).style.backgroundImage="conic-gradient(white, black)",e.style.backgroundImage=PrefixFree.prefix+"conic-gradient(white, black)",e.style.backgroundImage||StyleFix.register((function(e,n){return e.indexOf("conic-gradient")>-1&&(e=e.replace(/(?:repeating-)?conic-gradient\(\s*((?:\([^()]+\)|[^;()}])+?)\)/g,(function(e,n){return new ConicGradient({stops:n,repeating:e.indexOf("repeating-")>-1})}))),e})))},9662:(e,n,t)=>{var r=t(7854),o=t(614),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},9483:(e,n,t)=>{var r=t(7854),o=t(4411),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a constructor")}},6077:(e,n,t)=>{var r=t(7854),o=t(614),i=r.String,a=r.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+i(e)+" as a prototype")}},1223:(e,n,t)=>{var r=t(5112),o=t(30),i=t(3070),a=r("unscopables"),l=Array.prototype;null==l[a]&&i.f(l,a,{configurable:!0,value:o(null)}),e.exports=function(e){l[a][e]=!0}},1530:(e,n,t)=>{"use strict";var r=t(8710).charAt;e.exports=function(e,n,t){return n+(t?r(e,n).length:1)}},5787:(e,n,t)=>{var r=t(7854),o=t(7976),i=r.TypeError;e.exports=function(e,n){if(o(n,e))return e;throw i("Incorrect invocation")}},9670:(e,n,t)=>{var r=t(7854),o=t(111),i=r.String,a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not an object")}},7556:(e,n,t)=>{var r=t(7293);e.exports=r((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},8533:(e,n,t)=>{"use strict";var r=t(2092).forEach,o=t(9341)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:(e,n,t)=>{"use strict";var r=t(7854),o=t(9974),i=t(6916),a=t(7908),l=t(3411),c=t(7659),u=t(4411),s=t(6244),f=t(6135),p=t(8554),d=t(1246),h=r.Array;e.exports=function(e){var n=a(e),t=u(this),r=arguments.length,g=r>1?arguments[1]:void 0,v=void 0!==g;v&&(g=o(g,r>2?arguments[2]:void 0));var A,b,m,y,E,_,C=d(n),w=0;if(!C||this==h&&c(C))for(A=s(n),b=t?new this(A):h(A);A>w;w++)_=v?g(n[w],w):n[w],f(b,w,_);else for(E=(y=p(n,C)).next,b=t?new this:[];!(m=i(E,y)).done;w++)_=v?l(y,g,[m.value,w],!0):m.value,f(b,w,_);return b.length=w,b}},1318:(e,n,t)=>{var r=t(5656),o=t(1400),i=t(6244),a=function(e){return function(n,t,a){var l,c=r(n),u=i(c),s=o(a,u);if(e&&t!=t){for(;u>s;)if((l=c[s++])!=l)return!0}else for(;u>s;s++)if((e||s in c)&&c[s]===t)return e||s||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:(e,n,t)=>{var r=t(9974),o=t(1702),i=t(8361),a=t(7908),l=t(6244),c=t(5417),u=o([].push),s=function(e){var n=1==e,t=2==e,o=3==e,s=4==e,f=6==e,p=7==e,d=5==e||f;return function(h,g,v,A){for(var b,m,y=a(h),E=i(y),_=r(g,v),C=l(E),w=0,x=A||c,k=n?x(h,C):t||p?x(h,0):void 0;C>w;w++)if((d||w in E)&&(m=_(b=E[w],w,y),e))if(n)k[w]=m;else if(m)switch(e){case 3:return!0;case 5:return b;case 6:return w;case 2:u(k,b)}else switch(e){case 4:return!1;case 7:u(k,b)}return f?-1:o||s?s:k}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},1194:(e,n,t)=>{var r=t(7293),o=t(5112),i=t(7392),a=o("species");e.exports=function(e){return i>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[e](Boolean).foo}))}},9341:(e,n,t)=>{"use strict";var r=t(7293);e.exports=function(e,n){var t=[][e];return!!t&&r((function(){t.call(null,n||function(){throw 1},1)}))}},3671:(e,n,t)=>{var r=t(7854),o=t(9662),i=t(7908),a=t(8361),l=t(6244),c=r.TypeError,u=function(e){return function(n,t,r,u){o(t);var s=i(n),f=a(s),p=l(s),d=e?p-1:0,h=e?-1:1;if(r<2)for(;;){if(d in f){u=f[d],d+=h;break}if(d+=h,e?d<0:p<=d)throw c("Reduce of empty array with no initial value")}for(;e?d>=0:p>d;d+=h)d in f&&(u=t(u,f[d],d,s));return u}};e.exports={left:u(!1),right:u(!0)}},206:(e,n,t)=>{var r=t(1702);e.exports=r([].slice)},4362:(e,n,t)=>{var r=t(206),o=Math.floor,i=function(e,n){var t=e.length,c=o(t/2);return t<8?a(e,n):l(e,i(r(e,0,c),n),i(r(e,c),n),n)},a=function(e,n){for(var t,r,o=e.length,i=1;i0;)e[r]=e[--r];r!==i++&&(e[r]=t)}return e},l=function(e,n,t,r){for(var o=n.length,i=t.length,a=0,l=0;a{var r=t(7854),o=t(3157),i=t(4411),a=t(111),l=t(5112)("species"),c=r.Array;e.exports=function(e){var n;return o(e)&&(n=e.constructor,(i(n)&&(n===c||o(n.prototype))||a(n)&&null===(n=n[l]))&&(n=void 0)),void 0===n?c:n}},5417:(e,n,t)=>{var r=t(7475);e.exports=function(e,n){return new(r(e))(0===n?0:n)}},3411:(e,n,t)=>{var r=t(9670),o=t(9212);e.exports=function(e,n,t,i){try{return i?n(r(t)[0],t[1]):n(t)}catch(n){o(e,"throw",n)}}},7072:(e,n,t)=>{var r=t(5112)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,n){if(!n&&!o)return!1;var t=!1;try{var i={};i[r]=function(){return{next:function(){return{done:t=!0}}}},e(i)}catch(e){}return t}},4326:(e,n,t)=>{var r=t(1702),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},648:(e,n,t)=>{var r=t(7854),o=t(1694),i=t(614),a=t(4326),l=t(5112)("toStringTag"),c=r.Object,u="Arguments"==a(function(){return arguments}());e.exports=o?a:function(e){var n,t,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,n){try{return e[n]}catch(e){}}(n=c(e),l))?t:u?a(n):"Object"==(r=a(n))&&i(n.callee)?"Arguments":r}},5631:(e,n,t)=>{"use strict";var r=t(3070).f,o=t(30),i=t(2248),a=t(9974),l=t(5787),c=t(408),u=t(654),s=t(6340),f=t(9781),p=t(2423).fastKey,d=t(9909),h=d.set,g=d.getterFor;e.exports={getConstructor:function(e,n,t,u){var s=e((function(e,r){l(e,d),h(e,{type:n,index:o(null),first:void 0,last:void 0,size:0}),f||(e.size=0),null!=r&&c(r,e[u],{that:e,AS_ENTRIES:t})})),d=s.prototype,v=g(n),A=function(e,n,t){var r,o,i=v(e),a=b(e,n);return a?a.value=t:(i.last=a={index:o=p(n,!0),key:n,value:t,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},b=function(e,n){var t,r=v(e),o=p(n);if("F"!==o)return r.index[o];for(t=r.first;t;t=t.next)if(t.key==n)return t};return i(d,{clear:function(){for(var e=v(this),n=e.index,t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),delete n[t.index],t=t.next;e.first=e.last=void 0,f?e.size=0:this.size=0},delete:function(e){var n=this,t=v(n),r=b(n,e);if(r){var o=r.next,i=r.previous;delete t.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),t.first==r&&(t.first=o),t.last==r&&(t.last=i),f?t.size--:n.size--}return!!r},forEach:function(e){for(var n,t=v(this),r=a(e,arguments.length>1?arguments[1]:void 0);n=n?n.next:t.first;)for(r(n.value,n.key,this);n&&n.removed;)n=n.previous},has:function(e){return!!b(this,e)}}),i(d,t?{get:function(e){var n=b(this,e);return n&&n.value},set:function(e,n){return A(this,0===e?0:e,n)}}:{add:function(e){return A(this,e=0===e?0:e,e)}}),f&&r(d,"size",{get:function(){return v(this).size}}),s},setStrong:function(e,n,t){var r=n+" Iterator",o=g(n),i=g(r);u(e,n,(function(e,n){h(this,{type:r,target:e,state:o(e),kind:n,last:void 0})}),(function(){for(var e=i(this),n=e.kind,t=e.last;t&&t.removed;)t=t.previous;return e.target&&(e.last=t=t?t.next:e.state.first)?"keys"==n?{value:t.key,done:!1}:"values"==n?{value:t.value,done:!1}:{value:[t.key,t.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),t?"entries":"values",!t,!0),s(n)}}},9320:(e,n,t)=>{"use strict";var r=t(1702),o=t(2248),i=t(2423).getWeakData,a=t(9670),l=t(111),c=t(5787),u=t(408),s=t(2092),f=t(2597),p=t(9909),d=p.set,h=p.getterFor,g=s.find,v=s.findIndex,A=r([].splice),b=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},E=function(e,n){return g(e.entries,(function(e){return e[0]===n}))};y.prototype={get:function(e){var n=E(this,e);if(n)return n[1]},has:function(e){return!!E(this,e)},set:function(e,n){var t=E(this,e);t?t[1]=n:this.entries.push([e,n])},delete:function(e){var n=v(this.entries,(function(n){return n[0]===e}));return~n&&A(this.entries,n,1),!!~n}},e.exports={getConstructor:function(e,n,t,r){var s=e((function(e,o){c(e,p),d(e,{type:n,id:b++,frozen:void 0}),null!=o&&u(o,e[r],{that:e,AS_ENTRIES:t})})),p=s.prototype,g=h(n),v=function(e,n,t){var r=g(e),o=i(a(n),!0);return!0===o?m(r).set(n,t):o[r.id]=t,e};return o(p,{delete:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).delete(e):t&&f(t,n.id)&&delete t[n.id]},has:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).has(e):t&&f(t,n.id)}}),o(p,t?{get:function(e){var n=g(this);if(l(e)){var t=i(e);return!0===t?m(n).get(e):t?t[n.id]:void 0}},set:function(e,n){return v(this,e,n)}}:{add:function(e){return v(this,e,!0)}}),s}}},7710:(e,n,t)=>{"use strict";var r=t(2109),o=t(7854),i=t(1702),a=t(4705),l=t(1320),c=t(2423),u=t(408),s=t(5787),f=t(614),p=t(111),d=t(7293),h=t(7072),g=t(8003),v=t(9587);e.exports=function(e,n,t){var A=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),m=A?"set":"add",y=o[e],E=y&&y.prototype,_=y,C={},w=function(e){var n=i(E[e]);l(E,e,"add"==e?function(e){return n(this,0===e?0:e),this}:"delete"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:"get"==e?function(e){return b&&!p(e)?void 0:n(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:function(e,t){return n(this,0===e?0:e,t),this})};if(a(e,!f(y)||!(b||E.forEach&&!d((function(){(new y).entries().next()})))))_=t.getConstructor(n,e,A,m),c.enable();else if(a(e,!0)){var x=new _,k=x[m](b?{}:-0,1)!=x,S=d((function(){x.has(1)})),O=h((function(e){new y(e)})),B=!b&&d((function(){for(var e=new y,n=5;n--;)e[m](n,n);return!e.has(-0)}));O||((_=n((function(e,n){s(e,E);var t=v(new y,e,_);return null!=n&&u(n,t[m],{that:t,AS_ENTRIES:A}),t}))).prototype=E,E.constructor=_),(S||B)&&(w("delete"),w("has"),A&&w("get")),(B||k)&&w(m),b&&E.clear&&delete E.clear}return C[e]=_,r({global:!0,forced:_!=y},C),g(_,e),b||t.setStrong(_,e,A),_}},9920:(e,n,t)=>{var r=t(2597),o=t(3887),i=t(1236),a=t(3070);e.exports=function(e,n){for(var t=o(n),l=a.f,c=i.f,u=0;u{var r=t(5112)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[r]=!1,"/./"[e](n)}catch(e){}}return!1}},8544:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},4230:(e,n,t)=>{var r=t(1702),o=t(4488),i=t(1340),a=/"/g,l=r("".replace);e.exports=function(e,n,t,r){var c=i(o(e)),u="<"+n;return""!==t&&(u+=" "+t+'="'+l(i(r),a,""")+'"'),u+">"+c+""}},4994:(e,n,t)=>{"use strict";var r=t(3383).IteratorPrototype,o=t(30),i=t(9114),a=t(8003),l=t(7497),c=function(){return this};e.exports=function(e,n,t){var u=n+" Iterator";return e.prototype=o(r,{next:i(1,t)}),a(e,u,!1,!0),l[u]=c,e}},8880:(e,n,t)=>{var r=t(9781),o=t(3070),i=t(9114);e.exports=r?function(e,n,t){return o.f(e,n,i(1,t))}:function(e,n,t){return e[n]=t,e}},9114:e=>{e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},6135:(e,n,t)=>{"use strict";var r=t(4948),o=t(3070),i=t(9114);e.exports=function(e,n,t){var a=r(n);a in e?o.f(e,a,i(0,t)):e[a]=t}},8709:(e,n,t)=>{"use strict";var r=t(7854),o=t(9670),i=t(2140),a=r.TypeError;e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw a("Incorrect hint");return i(this,e)}},654:(e,n,t)=>{"use strict";var r=t(2109),o=t(6916),i=t(1913),a=t(6530),l=t(614),c=t(4994),u=t(9518),s=t(7674),f=t(8003),p=t(8880),d=t(1320),h=t(5112),g=t(7497),v=t(3383),A=a.PROPER,b=a.CONFIGURABLE,m=v.IteratorPrototype,y=v.BUGGY_SAFARI_ITERATORS,E=h("iterator"),_="keys",C="values",w="entries",x=function(){return this};e.exports=function(e,n,t,a,h,v,k){c(t,n,a);var S,O,B,I=function(e){if(e===h&&R)return R;if(!y&&e in j)return j[e];switch(e){case _:case C:case w:return function(){return new t(this,e)}}return function(){return new t(this)}},T=n+" Iterator",P=!1,j=e.prototype,z=j[E]||j["@@iterator"]||h&&j[h],R=!y&&z||I(h),M="Array"==n&&j.entries||z;if(M&&(S=u(M.call(new e)))!==Object.prototype&&S.next&&(i||u(S)===m||(s?s(S,m):l(S[E])||d(S,E,x)),f(S,T,!0,!0),i&&(g[T]=x)),A&&h==C&&z&&z.name!==C&&(!i&&b?p(j,"name",C):(P=!0,R=function(){return o(z,this)})),h)if(O={values:I(C),keys:v?R:I(_),entries:I(w)},k)for(B in O)(y||P||!(B in j))&&d(j,B,O[B]);else r({target:n,proto:!0,forced:y||P},O);return i&&!k||j[E]===R||d(j,E,R,{name:h}),g[n]=R,O}},7235:(e,n,t)=>{var r=t(857),o=t(2597),i=t(6061),a=t(3070).f;e.exports=function(e){var n=r.Symbol||(r.Symbol={});o(n,e)||a(n,e,{value:i.f(e)})}},9781:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:(e,n,t)=>{var r=t(7854),o=t(111),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,n,t)=>{var r=t(317)("span").classList,o=r&&r.constructor&&r.constructor.prototype;e.exports=o===Object.prototype?void 0:o},8886:(e,n,t)=>{var r=t(8113).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},256:(e,n,t)=>{var r=t(8113);e.exports=/MSIE|Trident/.test(r)},5268:(e,n,t)=>{var r=t(4326),o=t(7854);e.exports="process"==r(o.process)},8113:(e,n,t)=>{var r=t(5005);e.exports=r("navigator","userAgent")||""},7392:(e,n,t)=>{var r,o,i=t(7854),a=t(8113),l=i.process,c=i.Deno,u=l&&l.versions||c&&c.version,s=u&&u.v8;s&&(o=(r=s.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},8008:(e,n,t)=>{var r=t(8113).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:(e,n,t)=>{var r=t(7854),o=t(1236).f,i=t(8880),a=t(1320),l=t(3505),c=t(9920),u=t(4705);e.exports=function(e,n){var t,s,f,p,d,h=e.target,g=e.global,v=e.stat;if(t=g?r:v?r[h]||l(h,{}):(r[h]||{}).prototype)for(s in n){if(p=n[s],f=e.noTargetGet?(d=o(t,s))&&d.value:t[s],!u(g?s:h+(v?".":"#")+s,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;c(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(t,s,p,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,n,t)=>{"use strict";t(4916);var r=t(1702),o=t(1320),i=t(2261),a=t(7293),l=t(5112),c=t(8880),u=l("species"),s=RegExp.prototype;e.exports=function(e,n,t,f){var p=l(e),d=!a((function(){var n={};return n[p]=function(){return 7},7!=""[e](n)})),h=d&&!a((function(){var n=!1,t=/a/;return"split"===e&&((t={}).constructor={},t.constructor[u]=function(){return t},t.flags="",t[p]=/./[p]),t.exec=function(){return n=!0,null},t[p](""),!n}));if(!d||!h||t){var g=r(/./[p]),v=n(p,""[e],(function(e,n,t,o,a){var l=r(e),c=n.exec;return c===i||c===s.exec?d&&!a?{done:!0,value:g(n,t,o)}:{done:!0,value:l(t,n,o)}:{done:!1}}));o(String.prototype,e,v[0]),o(s,p,v[1])}f&&c(s[p],"sham",!0)}},6677:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:e=>{var n=Function.prototype,t=n.apply,r=n.bind,o=n.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?o.bind(t):function(){return o.apply(t,arguments)})},9974:(e,n,t)=>{var r=t(1702),o=t(9662),i=r(r.bind);e.exports=function(e,n){return o(e),void 0===n?e:i?i(e,n):function(){return e.apply(n,arguments)}}},7065:(e,n,t)=>{"use strict";var r=t(7854),o=t(1702),i=t(9662),a=t(111),l=t(2597),c=t(206),u=r.Function,s=o([].concat),f=o([].join),p={},d=function(e,n,t){if(!l(p,n)){for(var r=[],o=0;o{var n=Function.prototype.call;e.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},6530:(e,n,t)=>{var r=t(9781),o=t(2597),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,l=o(i,"name"),c=l&&"something"===function(){}.name,u=l&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:l,PROPER:c,CONFIGURABLE:u}},1702:e=>{var n=Function.prototype,t=n.bind,r=n.call,o=t&&t.bind(r);e.exports=t?function(e){return e&&o(r,e)}:function(e){return e&&function(){return r.apply(e,arguments)}}},5005:(e,n,t)=>{var r=t(7854),o=t(614),i=function(e){return o(e)?e:void 0};e.exports=function(e,n){return arguments.length<2?i(r[e]):r[e]&&r[e][n]}},1246:(e,n,t)=>{var r=t(648),o=t(8173),i=t(7497),a=t(5112)("iterator");e.exports=function(e){if(null!=e)return o(e,a)||o(e,"@@iterator")||i[r(e)]}},8554:(e,n,t)=>{var r=t(7854),o=t(6916),i=t(9662),a=t(9670),l=t(6330),c=t(1246),u=r.TypeError;e.exports=function(e,n){var t=arguments.length<2?c(e):n;if(i(t))return a(o(t,e));throw u(l(e)+" is not iterable")}},8173:(e,n,t)=>{var r=t(9662);e.exports=function(e,n){var t=e[n];return null==t?void 0:r(t)}},647:(e,n,t)=>{var r=t(1702),o=t(7908),i=Math.floor,a=r("".charAt),l=r("".replace),c=r("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,n,t,r,f,p){var d=t+e.length,h=r.length,g=s;return void 0!==f&&(f=o(f),g=u),l(p,g,(function(o,l){var u;switch(a(l,0)){case"$":return"$";case"&":return e;case"`":return c(n,0,t);case"'":return c(n,d);case"<":u=f[c(l,1,-1)];break;default:var s=+l;if(0===s)return o;if(s>h){var p=i(s/10);return 0===p?o:p<=h?void 0===r[p-1]?a(l,1):r[p-1]+a(l,1):o}u=r[s-1]}return void 0===u?"":u}))}},7854:(e,n,t)=>{var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof t.g&&t.g)||function(){return this}()||Function("return this")()},2597:(e,n,t)=>{var r=t(1702),o=t(7908),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,n){return i(o(e),n)}},3501:e=>{e.exports={}},490:(e,n,t)=>{var r=t(5005);e.exports=r("document","documentElement")},4664:(e,n,t)=>{var r=t(9781),o=t(7293),i=t(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:(e,n,t)=>{var r=t(7854),o=t(1702),i=t(7293),a=t(4326),l=r.Object,c=o("".split);e.exports=i((function(){return!l("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):l(e)}:l},9587:(e,n,t)=>{var r=t(614),o=t(111),i=t(7674);e.exports=function(e,n,t){var a,l;return i&&r(a=n.constructor)&&a!==t&&o(l=a.prototype)&&l!==t.prototype&&i(e,l),e}},2788:(e,n,t)=>{var r=t(1702),o=t(614),i=t(5465),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},2423:(e,n,t)=>{var r=t(2109),o=t(1702),i=t(3501),a=t(111),l=t(2597),c=t(3070).f,u=t(8006),s=t(1156),f=t(2050),p=t(9711),d=t(6677),h=!1,g=p("meta"),v=0,A=function(e){c(e,g,{value:{objectID:"O"+v++,weakData:{}}})},b=e.exports={enable:function(){b.enable=function(){},h=!0;var e=u.f,n=o([].splice),t={};t[g]=1,e(t).length&&(u.f=function(t){for(var r=e(t),o=0,i=r.length;o{var r,o,i,a=t(8536),l=t(7854),c=t(1702),u=t(111),s=t(8880),f=t(2597),p=t(5465),d=t(6200),h=t(3501),g="Object already initialized",v=l.TypeError,A=l.WeakMap;if(a||p.state){var b=p.state||(p.state=new A),m=c(b.get),y=c(b.has),E=c(b.set);r=function(e,n){if(y(b,e))throw new v(g);return n.facade=e,E(b,e,n),n},o=function(e){return m(b,e)||{}},i=function(e){return y(b,e)}}else{var _=d("state");h[_]=!0,r=function(e,n){if(f(e,_))throw new v(g);return n.facade=e,s(e,_,n),n},o=function(e){return f(e,_)?e[_]:{}},i=function(e){return f(e,_)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(n){var t;if(!u(n)||(t=o(n)).type!==e)throw v("Incompatible receiver, "+e+" required");return t}}}},7659:(e,n,t)=>{var r=t(5112),o=t(7497),i=r("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},3157:(e,n,t)=>{var r=t(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:e=>{e.exports=function(e){return"function"==typeof e}},4411:(e,n,t)=>{var r=t(1702),o=t(7293),i=t(614),a=t(648),l=t(5005),c=t(2788),u=function(){},s=[],f=l("Reflect","construct"),p=/^\s*(?:class|function)\b/,d=r(p.exec),h=!p.exec(u),g=function(e){if(!i(e))return!1;try{return f(u,s,e),!0}catch(e){return!1}};e.exports=!f||o((function(){var e;return g(g.call)||!g(Object)||!g((function(){e=!0}))||e}))?function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return h||!!d(p,c(e))}:g},4705:(e,n,t)=>{var r=t(7293),o=t(614),i=/#|\.prototype\./,a=function(e,n){var t=c[l(e)];return t==s||t!=u&&(o(n)?r(n):!!n)},l=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",s=a.POLYFILL="P";e.exports=a},111:(e,n,t)=>{var r=t(614);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},1913:e=>{e.exports=!1},7850:(e,n,t)=>{var r=t(111),o=t(4326),i=t(5112)("match");e.exports=function(e){var n;return r(e)&&(void 0!==(n=e[i])?!!n:"RegExp"==o(e))}},2190:(e,n,t)=>{var r=t(7854),o=t(5005),i=t(614),a=t(7976),l=t(3307),c=r.Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var n=o("Symbol");return i(n)&&a(n.prototype,c(e))}},408:(e,n,t)=>{var r=t(7854),o=t(9974),i=t(6916),a=t(9670),l=t(6330),c=t(7659),u=t(6244),s=t(7976),f=t(8554),p=t(1246),d=t(9212),h=r.TypeError,g=function(e,n){this.stopped=e,this.result=n},v=g.prototype;e.exports=function(e,n,t){var r,A,b,m,y,E,_,C=t&&t.that,w=!(!t||!t.AS_ENTRIES),x=!(!t||!t.IS_ITERATOR),k=!(!t||!t.INTERRUPTED),S=o(n,C),O=function(e){return r&&d(r,"normal",e),new g(!0,e)},B=function(e){return w?(a(e),k?S(e[0],e[1],O):S(e[0],e[1])):k?S(e,O):S(e)};if(x)r=e;else{if(!(A=p(e)))throw h(l(e)+" is not iterable");if(c(A)){for(b=0,m=u(e);m>b;b++)if((y=B(e[b]))&&s(v,y))return y;return new g(!1)}r=f(e,A)}for(E=r.next;!(_=i(E,r)).done;){try{y=B(_.value)}catch(e){d(r,"throw",e)}if("object"==typeof y&&y&&s(v,y))return y}return new g(!1)}},9212:(e,n,t)=>{var r=t(6916),o=t(9670),i=t(8173);e.exports=function(e,n,t){var a,l;o(e);try{if(!(a=i(e,"return"))){if("throw"===n)throw t;return t}a=r(a,e)}catch(e){l=!0,a=e}if("throw"===n)throw t;if(l)throw a;return o(a),t}},3383:(e,n,t)=>{"use strict";var r,o,i,a=t(7293),l=t(614),c=t(30),u=t(9518),s=t(1320),f=t(5112),p=t(1913),d=f("iterator"),h=!1;[].keys&&("next"in(i=[].keys())?(o=u(u(i)))!==Object.prototype&&(r=o):h=!0),null==r||a((function(){var e={};return r[d].call(e)!==e}))?r={}:p&&(r=c(r)),l(r[d])||s(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},7497:e=>{e.exports={}},6244:(e,n,t)=>{var r=t(7466);e.exports=function(e){return r(e.length)}},133:(e,n,t)=>{var r=t(7392),o=t(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8536:(e,n,t)=>{var r=t(7854),o=t(614),i=t(2788),a=r.WeakMap;e.exports=o(a)&&/native code/.test(i(a))},3929:(e,n,t)=>{var r=t(7854),o=t(7850),i=r.TypeError;e.exports=function(e){if(o(e))throw i("The method doesn't accept regular expressions");return e}},1574:(e,n,t)=>{"use strict";var r=t(9781),o=t(1702),i=t(6916),a=t(7293),l=t(1956),c=t(5181),u=t(5296),s=t(7908),f=t(8361),p=Object.assign,d=Object.defineProperty,h=o([].concat);e.exports=!p||a((function(){if(r&&1!==p({b:1},p(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},n={},t=Symbol(),o="abcdefghijklmnopqrst";return e[t]=7,o.split("").forEach((function(e){n[e]=e})),7!=p({},e)[t]||l(p({},n)).join("")!=o}))?function(e,n){for(var t=s(e),o=arguments.length,a=1,p=c.f,d=u.f;o>a;)for(var g,v=f(arguments[a++]),A=p?h(l(v),p(v)):l(v),b=A.length,m=0;b>m;)g=A[m++],r&&!i(d,v,g)||(t[g]=v[g]);return t}:p},30:(e,n,t)=>{var r,o=t(9670),i=t(6048),a=t(748),l=t(3501),c=t(490),u=t(317),s=t(6200),f=s("IE_PROTO"),p=function(){},d=function(e){return" - - - -
-
-
-
-
-
- -
-

FhirEngineDal

-
-
fun FhirEngineDal(fhirEngine: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/create.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/create.html deleted file mode 100644 index 22b1c653b8..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/create.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - create - - - - -
-
-
-
-
-
- -
-

create

-
-
open fun create(resource: <ERROR CLASS>?)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/delete.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/delete.html deleted file mode 100644 index 348f9b2fbe..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/delete.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - delete - - - - -
-
-
-
-
-
- -
-

delete

-
-
open fun delete(id: <ERROR CLASS>?)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/index.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/index.html deleted file mode 100644 index c6d40b28e4..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - FhirEngineDal - - - - -
-
-
-
-
-
- -
-

FhirEngineDal

-
class FhirEngineDal(fhirEngine: <ERROR CLASS>)
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun create(resource: <ERROR CLASS>?)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun delete(id: <ERROR CLASS>?)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun read(id: <ERROR CLASS>?): <ERROR CLASS>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun search(resourceType: String?): MutableIterable<<ERROR CLASS>>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun searchByUrl(resourceType: String?, url: String?): MutableIterable<<ERROR CLASS>>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun update(resource: <ERROR CLASS>?)
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val libs: <ERROR CLASS>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/libs.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/libs.html deleted file mode 100644 index 9e7c2eaad1..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/libs.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - libs - - - - -
-
-
-
-
-
- -
-

libs

-
-
val libs: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/read.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/read.html deleted file mode 100644 index a350ccb132..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/read.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - read - - - - -
-
-
-
-
-
- -
-

read

-
-
open fun read(id: <ERROR CLASS>?): <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search-by-url.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search-by-url.html deleted file mode 100644 index bcbd302fc9..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search-by-url.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - searchByUrl - - - - -
-
-
-
-
-
- -
-

searchByUrl

-
-
open fun searchByUrl(resourceType: String?, url: String?): MutableIterable<<ERROR CLASS>>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search.html deleted file mode 100644 index 62019bdbd0..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - search - - - - -
-
-
-
-
-
- -
-

search

-
-
open fun search(resourceType: String?): MutableIterable<<ERROR CLASS>>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/update.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/update.html deleted file mode 100644 index da859cedb1..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/update.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - update - - - - -
-
-
-
-
-
- -
-

update

-
-
open fun update(resource: <ERROR CLASS>?)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/-fhir-engine-library-content-provider.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/-fhir-engine-library-content-provider.html deleted file mode 100644 index 81e87b01ba..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/-fhir-engine-library-content-provider.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - FhirEngineLibraryContentProvider - - - - -
-
-
-
-
-
- -
-

FhirEngineLibraryContentProvider

-
-
fun FhirEngineLibraryContentProvider(adapterFactory: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/get-library.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/get-library.html deleted file mode 100644 index eadd6fd56d..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/get-library.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - getLibrary - - - - -
-
-
-
-
-
- -
-

getLibrary

-
-
open fun getLibrary(libraryIdentifier: <ERROR CLASS>): <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/index.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/index.html deleted file mode 100644 index 3b2afb9fbd..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - FhirEngineLibraryContentProvider - - - - -
-
-
-
-
-
- -
-

FhirEngineLibraryContentProvider

-
class FhirEngineLibraryContentProvider(adapterFactory: <ERROR CLASS>)
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun getLibrary(libraryIdentifier: <ERROR CLASS>): <ERROR CLASS>
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val libs: <ERROR CLASS>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/libs.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/libs.html deleted file mode 100644 index c1625abeca..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/libs.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - libs - - - - -
-
-
-
-
-
- -
-

libs

-
-
val libs: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/-fhir-engine-retrieve-provider.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/-fhir-engine-retrieve-provider.html deleted file mode 100644 index d95fe17510..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/-fhir-engine-retrieve-provider.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - FhirEngineRetrieveProvider - - - - -
-
-
-
-
-
- -
-

FhirEngineRetrieveProvider

-
-
fun FhirEngineRetrieveProvider(fhirEngine: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/fhir-engine.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/fhir-engine.html deleted file mode 100644 index 0c1053f879..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/fhir-engine.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - fhirEngine - - - - -
-
-
-
-
-
- -
-

fhirEngine

-
-
val fhirEngine: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/index.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/index.html deleted file mode 100644 index efaa84f669..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - FhirEngineRetrieveProvider - - - - -
-
-
-
-
-
- -
-

FhirEngineRetrieveProvider

-
class FhirEngineRetrieveProvider(fhirEngine: <ERROR CLASS>)
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun retrieve(context: String?, contextPath: String?, contextValue: Any?, dataType: String?, templateId: String?, codePath: String?, codes: MutableIterable<<ERROR CLASS>>?, valueSet: String?, datePath: String?, dateLowPath: String?, dateHighPath: String?, dateRange: <ERROR CLASS>?): MutableIterable<Any>
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val fhirEngine: <ERROR CLASS>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/retrieve.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/retrieve.html deleted file mode 100644 index 4ab95d5133..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/retrieve.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - retrieve - - - - -
-
-
-
-
-
- -
-

retrieve

-
-
open fun retrieve(context: String?, contextPath: String?, contextValue: Any?, dataType: String?, templateId: String?, codePath: String?, codes: MutableIterable<<ERROR CLASS>>?, valueSet: String?, datePath: String?, dateLowPath: String?, dateHighPath: String?, dateRange: <ERROR CLASS>?): MutableIterable<Any>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/-fhir-engine-terminology-provider.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/-fhir-engine-terminology-provider.html deleted file mode 100644 index a834dc8159..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/-fhir-engine-terminology-provider.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - FhirEngineTerminologyProvider - - - - -
-
-
-
-
-
- -
-

FhirEngineTerminologyProvider

-
-
fun FhirEngineTerminologyProvider(fhirContext: <ERROR CLASS>, fhirEngine: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/expand.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/expand.html deleted file mode 100644 index ae28d90bfa..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/expand.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - expand - - - - -
-
-
-
-
-
- -
-

expand

-
-
open fun expand(valueSetInfo: <ERROR CLASS>): MutableIterable<<ERROR CLASS>>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/in.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/in.html deleted file mode 100644 index 4c3144de63..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/in.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - in - - - - -
-
-
-
-
-
- -
-

in

-
-
open fun in(code: <ERROR CLASS>, valueSet: <ERROR CLASS>): Boolean
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/index.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/index.html deleted file mode 100644 index 37cdce4111..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - FhirEngineTerminologyProvider - - - - -
-
-
-
-
-
- -
-

FhirEngineTerminologyProvider

-
class FhirEngineTerminologyProvider(fhirContext: <ERROR CLASS>, fhirEngine: <ERROR CLASS>)
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun expand(valueSetInfo: <ERROR CLASS>): MutableIterable<<ERROR CLASS>>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun in(code: <ERROR CLASS>, valueSet: <ERROR CLASS>): Boolean
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
open fun lookup(code: <ERROR CLASS>?, codeSystem: <ERROR CLASS>?): <ERROR CLASS>
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/lookup.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/lookup.html deleted file mode 100644 index 03e8a20a56..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/lookup.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - lookup - - - - -
-
-
-
-
-
- -
-

lookup

-
-
open fun lookup(code: <ERROR CLASS>?, codeSystem: <ERROR CLASS>?): <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/-fhir-operator.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/-fhir-operator.html deleted file mode 100644 index 542cadc277..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/-fhir-operator.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - FhirOperator - - - - -
-
-
-
-
-
- -
-

FhirOperator

-
-
fun FhirOperator(fhirContext: <ERROR CLASS>, fhirEngine: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/adapter-factory.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/adapter-factory.html deleted file mode 100644 index b26cc9708e..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/adapter-factory.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - adapterFactory - - - - -
-
-
-
-
-
- -
-

adapterFactory

-
-
val adapterFactory: <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/evaluate-measure.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/evaluate-measure.html deleted file mode 100644 index 4eff95ea43..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/evaluate-measure.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - evaluateMeasure - - - - -
-
-
-
-
-
- -
-

evaluateMeasure

-
-
fun evaluateMeasure(url: String, start: String, end: String, reportType: String, subject: String): <ERROR CLASS>
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/fhir-engine-dal.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/fhir-engine-dal.html deleted file mode 100644 index e8d1b7aa01..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/fhir-engine-dal.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - fhirEngineDal - - - - -
-
-
-
-
-
- -
-

fhirEngineDal

-
-
val fhirEngineDal: FhirEngineDal
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/index.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/index.html deleted file mode 100644 index 66c6bd9571..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - FhirOperator - - - - -
-
-
-
-
-
- -
-

FhirOperator

-
class FhirOperator(fhirContext: <ERROR CLASS>, fhirEngine: <ERROR CLASS>)
-
-
-
-
-

Functions

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
fun evaluateMeasure(url: String, start: String, end: String, reportType: String, subject: String): <ERROR CLASS>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
fun loadLib(lib: <ERROR CLASS>)
-
-
-
-
-
-

Properties

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
val adapterFactory: <ERROR CLASS>
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
val fhirEngineDal: FhirEngineDal
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
- -
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/library-content-provider.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/library-content-provider.html deleted file mode 100644 index ebac1b4828..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/library-content-provider.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - libraryContentProvider - - - - -
-
-
-
-
-
- -
-

libraryContentProvider

-
- -
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/load-lib.html b/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/load-lib.html deleted file mode 100644 index 088bab2a73..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/-fhir-operator/load-lib.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - loadLib - - - - -
-
-
-
-
-
- -
-

loadLib

-
-
fun loadLib(lib: <ERROR CLASS>)
-
- -
-
- - - diff --git a/docs/workflow/workflow/com.google.android.fhir.workflow/index.html b/docs/workflow/workflow/com.google.android.fhir.workflow/index.html deleted file mode 100644 index c03caa8745..0000000000 --- a/docs/workflow/workflow/com.google.android.fhir.workflow/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - com.google.android.fhir.workflow - - - - -
-
-
-
-
-
- -
-

Package com.google.android.fhir.workflow

-
-
-
-
-

Types

-
-
-
-
- - -
Link copied to clipboard
-
-
-
-
class FhirEngineDal(fhirEngine: <ERROR CLASS>)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
class FhirEngineLibraryContentProvider(adapterFactory: <ERROR CLASS>)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
class FhirEngineRetrieveProvider(fhirEngine: <ERROR CLASS>)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
class FhirEngineTerminologyProvider(fhirContext: <ERROR CLASS>, fhirEngine: <ERROR CLASS>)
-
-
-
-
- -
-
-
- - -
Link copied to clipboard
-
-
-
-
class FhirOperator(fhirContext: <ERROR CLASS>, fhirEngine: <ERROR CLASS>)
-
-
-
-
-
-
-
-
- -
-
- - - diff --git a/docs/workflow/workflow/package-list b/docs/workflow/workflow/package-list deleted file mode 100644 index 41cefc3a5e..0000000000 --- a/docs/workflow/workflow/package-list +++ /dev/null @@ -1,34 +0,0 @@ -$dokka.format:html-v1 -$dokka.linkExtension:html -$dokka.location:com.google.android.fhir.workflow////PointingToDeclaration/workflow/com.google.android.fhir.workflow/index.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal///PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/index.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/FhirEngineDal/#FhirEngine/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/-fhir-engine-dal.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/create/#IBaseResource?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/create.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/delete/#IIdType?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/delete.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/libs/#/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/libs.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/read/#IIdType?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/read.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/search/#kotlin.String?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/searchByUrl/#kotlin.String?#kotlin.String?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/search-by-url.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineDal/update/#IBaseResource?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-dal/update.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineLibraryContentProvider///PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/index.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineLibraryContentProvider/FhirEngineLibraryContentProvider/#AdapterFactory/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/-fhir-engine-library-content-provider.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineLibraryContentProvider/getLibrary/#VersionedIdentifier/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/get-library.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineLibraryContentProvider/libs/#/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-library-content-provider/libs.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineRetrieveProvider///PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/index.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineRetrieveProvider/FhirEngineRetrieveProvider/#FhirEngine/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/-fhir-engine-retrieve-provider.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineRetrieveProvider/fhirEngine/#/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/fhir-engine.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineRetrieveProvider/retrieve/#kotlin.String?#kotlin.String?#kotlin.Any?#kotlin.String?#kotlin.String?#kotlin.String?#kotlin.collections.MutableIterable[Code]?#kotlin.String?#kotlin.String?#kotlin.String?#kotlin.String?#Interval?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-retrieve-provider/retrieve.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineTerminologyProvider///PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/index.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineTerminologyProvider/FhirEngineTerminologyProvider/#FhirContext#FhirEngine/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/-fhir-engine-terminology-provider.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineTerminologyProvider/expand/#ValueSetInfo/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/expand.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineTerminologyProvider/in/#Code#ValueSetInfo/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/in.html -$dokka.location:com.google.android.fhir.workflow/FhirEngineTerminologyProvider/lookup/#Code?#CodeSystemInfo?/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-engine-terminology-provider/lookup.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator///PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/index.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator/FhirOperator/#FhirContext#FhirEngine/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/-fhir-operator.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator/adapterFactory/#/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/adapter-factory.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator/evaluateMeasure/#kotlin.String#kotlin.String#kotlin.String#kotlin.String#kotlin.String/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/evaluate-measure.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator/fhirEngineDal/#/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/fhir-engine-dal.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator/libraryContentProvider/#/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/library-content-provider.html -$dokka.location:com.google.android.fhir.workflow/FhirOperator/loadLib/#Library/PointingToDeclaration/workflow/com.google.android.fhir.workflow/-fhir-operator/load-lib.html -com.google.android.fhir.workflow - diff --git a/engine/build.gradle.kts b/engine/build.gradle.kts index afa565f71f..a2146e4684 100644 --- a/engine/build.gradle.kts +++ b/engine/build.gradle.kts @@ -4,7 +4,7 @@ import java.net.URL plugins { id(Plugins.BuildPlugins.androidLib) id(Plugins.BuildPlugins.kotlinAndroid) - id(Plugins.BuildPlugins.kotlinKapt) + id(Plugins.BuildPlugins.kotlinKsp) id(Plugins.BuildPlugins.mavenPublish) jacoco id(Plugins.BuildPlugins.dokka).version(Plugins.Versions.dokka) @@ -134,7 +134,7 @@ dependencies { implementation(Dependencies.timber) implementation(Dependencies.truth) - kapt(Dependencies.Room.compiler) + ksp(Dependencies.Room.compiler) testImplementation(Dependencies.AndroidxTest.archCore) testImplementation(Dependencies.AndroidxTest.core) diff --git a/engine/src/androidTest/java/com/google/android/fhir/db/impl/dao/LocalChangeDaoTest.kt b/engine/src/androidTest/java/com/google/android/fhir/db/impl/dao/LocalChangeDaoTest.kt index 650f8acae6..cba9a5f211 100644 --- a/engine/src/androidTest/java/com/google/android/fhir/db/impl/dao/LocalChangeDaoTest.kt +++ b/engine/src/androidTest/java/com/google/android/fhir/db/impl/dao/LocalChangeDaoTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023 Google LLC + * Copyright 2023-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,6 +35,7 @@ import org.hl7.fhir.r4.model.CarePlan import org.hl7.fhir.r4.model.CodeableConcept import org.hl7.fhir.r4.model.Coding import org.hl7.fhir.r4.model.Enumerations +import org.hl7.fhir.r4.model.Observation import org.hl7.fhir.r4.model.Patient import org.hl7.fhir.r4.model.Reference import org.junit.After @@ -356,4 +357,44 @@ class LocalChangeDaoTest { assertThat(localChangeResourceReferences[2].resourceReferenceValue) .isEqualTo(practitionerReference) } + + @Test + fun getReferencesForLocalChanges_should_return_all_changes(): Unit = runBlocking { + listOf( + Observation().apply { + id = "1" + subject = Reference("Patient/1") + encounter = Reference("Encounter/1") + }, + Observation().apply { + id = "2" + subject = Reference("Patient/2") + encounter = Reference("Encounter/2") + }, + ) + .forEach { + localChangeDao.addInsert( + it, + UUID.randomUUID(), + Instant.now(), + ) + } + + // we need LocalChangeEntity.id (auto generated) to call getReferencesForLocalChanges api + val localChangesMap = localChangeDao.getAllLocalChanges().associateBy { it.resourceId } + + // Calling the api for single local change + var result = localChangeDao.getReferencesForLocalChanges(listOf(localChangesMap["1"]!!.id)) + assertThat(result).hasSize(2) + assertThat(result.map { it.resourceReferenceValue }).containsExactly("Patient/1", "Encounter/1") + + // Calling the api for multiple local changes + result = + localChangeDao.getReferencesForLocalChanges( + listOf(localChangesMap["1"]!!.id, localChangesMap["2"]!!.id), + ) + assertThat(result).hasSize(4) + assertThat(result.map { it.resourceReferenceValue }) + .containsExactly("Patient/1", "Encounter/1", "Patient/2", "Encounter/2") + } } diff --git a/engine/src/main/java/com/google/android/fhir/db/impl/dao/LocalChangeDao.kt b/engine/src/main/java/com/google/android/fhir/db/impl/dao/LocalChangeDao.kt index 664977fadb..13f0b9d560 100644 --- a/engine/src/main/java/com/google/android/fhir/db/impl/dao/LocalChangeDao.kt +++ b/engine/src/main/java/com/google/android/fhir/db/impl/dao/LocalChangeDao.kt @@ -352,7 +352,7 @@ internal abstract class LocalChangeDao { """ SELECT * FROM LocalChangeResourceReferenceEntity - WHERE localChangeId = (:localChangeId) + WHERE localChangeId IN (:localChangeId) """, ) abstract suspend fun getReferencesForLocalChanges( diff --git a/engine/src/test/java/com/google/android/fhir/sync/FhirSyncWorkerTest.kt b/engine/src/test/java/com/google/android/fhir/sync/FhirSyncWorkerTest.kt index 3989fda86d..ba51d5d5e6 100644 --- a/engine/src/test/java/com/google/android/fhir/sync/FhirSyncWorkerTest.kt +++ b/engine/src/test/java/com/google/android/fhir/sync/FhirSyncWorkerTest.kt @@ -23,6 +23,8 @@ import androidx.work.ListenableWorker import androidx.work.WorkerParameters import androidx.work.testing.TestListenableWorkerBuilder import com.google.android.fhir.FhirEngine +import com.google.android.fhir.FhirEngineConfiguration +import com.google.android.fhir.FhirEngineProvider import com.google.android.fhir.sync.upload.UploadStrategy import com.google.android.fhir.testing.TestDataSourceImpl import com.google.android.fhir.testing.TestDownloadManagerImpl @@ -30,7 +32,9 @@ import com.google.android.fhir.testing.TestFailingDatasource import com.google.android.fhir.testing.TestFhirEngineImpl import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.runBlocking +import org.junit.After import org.junit.Before +import org.junit.BeforeClass import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner @@ -85,11 +89,26 @@ internal class FhirSyncWorkerTest { override fun getUploadStrategy(): UploadStrategy = UploadStrategy.AllChangesSquashedBundlePut } + companion object { + @BeforeClass + @JvmStatic + fun setupConfiguration() { + // activate testMode + FhirEngineProvider.init(FhirEngineConfiguration(testMode = true)) + } + } + @Before fun setUp() { context = ApplicationProvider.getApplicationContext() } + @After + fun tearDown() { + // cleaning database + FhirEngineProvider.forceCleanup() + } + @Test fun fhirSyncWorker_successfulTask_resultSuccess() { // In a ListenableWorker, runAttemptCount starts from 0. But in a TestListenableWorkerBuilder, diff --git a/knowledge/build.gradle.kts b/knowledge/build.gradle.kts index 53934893b3..5b906559d5 100644 --- a/knowledge/build.gradle.kts +++ b/knowledge/build.gradle.kts @@ -4,7 +4,7 @@ import java.net.URL plugins { id(Plugins.BuildPlugins.androidLib) id(Plugins.BuildPlugins.kotlinAndroid) - id(Plugins.BuildPlugins.kotlinKapt) + id(Plugins.BuildPlugins.kotlinKsp) id(Plugins.BuildPlugins.mavenPublish) jacoco id(Plugins.BuildPlugins.dokka).version(Plugins.Versions.dokka) @@ -92,7 +92,7 @@ dependencies { implementation(Dependencies.HapiFhir.fhirCoreConvertors) implementation(Dependencies.apacheCommonsCompress) - kapt(Dependencies.Room.compiler) + ksp(Dependencies.Room.compiler) testImplementation(Dependencies.AndroidxTest.archCore) testImplementation(Dependencies.AndroidxTest.core) diff --git a/knowledge/src/main/java/com/google/android/fhir/knowledge/db/dao/KnowledgeDao.kt b/knowledge/src/main/java/com/google/android/fhir/knowledge/db/dao/KnowledgeDao.kt index bc5d937b78..5a2ba35575 100644 --- a/knowledge/src/main/java/com/google/android/fhir/knowledge/db/dao/KnowledgeDao.kt +++ b/knowledge/src/main/java/com/google/android/fhir/knowledge/db/dao/KnowledgeDao.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023 Google LLC + * Copyright 2023-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,7 +63,7 @@ abstract class KnowledgeDao { @Query( "DELETE from ResourceMetadataEntity WHERE resourceMetadataId NOT IN (SELECT DISTINCT resourceMetadataId from ImplementationGuideResourceMetadataEntity)", ) - internal abstract suspend fun deleteOrphanedResources() + internal abstract suspend fun deleteOrphanedResources(): Int @Query("SELECT * from ImplementationGuideEntity") internal abstract suspend fun getImplementationGuides(): List diff --git a/knowledge/src/test/java/com/google/android/fhir/knowledge/files/NpmFileManagerTest.kt b/knowledge/src/test/java/com/google/android/fhir/knowledge/files/NpmFileManagerTest.kt index 0bce296f15..5eb1f19b06 100644 --- a/knowledge/src/test/java/com/google/android/fhir/knowledge/files/NpmFileManagerTest.kt +++ b/knowledge/src/test/java/com/google/android/fhir/knowledge/files/NpmFileManagerTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023 Google LLC + * Copyright 2023-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,7 +34,7 @@ class NpmFileManagerTest { val packageFolder = npmFileManager.getPackageDir(PACKAGE_ID, VERSION) assertThat(packageFolder.absolutePath) - .isEqualTo("${testDataFolder.absolutePath}/$PACKAGE_ID#$VERSION") + .isEqualTo("${testDataFolder.absolutePath}${File.separator}$PACKAGE_ID#$VERSION") } @Test diff --git a/workflow-testing/src/main/resources/immunity-check/ImmunityCheck.json b/workflow-testing/src/main/resources/immunity-check/ImmunityCheck.json index 1a4a789e03..9bd0402964 100644 --- a/workflow-testing/src/main/resources/immunity-check/ImmunityCheck.json +++ b/workflow-testing/src/main/resources/immunity-check/ImmunityCheck.json @@ -1,23 +1 @@ -{ - "resourceType": "Library", - "id": "ImmunityCheck-1.0.0", - "url": "http://localhost/Library/ImmunityCheck|1.0.0", - "version": "1.0.0", - "name": "ImmunityCheck", - "status": "active", - "experimental": true, - "content": [ - { - "contentType": "text/cql", - "data": "bGlicmFyeSBJbW11bml0eUNoZWNrIHZlcnNpb24gJzEuMC4wJwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgIkZISVJIZWxwZXJzIiB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiQ29tcGxldGVkSW1tdW5pemF0aW9uIjoKICBleGlzdHMoR2V0RmluYWxEb3NlKSBvciBleGlzdHMoR2V0U2luZ2xlRG9zZSkKCmRlZmluZSAiR2V0RmluYWxEb3NlIjoKICBbSW1tdW5pemF0aW9uXSBJCiAgICB3aGVyZSBleGlzdHMoSS5wcm90b2NvbEFwcGxpZWQpCiAgICAgIGFuZCBJLnByb3RvY29sQXBwbGllZC5kb3NlTnVtYmVyLnZhbHVlID0gSS5wcm90b2NvbEFwcGxpZWQuc2VyaWVzRG9zZXMudmFsdWUKCmRlZmluZSAiR2V0U2luZ2xlRG9zZSI6CiAgW0ltbXVuaXphdGlvbl0gSQogICAgd2hlcmUgZXhpc3RzKEkucHJvdG9jb2xBcHBsaWVkKQogICAgICBhbmQgZXhpc3RzKEkucHJvdG9jb2xBcHBsaWVkLmRvc2VOdW1iZXIudmFsdWUpCiAgICAgIGFuZCBub3QgZXhpc3RzKEkucHJvdG9jb2xBcHBsaWVkLnNlcmllc0Rvc2VzLnZhbHVlKQo=" - }, - { - "contentType": "application/elm+json", - "data": "ewogICJsaWJyYXJ5IiA6IHsKICAgICJ0eXBlIiA6ICJMaWJyYXJ5IiwKICAgICJpZGVudGlmaWVyIiA6IHsKICAgICAgInR5cGUiIDogIlZlcnNpb25lZElkZW50aWZpZXIiLAogICAgICAiaWQiIDogIkltbXVuaXR5Q2hlY2siLAogICAgICAidmVyc2lvbiIgOiAiMS4wLjAiCiAgICB9LAogICAgInNjaGVtYUlkZW50aWZpZXIiIDogewogICAgICAidHlwZSIgOiAiVmVyc2lvbmVkSWRlbnRpZmllciIsCiAgICAgICJpZCIgOiAidXJuOmhsNy1vcmc6ZWxtIiwKICAgICAgInZlcnNpb24iIDogInIxIgogICAgfSwKICAgICJ1c2luZ3MiIDogewogICAgICAidHlwZSIgOiAiTGlicmFyeSRVc2luZ3MiLAogICAgICAiZGVmIiA6IFsgewogICAgICAgICJ0eXBlIiA6ICJVc2luZ0RlZiIsCiAgICAgICAgImxvY2FsSWRlbnRpZmllciIgOiAiU3lzdGVtIiwKICAgICAgICAidXJpIiA6ICJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEiCiAgICAgIH0sIHsKICAgICAgICAidHlwZSIgOiAiVXNpbmdEZWYiLAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAidXNpbmcgIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiRkhJUiIgXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgIiB2ZXJzaW9uICIsICInNC4wLjEnIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAiciIgOiAiMSIKICAgICAgICAgIH0KICAgICAgICB9IF0sCiAgICAgICAgImxvY2FsSWQiIDogIjEiLAogICAgICAgICJsb2NhdG9yIiA6ICIzOjEtMzoyNiIsCiAgICAgICAgImxvY2FsSWRlbnRpZmllciIgOiAiRkhJUiIsCiAgICAgICAgInVyaSIgOiAiaHR0cDovL2hsNy5vcmcvZmhpciIsCiAgICAgICAgInZlcnNpb24iIDogIjQuMC4xIgogICAgICB9IF0KICAgIH0sCiAgICAiaW5jbHVkZXMiIDogewogICAgICAidHlwZSIgOiAiTGlicmFyeSRJbmNsdWRlcyIsCiAgICAgICJkZWYiIDogWyB7CiAgICAgICAgInR5cGUiIDogIkluY2x1ZGVEZWYiLAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAiaW5jbHVkZSAiIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJcIkZISVJIZWxwZXJzXCIiIF0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIgdmVyc2lvbiAiLCAiJzQuMC4xJyIsICIgY2FsbGVkICIsICJGSElSSGVscGVycyIgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjIiCiAgICAgICAgICB9CiAgICAgICAgfSBdLAogICAgICAgICJsb2NhbElkIiA6ICIyIiwKICAgICAgICAibG9jYXRvciIgOiAiNToxLTU6NTYiLAogICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIkZISVJIZWxwZXJzIiwKICAgICAgICAicGF0aCIgOiAiRkhJUkhlbHBlcnMiLAogICAgICAgICJ2ZXJzaW9uIiA6ICI0LjAuMSIKICAgICAgfSBdCiAgICB9LAogICAgImNvbnRleHRzIiA6IHsKICAgICAgInR5cGUiIDogIkxpYnJhcnkkQ29udGV4dHMiLAogICAgICAiZGVmIiA6IFsgewogICAgICAgICJ0eXBlIiA6ICJDb250ZXh0RGVmIiwKICAgICAgICAibG9jYXRvciIgOiAiNzoxLTc6MTUiLAogICAgICAgICJuYW1lIiA6ICJQYXRpZW50IgogICAgICB9IF0KICAgIH0sCiAgICAic3RhdGVtZW50cyIgOiB7CiAgICAgICJ0eXBlIiA6ICJMaWJyYXJ5JFN0YXRlbWVudHMiLAogICAgICAiZGVmIiA6IFsgewogICAgICAgICJ0eXBlIiA6ICJFeHByZXNzaW9uRGVmIiwKICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiAiU2luZ2xldG9uRnJvbSIsCiAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI3OjEtNzoxNSIsCiAgICAgICAgICAgICJkYXRhVHlwZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGF0aWVudCIsCiAgICAgICAgICAgICJ0ZW1wbGF0ZUlkIiA6ICJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vUGF0aWVudCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJsb2NhdG9yIiA6ICI3OjEtNzoxNSIsCiAgICAgICAgIm5hbWUiIDogIlBhdGllbnQiLAogICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IgogICAgICB9LCB7CiAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25EZWYiLAogICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMiLAogICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMzozLTEzOjE2IiwKICAgICAgICAgICAgICAiZGF0YVR5cGUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIsCiAgICAgICAgICAgICAgInRlbXBsYXRlSWQiIDogImh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICI0IiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjEzOjMtMTM6MTgiLAogICAgICAgICAgICAiYWxpYXMiIDogIkkiCiAgICAgICAgICB9IF0sCiAgICAgICAgICAicmVsYXRpb25zaGlwIiA6IFsgXSwKICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJBbmQiLAogICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjYiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE0OjE3LTE0OjM1IiwKICAgICAgICAgICAgICAgICJwYXRoIiA6ICJwcm90b2NvbEFwcGxpZWQiLAogICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjciLAogICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNDoxMS0xNDozNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJ0eXBlIiA6ICJFcXVhbCIsCiAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzZWRRdWVyeVNvdXJjZSIsCiAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTU6MTEtMTU6MjciLAogICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicHJvdG9jb2xBcHBsaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJkb3NlTnVtYmVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogImRvc2VOdW1iZXIiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTAiLAogICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNToxMS0xNTozOCIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgImFsaWFzIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOb3QiLAogICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogInZhbHVlIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUmV0dXJuQ2xhdXNlIiwKICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogInZhbHVlIgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAiZGlzdGluY3QiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTEiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE1OjExLTE1OjQ0IgogICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTU6NDgtMTU6NjQiLAogICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicHJvdG9jb2xBcHBsaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUmV0dXJuQ2xhdXNlIiwKICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAiZGlzdGluY3QiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNCIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE1OjQ4LTE1Ojc2IgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAiYWxpYXMiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5vdCIsCiAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNSIsCiAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTU6NDgtMTU6ODIiCiAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNiIsCiAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE1OjExLTE1OjgyIgogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNyIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNDo1LTE1OjgyIgogICAgICAgICAgfSwKICAgICAgICAgICJsb2NhbElkIiA6ICIxOCIsCiAgICAgICAgICAibG9jYXRvciIgOiAiMTM6My0xNTo4MiIKICAgICAgICB9LAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAiZGVmaW5lICIsICJcIkdldEZpbmFsRG9zZVwiIiwgIjpcbiAgIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlsiLCAiSW1tdW5pemF0aW9uIiwgIl0iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiXG4gICAgIiBdCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAid2hlcmUgIiBdCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJJIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInByb3RvY29sQXBwbGllZCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI3IgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJcbiAgICAgIGFuZCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiZG9zZU51bWJlciIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjEwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjEwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJ2YWx1ZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjExIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjExIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiICIsICI9IiwgIiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJJIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJzZXJpZXNEb3NlcyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJ2YWx1ZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE2IgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE3IgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgInIiIDogIjE3IgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgInIiIDogIjE4IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjE5IgogICAgICAgICAgfQogICAgICAgIH0gXSwKICAgICAgICAibG9jYWxJZCIgOiAiMTkiLAogICAgICAgICJsb2NhdG9yIiA6ICIxMjoxLTE1OjgyIiwKICAgICAgICAibmFtZSIgOiAiR2V0RmluYWxEb3NlIiwKICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgImFjY2Vzc0xldmVsIiA6ICJQdWJsaWMiCiAgICAgIH0sIHsKICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvbkRlZiIsCiAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgInR5cGUiIDogIlF1ZXJ5IiwKICAgICAgICAgICJzb3VyY2UiIDogWyB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIlJldHJpZXZlIiwKICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMjIiLAogICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxODozLTE4OjE2IiwKICAgICAgICAgICAgICAiZGF0YVR5cGUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIsCiAgICAgICAgICAgICAgInRlbXBsYXRlSWQiIDogImh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIyMyIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxODozLTE4OjE4IiwKICAgICAgICAgICAgImFsaWFzIiA6ICJJIgogICAgICAgICAgfSBdLAogICAgICAgICAgInJlbGF0aW9uc2hpcCIgOiBbIF0sCiAgICAgICAgICAid2hlcmUiIDogewogICAgICAgICAgICAidHlwZSIgOiAiQW5kIiwKICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgInR5cGUiIDogIkFuZCIsCiAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI1IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE5OjE3LTE5OjM1IiwKICAgICAgICAgICAgICAgICAgInBhdGgiIDogInByb3RvY29sQXBwbGllZCIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiSSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMjYiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE5OjExLTE5OjM1IgogICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFeGlzdHMiLAogICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjA6MTgtMjA6MzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJwcm90b2NvbEFwcGxpZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiSSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImFsaWFzIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogImRvc2VOdW1iZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAiZG9zZU51bWJlciIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI5IiwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMDoxOC0yMDo0NSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMzAiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjA6MTctMjA6NTIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMxIiwKICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMDoxMS0yMDo1MiIKICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMyIiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTk6MTEtMjA6NTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlF1ZXJ5IiwKICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzZWRRdWVyeVNvdXJjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIzNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjIxOjIyLTIxOjM4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicHJvdG9jb2xBcHBsaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogIkkiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAid2hlcmUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJJc051bGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlJldHVybkNsYXVzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjM1IiwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMToyMi0yMTo1MCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMzYiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjE6MjEtMjE6NTciCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjM3IiwKICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMToxNS0yMTo1NyIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJsb2NhbElkIiA6ICIzOCIsCiAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjIxOjExLTIxOjU3IgogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIzOSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxOTo1LTIxOjU3IgogICAgICAgICAgfSwKICAgICAgICAgICJsb2NhbElkIiA6ICI0MCIsCiAgICAgICAgICAibG9jYXRvciIgOiAiMTg6My0yMTo1NyIKICAgICAgICB9LAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAiZGVmaW5lICIsICJcIkdldFNpbmdsZURvc2VcIiIsICI6XG4gICIgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJbIiwgIkltbXVuaXphdGlvbiIsICJdIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjIzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlxuICAgICIgXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIndoZXJlICIgXQogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgImV4aXN0cyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIigiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInByb3RvY29sQXBwbGllZCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJcbiAgICAgIGFuZCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgImRvc2VOdW1iZXIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJ2YWx1ZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlxuICAgICAgYW5kICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIm5vdCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInNlcmllc0Rvc2VzIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAidmFsdWUiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiKSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM2IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM4IgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM5IgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgInIiIDogIjM5IgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgInIiIDogIjQwIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjQxIgogICAgICAgICAgfQogICAgICAgIH0gXSwKICAgICAgICAibG9jYWxJZCIgOiAiNDEiLAogICAgICAgICJsb2NhdG9yIiA6ICIxNzoxLTIxOjU3IiwKICAgICAgICAibmFtZSIgOiAiR2V0U2luZ2xlRG9zZSIsCiAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIgogICAgICB9LCB7CiAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25EZWYiLAogICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJPciIsCiAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgInR5cGUiIDogIkV4aXN0cyIsCiAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIsCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjIwIiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTA6OS0xMDoyMiIsCiAgICAgICAgICAgICAgIm5hbWUiIDogIkdldEZpbmFsRG9zZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxvY2FsSWQiIDogIjIxIiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjEwOjMtMTA6MjIiCiAgICAgICAgICB9LCB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJFeGlzdHMiLAogICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiLAogICAgICAgICAgICAgICJsb2NhbElkIiA6ICI0MiIsCiAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjEwOjMzLTEwOjQ3IiwKICAgICAgICAgICAgICAibmFtZSIgOiAiR2V0U2luZ2xlRG9zZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxvY2FsSWQiIDogIjQzIiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjEwOjI3LTEwOjQ3IgogICAgICAgICAgfSBdLAogICAgICAgICAgImxvY2FsSWQiIDogIjQ0IiwKICAgICAgICAgICJsb2NhdG9yIiA6ICIxMDozLTEwOjQ3IgogICAgICAgIH0sCiAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgIiIsICJkZWZpbmUgIiwgIlwiQ29tcGxldGVkSW1tdW5pemF0aW9uXCIiLCAiOlxuICAiIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiZXhpc3RzIiBdCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiKCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIkdldEZpbmFsRG9zZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjIwIgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjAiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjEiCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIgb3IgIiBdCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiZXhpc3RzIiBdCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiKCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIkdldFNpbmdsZURvc2UiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0MiIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiKSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQyIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgInIiIDogIjQzIgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgInIiIDogIjQ0IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjQ1IgogICAgICAgICAgfQogICAgICAgIH0gXSwKICAgICAgICAibG9jYWxJZCIgOiAiNDUiLAogICAgICAgICJsb2NhdG9yIiA6ICI5OjEtMTA6NDciLAogICAgICAgICJuYW1lIiA6ICJDb21wbGV0ZWRJbW11bml6YXRpb24iLAogICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IiwKICAgICAgICAiYWNjZXNzTGV2ZWwiIDogIlB1YmxpYyIKICAgICAgfSBdCiAgICB9LAogICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICJ0eXBlIiA6ICJDcWxUb0VsbUluZm8iLAogICAgICAidHJhbnNsYXRvck9wdGlvbnMiIDogIkVuYWJsZUFubm90YXRpb25zLEVuYWJsZUxvY2F0b3JzLERpc2FibGVMaXN0RGVtb3Rpb24sRGlzYWJsZUxpc3RQcm9tb3Rpb24iCiAgICB9LCB7CiAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgInMiIDogewogICAgICAgICJzIiA6IFsgewogICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAicyIgOiBbICIiLCAibGlicmFyeSBJbW11bml0eUNoZWNrIHZlcnNpb24gJzEuMC4wJyIgXQogICAgICAgICAgfSwKICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICB9IF0sCiAgICAgICAgInIiIDogIjQxIgogICAgICB9CiAgICB9IF0KICB9Cn0=" - }, - { - "contentType": "application/elm+xml", - "data": "PD94bWwgdmVyc2lvbj0nMS4xJyBlbmNvZGluZz0nVVRGLTgnPz4KPExpYnJhcnkgdHlwZT0iTGlicmFyeSI+CiAgPHdzdHhuczE6aWRlbnRpZmllciB4bWxuczp3c3R4bnMxPSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczE6dHlwZT0iVmVyc2lvbmVkSWRlbnRpZmllciIgaWQ9IkltbXVuaXR5Q2hlY2siIHZlcnNpb249IjEuMC4wIi8+CiAgPHdzdHhuczI6c2NoZW1hSWRlbnRpZmllciB4bWxuczp3c3R4bnMyPSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczI6dHlwZT0iVmVyc2lvbmVkSWRlbnRpZmllciIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4KICA8d3N0eG5zMzp1c2luZ3MgeG1sbnM6d3N0eG5zMz0idXJuOmhsNy1vcmc6ZWxtOnIxIiB3c3R4bnMzOnR5cGU9IkxpYnJhcnkkVXNpbmdzIj4KICAgIDx3c3R4bnMzOmRlZj4KICAgICAgPHdzdHhuczM6ZGVmIHdzdHhuczM6dHlwZT0iVXNpbmdEZWYiIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPgogICAgICA8d3N0eG5zMzpkZWYgd3N0eG5zMzp0eXBlPSJVc2luZ0RlZiIgbG9jYWxJZD0iMSIgbG9jYXRvcj0iMzoxLTM6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgPHdzdHhuczM6YW5ub3RhdGlvbj4KICAgICAgICAgIDx3c3R4bnMzOmFubm90YXRpb24gd3N0eG5zMzp0eXBlPSJBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPHdzdHhuczQ6cyB4bWxuczp3c3R4bnM0PSJ1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjEiIHI9IjEiPgogICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgPHM+PC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+dXNpbmcgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkZISVI8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPiB2ZXJzaW9uIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPic0LjAuMSc8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgPC93c3R4bnM0OnM+CiAgICAgICAgICA8L3dzdHhuczM6YW5ub3RhdGlvbj4KICAgICAgICA8L3dzdHhuczM6YW5ub3RhdGlvbj4KICAgICAgPC93c3R4bnMzOmRlZj4KICAgIDwvd3N0eG5zMzpkZWY+CiAgPC93c3R4bnMzOnVzaW5ncz4KICA8d3N0eG5zNTppbmNsdWRlcyB4bWxuczp3c3R4bnM1PSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczU6dHlwZT0iTGlicmFyeSRJbmNsdWRlcyI+CiAgICA8d3N0eG5zNTpkZWY+CiAgICAgIDx3c3R4bnM1OmRlZiB3c3R4bnM1OnR5cGU9IkluY2x1ZGVEZWYiIGxvY2FsSWQ9IjIiIGxvY2F0b3I9IjU6MS01OjU2IiBsb2NhbElkZW50aWZpZXI9IkZISVJIZWxwZXJzIiBwYXRoPSJGSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgIDx3c3R4bnM1OmFubm90YXRpb24+CiAgICAgICAgICA8d3N0eG5zNTphbm5vdGF0aW9uIHdzdHhuczU6dHlwZT0iQW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDx3c3R4bnM2OnMgeG1sbnM6d3N0eG5zNj0idXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxIiByPSIyIj4KICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPmluY2x1ZGUgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiJGSElSSGVscGVycyI8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPiB2ZXJzaW9uIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPic0LjAuMSc8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4gY2FsbGVkIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPkZISVJIZWxwZXJzPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgIDwvd3N0eG5zNjpzPgogICAgICAgICAgPC93c3R4bnM1OmFubm90YXRpb24+CiAgICAgICAgPC93c3R4bnM1OmFubm90YXRpb24+CiAgICAgIDwvd3N0eG5zNTpkZWY+CiAgICA8L3dzdHhuczU6ZGVmPgogIDwvd3N0eG5zNTppbmNsdWRlcz4KICA8d3N0eG5zNzpjb250ZXh0cyB4bWxuczp3c3R4bnM3PSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczc6dHlwZT0iTGlicmFyeSRDb250ZXh0cyI+CiAgICA8d3N0eG5zNzpkZWY+CiAgICAgIDx3c3R4bnM3OmRlZiB3c3R4bnM3OnR5cGU9IkNvbnRleHREZWYiIGxvY2F0b3I9Ijc6MS03OjE1IiBuYW1lPSJQYXRpZW50Ii8+CiAgICA8L3dzdHhuczc6ZGVmPgogIDwvd3N0eG5zNzpjb250ZXh0cz4KICA8d3N0eG5zODpzdGF0ZW1lbnRzIHhtbG5zOndzdHhuczg9InVybjpobDctb3JnOmVsbTpyMSIgd3N0eG5zODp0eXBlPSJMaWJyYXJ5JFN0YXRlbWVudHMiPgogICAgPHdzdHhuczg6ZGVmPgogICAgICA8d3N0eG5zODpkZWYgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uRGVmIiBsb2NhdG9yPSI3OjEtNzoxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlNpbmdsZXRvbkZyb20iPgogICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlJldHJpZXZlIiBsb2NhdG9yPSI3OjEtNzoxNSIgZGF0YVR5cGU9IntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9QYXRpZW50Ii8+CiAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgIDwvd3N0eG5zODpkZWY+CiAgICAgIDx3c3R4bnM4OmRlZiB3c3R4bnM4OnR5cGU9IkV4cHJlc3Npb25EZWYiIGxvY2FsSWQ9IjE5IiBsb2NhdG9yPSIxMjoxLTE1OjgyIiBuYW1lPSJHZXRGaW5hbERvc2UiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iMTgiIGxvY2F0b3I9IjEzOjMtMTU6ODIiPgogICAgICAgICAgPHdzdHhuczg6c291cmNlPgogICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGxvY2FsSWQ9IjQiIGxvY2F0b3I9IjEzOjMtMTM6MTgiIGFsaWFzPSJJIj4KICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUmV0cmlldmUiIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjEzOjMtMTM6MTYiIGRhdGFUeXBlPSJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbW11bml6YXRpb24iIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iLz4KICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICA8d3N0eG5zODpyZWxhdGlvbnNoaXAvPgogICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJBbmQiIGxvY2FsSWQ9IjE3IiBsb2NhdG9yPSIxNDo1LTE1OjgyIj4KICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSI3IiBsb2NhdG9yPSIxNDoxMS0xNDozNSI+CiAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjYiIGxvY2F0b3I9IjE0OjE3LTE0OjM1IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkVxdWFsIiBsb2NhbElkPSIxNiIgbG9jYXRvcj0iMTU6MTEtMTU6ODIiPgogICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIxMSIgbG9jYXRvcj0iMTU6MTEtMTU6NDQiPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIxMCIgbG9jYXRvcj0iMTU6MTEtMTU6MzgiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBsb2NhbElkPSI5IiBsb2NhdG9yPSIxNToxMS0xNToyNyIgcGF0aD0icHJvdG9jb2xBcHBsaWVkIiBzY29wZT0iSSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9ImRvc2VOdW1iZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpyZXR1cm4gd3N0eG5zODp0eXBlPSJSZXR1cm5DbGF1c2UiIGRpc3RpbmN0PSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9ImRvc2VOdW1iZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iMTUiIGxvY2F0b3I9IjE1OjQ4LTE1OjgyIj4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iMTQiIGxvY2F0b3I9IjE1OjQ4LTE1Ojc2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgbG9jYWxJZD0iMTMiIGxvY2F0b3I9IjE1OjQ4LTE1OjY0IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0ic2VyaWVzRG9zZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpyZXR1cm4gd3N0eG5zODp0eXBlPSJSZXR1cm5DbGF1c2UiIGRpc3RpbmN0PSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InNlcmllc0Rvc2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6cmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODp3aGVyZSB3c3R4bnM4OnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0idmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgIDx3c3R4bnM4OmFubm90YXRpb24+CiAgICAgICAgICA8d3N0eG5zODphbm5vdGF0aW9uIHdzdHhuczg6dHlwZT0iQW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDx3c3R4bnM5OnMgeG1sbnM6d3N0eG5zOT0idXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxIiByPSIxOSI+CiAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz48L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz5kZWZpbmUgPC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+IkdldEZpbmFsRG9zZSI8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz46CiAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxOCI+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5bPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+SW1tdW5pemF0aW9uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+XTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjE3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPndoZXJlIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+ZXhpc3RzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPig8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+STwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5wcm90b2NvbEFwcGxpZWQ8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4pPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgIGFuZCA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+STwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5wcm90b2NvbEFwcGxpZWQ8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5kb3NlTnVtYmVyPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+dmFsdWU8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4gPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+PTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjE1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjEzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjE0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnNlcmllc0Rvc2VzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+dmFsdWU8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgPC93c3R4bnM5OnM+CiAgICAgICAgICA8L3dzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgICA8L3dzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgPC93c3R4bnM4OmRlZj4KICAgICAgPHdzdHhuczg6ZGVmIHdzdHhuczg6dHlwZT0iRXhwcmVzc2lvbkRlZiIgbG9jYWxJZD0iNDEiIGxvY2F0b3I9IjE3OjEtMjE6NTciIG5hbWU9IkdldFNpbmdsZURvc2UiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iNDAiIGxvY2F0b3I9IjE4OjMtMjE6NTciPgogICAgICAgICAgPHdzdHhuczg6c291cmNlPgogICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGxvY2FsSWQ9IjIzIiBsb2NhdG9yPSIxODozLTE4OjE4IiBhbGlhcz0iSSI+CiAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlJldHJpZXZlIiBsb2NhbElkPSIyMiIgbG9jYXRvcj0iMTg6My0xODoxNiIgZGF0YVR5cGU9IntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL0ltbXVuaXphdGlvbiIvPgogICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgIDx3c3R4bnM4OnJlbGF0aW9uc2hpcC8+CiAgICAgICAgICA8d3N0eG5zODp3aGVyZSB3c3R4bnM4OnR5cGU9IkFuZCIgbG9jYWxJZD0iMzkiIGxvY2F0b3I9IjE5OjUtMjE6NTciPgogICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJBbmQiIGxvY2FsSWQ9IjMyIiBsb2NhdG9yPSIxOToxMS0yMDo1MiI+CiAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSIyNiIgbG9jYXRvcj0iMTk6MTEtMTk6MzUiPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgbG9jYWxJZD0iMjUiIGxvY2F0b3I9IjE5OjE3LTE5OjM1IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSIzMSIgbG9jYXRvcj0iMjA6MTEtMjA6NTIiPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iMzAiIGxvY2F0b3I9IjIwOjE3LTIwOjUyIj4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNlZFF1ZXJ5U291cmNlIiBhbGlhcz0iJHRoaXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iMjkiIGxvY2F0b3I9IjIwOjE4LTIwOjQ1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNlZFF1ZXJ5U291cmNlIiBhbGlhcz0iJHRoaXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgbG9jYWxJZD0iMjgiIGxvY2F0b3I9IjIwOjE4LTIwOjM0IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9ImRvc2VOdW1iZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9ImRvc2VOdW1iZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iTm90IiBsb2NhbElkPSIzOCIgbG9jYXRvcj0iMjE6MTEtMjE6NTciPgogICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkV4aXN0cyIgbG9jYWxJZD0iMzciIGxvY2F0b3I9IjIxOjE1LTIxOjU3Ij4KICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIzNiIgbG9jYXRvcj0iMjE6MjEtMjE6NTciPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIzNSIgbG9jYXRvcj0iMjE6MjItMjE6NTAiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBsb2NhbElkPSIzNCIgbG9jYXRvcj0iMjE6MjItMjE6MzgiIHBhdGg9InByb3RvY29sQXBwbGllZCIgc2NvcGU9IkkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODp3aGVyZSB3c3R4bnM4OnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJzZXJpZXNEb3NlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0ic2VyaWVzRG9zZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgPHdzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgICAgIDx3c3R4bnM4OmFubm90YXRpb24gd3N0eG5zODp0eXBlPSJBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPHdzdHhuczEwOnMgeG1sbnM6d3N0eG5zMTA9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSIgcj0iNDEiPgogICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgPHM+PC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+ZGVmaW5lIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPiJHZXRTaW5nbGVEb3NlIjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjoKICA8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQwIj4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPls8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JbW11bml6YXRpb248L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5dPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzkiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+d2hlcmUgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPmV4aXN0czwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+KDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgYW5kIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+ZXhpc3RzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4oPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5wcm90b2NvbEFwcGxpZWQ8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5kb3NlTnVtYmVyPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+dmFsdWU8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4pPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICBhbmQgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5ub3QgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5leGlzdHM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPig8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjMzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnNlcmllc0Rvc2VzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+dmFsdWU8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4pPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgIDwvd3N0eG5zMTA6cz4KICAgICAgICAgIDwvd3N0eG5zODphbm5vdGF0aW9uPgogICAgICAgIDwvd3N0eG5zODphbm5vdGF0aW9uPgogICAgICA8L3dzdHhuczg6ZGVmPgogICAgICA8d3N0eG5zODpkZWYgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uRGVmIiBsb2NhbElkPSI0NSIgbG9jYXRvcj0iOToxLTEwOjQ3IiBuYW1lPSJDb21wbGV0ZWRJbW11bml6YXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJPciIgbG9jYWxJZD0iNDQiIGxvY2F0b3I9IjEwOjMtMTA6NDciPgogICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkV4aXN0cyIgbG9jYWxJZD0iMjEiIGxvY2F0b3I9IjEwOjMtMTA6MjIiPgogICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uUmVmIiBsb2NhbElkPSIyMCIgbG9jYXRvcj0iMTA6OS0xMDoyMiIgbmFtZT0iR2V0RmluYWxEb3NlIi8+CiAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSI0MyIgbG9jYXRvcj0iMTA6MjctMTA6NDciPgogICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uUmVmIiBsb2NhbElkPSI0MiIgbG9jYXRvcj0iMTA6MzMtMTA6NDciIG5hbWU9IkdldFNpbmdsZURvc2UiLz4KICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICA8d3N0eG5zODphbm5vdGF0aW9uPgogICAgICAgICAgPHdzdHhuczg6YW5ub3RhdGlvbiB3c3R4bnM4OnR5cGU9IkFubm90YXRpb24iPgogICAgICAgICAgICA8d3N0eG5zMTE6cyB4bWxuczp3c3R4bnMxMT0idXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxIiByPSI0NSI+CiAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz48L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz5kZWZpbmUgPC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+IkNvbXBsZXRlZEltbXVuaXphdGlvbiI8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz46CiAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0NCI+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+ZXhpc3RzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4oPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5HZXRGaW5hbERvc2U8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4gb3IgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5leGlzdHM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPig8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkdldFNpbmdsZURvc2U8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgPC93c3R4bnMxMTpzPgogICAgICAgICAgPC93c3R4bnM4OmFubm90YXRpb24+CiAgICAgICAgPC93c3R4bnM4OmFubm90YXRpb24+CiAgICAgIDwvd3N0eG5zODpkZWY+CiAgICA8L3dzdHhuczg6ZGVmPgogIDwvd3N0eG5zODpzdGF0ZW1lbnRzPgogIDx3c3R4bnMxMjphbm5vdGF0aW9uIHhtbG5zOndzdHhuczEyPSJ1cm46aGw3LW9yZzplbG06cjEiPgogICAgPHdzdHhuczEyOmFubm90YXRpb24gd3N0eG5zMTI6dHlwZT0iQ3FsVG9FbG1JbmZvIiB0cmFuc2xhdG9yT3B0aW9ucz0iRW5hYmxlQW5ub3RhdGlvbnMsRW5hYmxlTG9jYXRvcnMsRGlzYWJsZUxpc3REZW1vdGlvbixEaXNhYmxlTGlzdFByb21vdGlvbiIvPgogICAgPHdzdHhuczEyOmFubm90YXRpb24gd3N0eG5zMTI6dHlwZT0iQW5ub3RhdGlvbiI+CiAgICAgIDx3c3R4bnMxMzpzIHhtbG5zOndzdHhuczEzPSJ1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjEiIHI9IjQxIj4KICAgICAgICA8cz4KICAgICAgICAgIDxzPgogICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgIDxzPjwvcz4KICAgICAgICAgICAgICAgIDxzPmxpYnJhcnkgSW1tdW5pdHlDaGVjayB2ZXJzaW9uICcxLjAuMCc8L3M+CiAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgPC9zPgogICAgICAgIDwvcz4KICAgICAgPC93c3R4bnMxMzpzPgogICAgPC93c3R4bnMxMjphbm5vdGF0aW9uPgogIDwvd3N0eG5zMTI6YW5ub3RhdGlvbj4KPC9MaWJyYXJ5Pgo=" - } - ] -} \ No newline at end of file +{"resourceType":"Library","id":"ImmunityCheck-1.0.0","url":"http://localhost/Library/ImmunityCheck|1.0.0","version":"1.0.0","name":"ImmunityCheck","status":"active","experimental":true,"content":[{"contentType":"text/cql","data":"bGlicmFyeSBJbW11bml0eUNoZWNrIHZlcnNpb24gJzEuMC4wJwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgIkZISVJIZWxwZXJzIiB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiQ29tcGxldGVkSW1tdW5pemF0aW9uIjoKICBleGlzdHMoR2V0RmluYWxEb3NlKSBvciBleGlzdHMoR2V0U2luZ2xlRG9zZSkKCmRlZmluZSAiR2V0RmluYWxEb3NlIjoKICBbSW1tdW5pemF0aW9uXSBJCiAgICB3aGVyZSBleGlzdHMoSS5wcm90b2NvbEFwcGxpZWQpCiAgICAgIGFuZCBJLnByb3RvY29sQXBwbGllZC5kb3NlTnVtYmVyLnZhbHVlID0gSS5wcm90b2NvbEFwcGxpZWQuc2VyaWVzRG9zZXMudmFsdWUKCmRlZmluZSAiR2V0U2luZ2xlRG9zZSI6CiAgW0ltbXVuaXphdGlvbl0gSQogICAgd2hlcmUgZXhpc3RzKEkucHJvdG9jb2xBcHBsaWVkKQogICAgICBhbmQgZXhpc3RzKEkucHJvdG9jb2xBcHBsaWVkLmRvc2VOdW1iZXIudmFsdWUpCiAgICAgIGFuZCBub3QgZXhpc3RzKEkucHJvdG9jb2xBcHBsaWVkLnNlcmllc0Rvc2VzLnZhbHVlKQoKZGVmaW5lICJHZXRGaW5hbERvc2VXaXRoTG9jYXRpb25EYXRhIjoKICBbSW1tdW5pemF0aW9uXSBJCiAgICAgd2l0aCBbTG9jYXRpb25dIEwKICAgICAgICBzdWNoIHRoYXQgSS5sb2NhdGlvbi5yZWZlcmVuY2UudmFsdWUgPSAnTG9jYXRpb24vJysgTC5pZAogICAgICAgICAgICBhbmQgSS5wcm90b2NvbEFwcGxpZWQuZG9zZU51bWJlci52YWx1ZSA9IEkucHJvdG9jb2xBcHBsaWVkLnNlcmllc0Rvc2VzLnZhbHVl"},{"contentType":"application/elm+json","data":"ewogICJsaWJyYXJ5IiA6IHsKICAgICJ0eXBlIiA6ICJMaWJyYXJ5IiwKICAgICJpZGVudGlmaWVyIiA6IHsKICAgICAgInR5cGUiIDogIlZlcnNpb25lZElkZW50aWZpZXIiLAogICAgICAiaWQiIDogIkltbXVuaXR5Q2hlY2siLAogICAgICAidmVyc2lvbiIgOiAiMS4wLjAiCiAgICB9LAogICAgInNjaGVtYUlkZW50aWZpZXIiIDogewogICAgICAidHlwZSIgOiAiVmVyc2lvbmVkSWRlbnRpZmllciIsCiAgICAgICJpZCIgOiAidXJuOmhsNy1vcmc6ZWxtIiwKICAgICAgInZlcnNpb24iIDogInIxIgogICAgfSwKICAgICJ1c2luZ3MiIDogewogICAgICAidHlwZSIgOiAiTGlicmFyeSRVc2luZ3MiLAogICAgICAiZGVmIiA6IFsgewogICAgICAgICJ0eXBlIiA6ICJVc2luZ0RlZiIsCiAgICAgICAgImxvY2FsSWRlbnRpZmllciIgOiAiU3lzdGVtIiwKICAgICAgICAidXJpIiA6ICJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEiCiAgICAgIH0sIHsKICAgICAgICAidHlwZSIgOiAiVXNpbmdEZWYiLAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAidXNpbmcgIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiRkhJUiIgXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgIiB2ZXJzaW9uICIsICInNC4wLjEnIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAiciIgOiAiMSIKICAgICAgICAgIH0KICAgICAgICB9IF0sCiAgICAgICAgImxvY2FsSWQiIDogIjEiLAogICAgICAgICJsb2NhdG9yIiA6ICIzOjEtMzoyNiIsCiAgICAgICAgImxvY2FsSWRlbnRpZmllciIgOiAiRkhJUiIsCiAgICAgICAgInVyaSIgOiAiaHR0cDovL2hsNy5vcmcvZmhpciIsCiAgICAgICAgInZlcnNpb24iIDogIjQuMC4xIgogICAgICB9IF0KICAgIH0sCiAgICAiaW5jbHVkZXMiIDogewogICAgICAidHlwZSIgOiAiTGlicmFyeSRJbmNsdWRlcyIsCiAgICAgICJkZWYiIDogWyB7CiAgICAgICAgInR5cGUiIDogIkluY2x1ZGVEZWYiLAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAiaW5jbHVkZSAiIF0KICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJcIkZISVJIZWxwZXJzXCIiIF0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIgdmVyc2lvbiAiLCAiJzQuMC4xJyIsICIgY2FsbGVkICIsICJGSElSSGVscGVycyIgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjIiCiAgICAgICAgICB9CiAgICAgICAgfSBdLAogICAgICAgICJsb2NhbElkIiA6ICIyIiwKICAgICAgICAibG9jYXRvciIgOiAiNToxLTU6NTYiLAogICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIkZISVJIZWxwZXJzIiwKICAgICAgICAicGF0aCIgOiAiRkhJUkhlbHBlcnMiLAogICAgICAgICJ2ZXJzaW9uIiA6ICI0LjAuMSIKICAgICAgfSBdCiAgICB9LAogICAgImNvbnRleHRzIiA6IHsKICAgICAgInR5cGUiIDogIkxpYnJhcnkkQ29udGV4dHMiLAogICAgICAiZGVmIiA6IFsgewogICAgICAgICJ0eXBlIiA6ICJDb250ZXh0RGVmIiwKICAgICAgICAibG9jYXRvciIgOiAiNzoxLTc6MTUiLAogICAgICAgICJuYW1lIiA6ICJQYXRpZW50IgogICAgICB9IF0KICAgIH0sCiAgICAic3RhdGVtZW50cyIgOiB7CiAgICAgICJ0eXBlIiA6ICJMaWJyYXJ5JFN0YXRlbWVudHMiLAogICAgICAiZGVmIiA6IFsgewogICAgICAgICJ0eXBlIiA6ICJFeHByZXNzaW9uRGVmIiwKICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiAiU2luZ2xldG9uRnJvbSIsCiAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI3OjEtNzoxNSIsCiAgICAgICAgICAgICJkYXRhVHlwZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGF0aWVudCIsCiAgICAgICAgICAgICJ0ZW1wbGF0ZUlkIiA6ICJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vUGF0aWVudCIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJsb2NhdG9yIiA6ICI3OjEtNzoxNSIsCiAgICAgICAgIm5hbWUiIDogIlBhdGllbnQiLAogICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IgogICAgICB9LCB7CiAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25EZWYiLAogICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMiLAogICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMzozLTEzOjE2IiwKICAgICAgICAgICAgICAiZGF0YVR5cGUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIsCiAgICAgICAgICAgICAgInRlbXBsYXRlSWQiIDogImh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICI0IiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjEzOjMtMTM6MTgiLAogICAgICAgICAgICAiYWxpYXMiIDogIkkiCiAgICAgICAgICB9IF0sCiAgICAgICAgICAicmVsYXRpb25zaGlwIiA6IFsgXSwKICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJBbmQiLAogICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjYiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE0OjE3LTE0OjM1IiwKICAgICAgICAgICAgICAgICJwYXRoIiA6ICJwcm90b2NvbEFwcGxpZWQiLAogICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjciLAogICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNDoxMS0xNDozNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJ0eXBlIiA6ICJFcXVhbCIsCiAgICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXN0VHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQ2hvaWNlVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICJjaG9pY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIKICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIKICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgInR5cGUiIDogIkxpc3RUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJDaG9pY2VUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgImNob2ljZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIgogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIgogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzZWRRdWVyeVNvdXJjZSIsCiAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTU6MTEtMTU6MjciLAogICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicHJvdG9jb2xBcHBsaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJkb3NlTnVtYmVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogImRvc2VOdW1iZXIiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTAiLAogICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNToxMS0xNTozOCIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgImFsaWFzIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOb3QiLAogICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogInZhbHVlIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUmV0dXJuQ2xhdXNlIiwKICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogInZhbHVlIgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAiZGlzdGluY3QiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTEiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE1OjExLTE1OjQ0IgogICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTU6NDgtMTU6NjQiLAogICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicHJvdG9jb2xBcHBsaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUmV0dXJuQ2xhdXNlIiwKICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAiZGlzdGluY3QiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNCIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE1OjQ4LTE1Ojc2IgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAiYWxpYXMiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5vdCIsCiAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNSIsCiAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTU6NDgtMTU6ODIiCiAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNiIsCiAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE1OjExLTE1OjgyIgogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNyIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNDo1LTE1OjgyIgogICAgICAgICAgfSwKICAgICAgICAgICJsb2NhbElkIiA6ICIxOCIsCiAgICAgICAgICAibG9jYXRvciIgOiAiMTM6My0xNTo4MiIKICAgICAgICB9LAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAiZGVmaW5lICIsICJcIkdldEZpbmFsRG9zZVwiIiwgIjpcbiAgIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlsiLCAiSW1tdW5pemF0aW9uIiwgIl0iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiXG4gICAgIiBdCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAid2hlcmUgIiBdCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJJIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInByb3RvY29sQXBwbGllZCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI3IgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJcbiAgICAgIGFuZCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiZG9zZU51bWJlciIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjEwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjEwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJ2YWx1ZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjExIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjExIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiICIsICI9IiwgIiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJJIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJzZXJpZXNEb3NlcyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJ2YWx1ZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE2IgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE3IgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgInIiIDogIjE3IgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgInIiIDogIjE4IgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjE5IgogICAgICAgICAgfQogICAgICAgIH0gXSwKICAgICAgICAibG9jYWxJZCIgOiAiMTkiLAogICAgICAgICJsb2NhdG9yIiA6ICIxMjoxLTE1OjgyIiwKICAgICAgICAibmFtZSIgOiAiR2V0RmluYWxEb3NlIiwKICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgImFjY2Vzc0xldmVsIiA6ICJQdWJsaWMiCiAgICAgIH0sIHsKICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvbkRlZiIsCiAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgInR5cGUiIDogIlF1ZXJ5IiwKICAgICAgICAgICJzb3VyY2UiIDogWyB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIlJldHJpZXZlIiwKICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMjIiLAogICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxODozLTE4OjE2IiwKICAgICAgICAgICAgICAiZGF0YVR5cGUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIsCiAgICAgICAgICAgICAgInRlbXBsYXRlSWQiIDogImh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIyMyIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxODozLTE4OjE4IiwKICAgICAgICAgICAgImFsaWFzIiA6ICJJIgogICAgICAgICAgfSBdLAogICAgICAgICAgInJlbGF0aW9uc2hpcCIgOiBbIF0sCiAgICAgICAgICAid2hlcmUiIDogewogICAgICAgICAgICAidHlwZSIgOiAiQW5kIiwKICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgInR5cGUiIDogIkFuZCIsCiAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXN0VHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbi5Qcm90b2NvbEFwcGxpZWQiCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI1IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE5OjE3LTE5OjM1IiwKICAgICAgICAgICAgICAgICAgInBhdGgiIDogInByb3RvY29sQXBwbGllZCIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiSSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMjYiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE5OjExLTE5OjM1IgogICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFeGlzdHMiLAogICAgICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpc3RUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQ2hvaWNlVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgImNob2ljZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIKICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjA6MTgtMjA6MzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJwcm90b2NvbEFwcGxpZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiSSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImFsaWFzIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogImRvc2VOdW1iZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAiZG9zZU51bWJlciIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI5IiwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMDoxOC0yMDo0NSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMzAiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjA6MTctMjA6NTIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMxIiwKICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMDoxMS0yMDo1MiIKICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMyIiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTk6MTEtMjA6NTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXN0VHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkNob2ljZVR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICJjaG9pY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciCiAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlF1ZXJ5IiwKICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzZWRRdWVyeVNvdXJjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIzNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjIxOjIyLTIxOjM4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicHJvdG9jb2xBcHBsaWVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogIkkiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAid2hlcmUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJJc051bGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlJldHVybkNsYXVzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJzZXJpZXNEb3NlcyIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjM1IiwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMToyMi0yMTo1MCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMzYiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjE6MjEtMjE6NTciCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjM3IiwKICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMToxNS0yMTo1NyIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJsb2NhbElkIiA6ICIzOCIsCiAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjIxOjExLTIxOjU3IgogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIzOSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxOTo1LTIxOjU3IgogICAgICAgICAgfSwKICAgICAgICAgICJsb2NhbElkIiA6ICI0MCIsCiAgICAgICAgICAibG9jYXRvciIgOiAiMTg6My0yMTo1NyIKICAgICAgICB9LAogICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgInMiIDogewogICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbICIiLCAiZGVmaW5lICIsICJcIkdldFNpbmdsZURvc2VcIiIsICI6XG4gICIgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJbIiwgIkltbXVuaXphdGlvbiIsICJdIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjIzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlxuICAgICIgXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIndoZXJlICIgXQogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgImV4aXN0cyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIigiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInByb3RvY29sQXBwbGllZCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJcbiAgICAgIGFuZCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgImRvc2VOdW1iZXIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJ2YWx1ZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlxuICAgICAgYW5kICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIm5vdCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAicHJvdG9jb2xBcHBsaWVkIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInNlcmllc0Rvc2VzIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAidmFsdWUiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzNiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiKSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM2IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM3IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM4IgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM5IgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgInIiIDogIjM5IgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgInIiIDogIjQwIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgInIiIDogIjQxIgogICAgICAgICAgfQogICAgICAgIH0gXSwKICAgICAgICAibG9jYWxJZCIgOiAiNDEiLAogICAgICAgICJsb2NhdG9yIiA6ICIxNzoxLTIxOjU3IiwKICAgICAgICAibmFtZSIgOiAiR2V0U2luZ2xlRG9zZSIsCiAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIgogICAgICB9LCB7CiAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25EZWYiLAogICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJPciIsCiAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgInR5cGUiIDogIkV4aXN0cyIsCiAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgInR5cGUiIDogIkxpc3RUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAibmFtZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1tdW5pemF0aW9uIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiLAogICAgICAgICAgICAgICJsb2NhbElkIiA6ICIyMCIsCiAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjEwOjktMTA6MjIiLAogICAgICAgICAgICAgICJuYW1lIiA6ICJHZXRGaW5hbERvc2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICIyMSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMDozLTEwOjIyIgogICAgICAgICAgfSwgewogICAgICAgICAgICAidHlwZSIgOiAiRXhpc3RzIiwKICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICJlbGVtZW50VHlwZSIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbW11bml6YXRpb24iCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIsCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQyIiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTA6MzMtMTA6NDciLAogICAgICAgICAgICAgICJuYW1lIiA6ICJHZXRTaW5nbGVEb3NlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAibG9jYWxJZCIgOiAiNDMiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiMTA6MjctMTA6NDciCiAgICAgICAgICB9IF0sCiAgICAgICAgICAibG9jYWxJZCIgOiAiNDQiLAogICAgICAgICAgImxvY2F0b3IiIDogIjEwOjMtMTA6NDciCiAgICAgICAgfSwKICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgInMiIDogWyAiIiwgImRlZmluZSAiLCAiXCJDb21wbGV0ZWRJbW11bml6YXRpb25cIiIsICI6XG4gICIgXQogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiR2V0RmluYWxEb3NlIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIikiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyMCIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJyIiA6ICIyMSIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiBvciAiIF0KICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJleGlzdHMiIF0KICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiR2V0U2luZ2xlRG9zZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQyIgogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIpIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDIiCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDMiCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAiciIgOiAiNDQiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAiciIgOiAiNDUiCiAgICAgICAgICB9CiAgICAgICAgfSBdLAogICAgICAgICJsb2NhbElkIiA6ICI0NSIsCiAgICAgICAgImxvY2F0b3IiIDogIjk6MS0xMDo0NyIsCiAgICAgICAgIm5hbWUiIDogIkNvbXBsZXRlZEltbXVuaXphdGlvbiIsCiAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIgogICAgICB9LCB7CiAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25EZWYiLAogICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQ2IiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjQ6My0yNDoxNiIsCiAgICAgICAgICAgICAgImRhdGFUeXBlIiA6ICJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbW11bml6YXRpb24iLAogICAgICAgICAgICAgICJ0ZW1wbGF0ZUlkIiA6ICJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vSW1tdW5pemF0aW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICAibG9jYWxJZCIgOiAiNDciLAogICAgICAgICAgICAibG9jYXRvciIgOiAiMjQ6My0yNDoxOCIsCiAgICAgICAgICAgICJhbGlhcyIgOiAiSSIKICAgICAgICAgIH0gXSwKICAgICAgICAgICJyZWxhdGlvbnNoaXAiIDogWyB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJXaXRoIiwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQ4IiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjU6MTEtMjU6MjAiLAogICAgICAgICAgICAgICJkYXRhVHlwZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TG9jYXRpb24iLAogICAgICAgICAgICAgICJ0ZW1wbGF0ZUlkIiA6ICJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vTG9jYXRpb24iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWNoVGhhdCIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIkFuZCIsCiAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXF1YWwiLAogICAgICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIKICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI1MSIsCiAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjY6MTktMjY6MjgiLAogICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogImxvY2F0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiSSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI1MiIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI2OjE5LTI2OjM4IiwKICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAicmVmZXJlbmNlIgogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTMiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjY6MTktMjY6NDQiLAogICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJDb25jYXRlbmF0ZSIsCiAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXRlcmFsIiwKICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTQiLAogICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNjo0OC0yNjo1OCIsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiTG9jYXRpb24vIgogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkZ1bmN0aW9uUmVmIiwKICAgICAgICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9c3RyaW5nIgogICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTYiLAogICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI2OjYxLTI2OjY0IiwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJpZCIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogIkwiCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJUb1N0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnlOYW1lIiA6ICJGSElSSGVscGVycyIKICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTciLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjY6NDgtMjY6NjQiCiAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTgiLAogICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI2OjE5LTI2OjY0IgogICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFcXVhbCIsCiAgICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJDaG9pY2VUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgICAiY2hvaWNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIgogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIgogICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXN0VHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkNob2ljZVR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICJjaG9pY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiCiAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIsCiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciCiAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNlZFF1ZXJ5U291cmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjYwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjc6MTctMjc6MzMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJwcm90b2NvbEFwcGxpZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiSSIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImFsaWFzIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOb3QiLAogICAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiQWxpYXNSZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogImRvc2VOdW1iZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAiZG9zZU51bWJlciIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgImRpc3RpbmN0IiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjYxIiwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNzoxNy0yNzo0NCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTm90IiwKICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXR1cm4iIDogewogICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJ2YWx1ZSIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNjIiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjc6MTctMjc6NTAiCiAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJRdWVyeSIsCiAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFsaWFzZWRRdWVyeVNvdXJjZSIsCiAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlF1ZXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc2VkUXVlcnlTb3VyY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNzo1NC0yNzo3MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiIDogInByb3RvY29sQXBwbGllZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJJIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAiYWxpYXMiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5vdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSXNOdWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAic2VyaWVzRG9zZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgInJldHVybiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXR1cm5DbGF1c2UiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiJHRoaXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAic2VyaWVzRG9zZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0aW5jdCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI2NSIsCiAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjc6NTQtMjc6ODIiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYWxpYXMiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICJ3aGVyZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5vdCIsCiAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklzTnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIiR0aGlzIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAicmV0dXJuIiA6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUmV0dXJuQ2xhdXNlIiwKICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbGlhc1JlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICIkdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAidmFsdWUiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiZGlzdGluY3QiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjY2IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI3OjU0LTI3Ojg4IgogICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjY3IiwKICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNzoxNy0yNzo4OCIKICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjY4IiwKICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjY6MTktMjc6ODgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJsb2NhbElkIiA6ICI2OSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNTo2LTI3Ojg4IiwKICAgICAgICAgICAgImFsaWFzIiA6ICJMIgogICAgICAgICAgfSBdLAogICAgICAgICAgImxvY2FsSWQiIDogIjcwIiwKICAgICAgICAgICJsb2NhdG9yIiA6ICIyNDozLTI3Ojg4IgogICAgICAgIH0sCiAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgIiIsICJkZWZpbmUgIiwgIlwiR2V0RmluYWxEb3NlV2l0aExvY2F0aW9uRGF0YVwiIiwgIjpcbiAgIiBdCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlsiLCAiSW1tdW5pemF0aW9uIiwgIl0iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0NiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0NiIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiICIsICJJIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDciCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiXG4gICAgICIgXQogICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIndpdGggIiBdCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiWyIsICJMb2NhdGlvbiIsICJdIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiTCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQ5IgogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIlxuICAgICAgICBzdWNoIHRoYXQgIiBdCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjUwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgImxvY2F0aW9uIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJyZWZlcmVuY2UiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1MiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1MiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAidmFsdWUiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1MyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1MyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiPSIsICIgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiJ0xvY2F0aW9uLyciIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1NCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIrICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiTCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjU1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiaWQiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1NiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1NiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1NyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1OCIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiXG4gICAgICAgICAgICBhbmQgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIkkiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1OSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICJwcm90b2NvbEFwcGxpZWQiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgImRvc2VOdW1iZXIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAidmFsdWUiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgIiAiLCAiPSIsICIgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiSSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjYzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgInByb3RvY29sQXBwbGllZCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjY0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjY0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZFR5cGUiIDogIm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAic2VyaWVzRG9zZXMiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2NSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2NSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxTY29wZSIgOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIgOiAiamF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkVHlwZSIgOiAib3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogImphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyAidmFsdWUiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2NiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2NiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2NyIKICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2OCIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAibmlsIiA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZVN1YnN0aXR1dGVkIiA6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICJyIiA6ICI2OSIKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgIm5pbCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICJyIiA6ICI3MCIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAgICAgImdsb2JhbFNjb3BlIiA6IHRydWUsCiAgICAgICAgICAgICAgInR5cGVTdWJzdGl0dXRlZCIgOiBmYWxzZQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJyIiA6ICI3MSIKICAgICAgICAgIH0KICAgICAgICB9IF0sCiAgICAgICAgImxvY2FsSWQiIDogIjcxIiwKICAgICAgICAibG9jYXRvciIgOiAiMjM6MS0yNzo4OCIsCiAgICAgICAgIm5hbWUiIDogIkdldEZpbmFsRG9zZVdpdGhMb2NhdGlvbkRhdGEiLAogICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IiwKICAgICAgICAiYWNjZXNzTGV2ZWwiIDogIlB1YmxpYyIKICAgICAgfSBdCiAgICB9LAogICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICJ0eXBlIiA6ICJDcWxUb0VsbUluZm8iLAogICAgICAidHJhbnNsYXRvck9wdGlvbnMiIDogIkVuYWJsZUFubm90YXRpb25zLEVuYWJsZUxvY2F0b3JzLERpc2FibGVMaXN0RGVtb3Rpb24sRGlzYWJsZUxpc3RQcm9tb3Rpb24iCiAgICB9LCB7CiAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgInMiIDogewogICAgICAgICJzIiA6IFsgewogICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9cyIsCiAgICAgICAgICAiZGVjbGFyZWRUeXBlIiA6ICJvcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmUiLAogICAgICAgICAgInNjb3BlIiA6ICJqYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZSIsCiAgICAgICAgICAidmFsdWUiIDogewogICAgICAgICAgICAicyIgOiBbICIiLCAibGlicmFyeSBJbW11bml0eUNoZWNrIHZlcnNpb24gJzEuMC4wJyIgXQogICAgICAgICAgfSwKICAgICAgICAgICJuaWwiIDogZmFsc2UsCiAgICAgICAgICAiZ2xvYmFsU2NvcGUiIDogdHJ1ZSwKICAgICAgICAgICJ0eXBlU3Vic3RpdHV0ZWQiIDogZmFsc2UKICAgICAgICB9IF0sCiAgICAgICAgInIiIDogIjcxIgogICAgICB9CiAgICB9IF0KICB9Cn0="},{"contentType":"application/elm+xml","data":"PD94bWwgdmVyc2lvbj0nMS4xJyBlbmNvZGluZz0nVVRGLTgnPz4KPExpYnJhcnkgdHlwZT0iTGlicmFyeSI+CiAgPHdzdHhuczE6aWRlbnRpZmllciB4bWxuczp3c3R4bnMxPSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczE6dHlwZT0iVmVyc2lvbmVkSWRlbnRpZmllciIgaWQ9IkltbXVuaXR5Q2hlY2siIHZlcnNpb249IjEuMC4wIi8+CiAgPHdzdHhuczI6c2NoZW1hSWRlbnRpZmllciB4bWxuczp3c3R4bnMyPSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczI6dHlwZT0iVmVyc2lvbmVkSWRlbnRpZmllciIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4KICA8d3N0eG5zMzp1c2luZ3MgeG1sbnM6d3N0eG5zMz0idXJuOmhsNy1vcmc6ZWxtOnIxIiB3c3R4bnMzOnR5cGU9IkxpYnJhcnkkVXNpbmdzIj4KICAgIDx3c3R4bnMzOmRlZj4KICAgICAgPHdzdHhuczM6ZGVmIHdzdHhuczM6dHlwZT0iVXNpbmdEZWYiIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPgogICAgICA8d3N0eG5zMzpkZWYgd3N0eG5zMzp0eXBlPSJVc2luZ0RlZiIgbG9jYWxJZD0iMSIgbG9jYXRvcj0iMzoxLTM6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgPHdzdHhuczM6YW5ub3RhdGlvbj4KICAgICAgICAgIDx3c3R4bnMzOmFubm90YXRpb24gd3N0eG5zMzp0eXBlPSJBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPHdzdHhuczQ6cyB4bWxuczp3c3R4bnM0PSJ1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjEiIHI9IjEiPgogICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgPHM+PC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+dXNpbmcgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkZISVI8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPiB2ZXJzaW9uIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPic0LjAuMSc8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgPC93c3R4bnM0OnM+CiAgICAgICAgICA8L3dzdHhuczM6YW5ub3RhdGlvbj4KICAgICAgICA8L3dzdHhuczM6YW5ub3RhdGlvbj4KICAgICAgPC93c3R4bnMzOmRlZj4KICAgIDwvd3N0eG5zMzpkZWY+CiAgPC93c3R4bnMzOnVzaW5ncz4KICA8d3N0eG5zNTppbmNsdWRlcyB4bWxuczp3c3R4bnM1PSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczU6dHlwZT0iTGlicmFyeSRJbmNsdWRlcyI+CiAgICA8d3N0eG5zNTpkZWY+CiAgICAgIDx3c3R4bnM1OmRlZiB3c3R4bnM1OnR5cGU9IkluY2x1ZGVEZWYiIGxvY2FsSWQ9IjIiIGxvY2F0b3I9IjU6MS01OjU2IiBsb2NhbElkZW50aWZpZXI9IkZISVJIZWxwZXJzIiBwYXRoPSJGSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgIDx3c3R4bnM1OmFubm90YXRpb24+CiAgICAgICAgICA8d3N0eG5zNTphbm5vdGF0aW9uIHdzdHhuczU6dHlwZT0iQW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDx3c3R4bnM2OnMgeG1sbnM6d3N0eG5zNj0idXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxIiByPSIyIj4KICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPmluY2x1ZGUgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiJGSElSSGVscGVycyI8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPiB2ZXJzaW9uIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPic0LjAuMSc8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4gY2FsbGVkIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPkZISVJIZWxwZXJzPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgIDwvd3N0eG5zNjpzPgogICAgICAgICAgPC93c3R4bnM1OmFubm90YXRpb24+CiAgICAgICAgPC93c3R4bnM1OmFubm90YXRpb24+CiAgICAgIDwvd3N0eG5zNTpkZWY+CiAgICA8L3dzdHhuczU6ZGVmPgogIDwvd3N0eG5zNTppbmNsdWRlcz4KICA8d3N0eG5zNzpjb250ZXh0cyB4bWxuczp3c3R4bnM3PSJ1cm46aGw3LW9yZzplbG06cjEiIHdzdHhuczc6dHlwZT0iTGlicmFyeSRDb250ZXh0cyI+CiAgICA8d3N0eG5zNzpkZWY+CiAgICAgIDx3c3R4bnM3OmRlZiB3c3R4bnM3OnR5cGU9IkNvbnRleHREZWYiIGxvY2F0b3I9Ijc6MS03OjE1IiBuYW1lPSJQYXRpZW50Ii8+CiAgICA8L3dzdHhuczc6ZGVmPgogIDwvd3N0eG5zNzpjb250ZXh0cz4KICA8d3N0eG5zODpzdGF0ZW1lbnRzIHhtbG5zOndzdHhuczg9InVybjpobDctb3JnOmVsbTpyMSIgd3N0eG5zODp0eXBlPSJMaWJyYXJ5JFN0YXRlbWVudHMiPgogICAgPHdzdHhuczg6ZGVmPgogICAgICA8d3N0eG5zODpkZWYgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uRGVmIiBsb2NhdG9yPSI3OjEtNzoxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlNpbmdsZXRvbkZyb20iPgogICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlJldHJpZXZlIiBsb2NhdG9yPSI3OjEtNzoxNSIgZGF0YVR5cGU9IntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9QYXRpZW50Ii8+CiAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgIDwvd3N0eG5zODpkZWY+CiAgICAgIDx3c3R4bnM4OmRlZiB3c3R4bnM4OnR5cGU9IkV4cHJlc3Npb25EZWYiIGxvY2FsSWQ9IjE5IiBsb2NhdG9yPSIxMjoxLTE1OjgyIiBuYW1lPSJHZXRGaW5hbERvc2UiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJRdWVyeSIgbG9jYWxJZD0iMTgiIGxvY2F0b3I9IjEzOjMtMTU6ODIiPgogICAgICAgICAgPHdzdHhuczg6c291cmNlPgogICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGxvY2FsSWQ9IjQiIGxvY2F0b3I9IjEzOjMtMTM6MTgiIGFsaWFzPSJJIj4KICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUmV0cmlldmUiIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjEzOjMtMTM6MTYiIGRhdGFUeXBlPSJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbW11bml6YXRpb24iIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iLz4KICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICA8d3N0eG5zODpyZWxhdGlvbnNoaXAvPgogICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJBbmQiIGxvY2FsSWQ9IjE3IiBsb2NhdG9yPSIxNDo1LTE1OjgyIj4KICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSI3IiBsb2NhdG9yPSIxNDoxMS0xNDozNSI+CiAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjYiIGxvY2F0b3I9IjE0OjE3LTE0OjM1IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkVxdWFsIiBsb2NhbElkPSIxNiIgbG9jYXRvcj0iMTU6MTEtMTU6ODIiPgogICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICA8d3N0eG5zODpzaWduYXR1cmUgd3N0eG5zODp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZWxlbWVudFR5cGUgd3N0eG5zODp0eXBlPSJDaG9pY2VUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmNob2ljZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmNob2ljZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZWxlbWVudFR5cGU+CiAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzaWduYXR1cmU+CiAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZSB3c3R4bnM4OnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODplbGVtZW50VHlwZSB3c3R4bnM4OnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2Ugd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2Ugd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6Y2hvaWNlPgogICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODplbGVtZW50VHlwZT4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzaWduYXR1cmU+CiAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjExIiBsb2NhdG9yPSIxNToxMS0xNTo0NCI+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNlZFF1ZXJ5U291cmNlIiBhbGlhcz0iJHRoaXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjEwIiBsb2NhdG9yPSIxNToxMS0xNTozOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNlZFF1ZXJ5U291cmNlIiBhbGlhcz0iJHRoaXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjkiIGxvY2F0b3I9IjE1OjExLTE1OjI3IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0iZG9zZU51bWJlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0iZG9zZU51bWJlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0idmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpyZXR1cm4gd3N0eG5zODp0eXBlPSJSZXR1cm5DbGF1c2UiIGRpc3RpbmN0PSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6cmV0dXJuPgogICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIxNSIgbG9jYXRvcj0iMTU6NDgtMTU6ODIiPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIxNCIgbG9jYXRvcj0iMTU6NDgtMTU6NzYiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBsb2NhbElkPSIxMyIgbG9jYXRvcj0iMTU6NDgtMTU6NjQiIHBhdGg9InByb3RvY29sQXBwbGllZCIgc2NvcGU9IkkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODp3aGVyZSB3c3R4bnM4OnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJzZXJpZXNEb3NlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0ic2VyaWVzRG9zZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgPHdzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgICAgIDx3c3R4bnM4OmFubm90YXRpb24gd3N0eG5zODp0eXBlPSJBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPHdzdHhuczk6cyB4bWxuczp3c3R4bnM5PSJ1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjEiIHI9IjE5Ij4KICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPmRlZmluZSA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4iR2V0RmluYWxEb3NlIjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjoKICA8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjE4Ij4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPls8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JbW11bml6YXRpb248L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5dPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+d2hlcmUgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5leGlzdHM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+KDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgYW5kIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjExIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPmRvc2VOdW1iZXI8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz52YWx1ZTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz49PC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjE0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+STwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+cHJvdG9jb2xBcHBsaWVkPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+c2VyaWVzRG9zZXM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIxNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz52YWx1ZTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICA8L3dzdHhuczk6cz4KICAgICAgICAgIDwvd3N0eG5zODphbm5vdGF0aW9uPgogICAgICAgIDwvd3N0eG5zODphbm5vdGF0aW9uPgogICAgICA8L3dzdHhuczg6ZGVmPgogICAgICA8d3N0eG5zODpkZWYgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uRGVmIiBsb2NhbElkPSI0MSIgbG9jYXRvcj0iMTc6MS0yMTo1NyIgbmFtZT0iR2V0U2luZ2xlRG9zZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSI0MCIgbG9jYXRvcj0iMTg6My0yMTo1NyI+CiAgICAgICAgICA8d3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgbG9jYWxJZD0iMjMiIGxvY2F0b3I9IjE4OjMtMTg6MTgiIGFsaWFzPSJJIj4KICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUmV0cmlldmUiIGxvY2FsSWQ9IjIyIiBsb2NhdG9yPSIxODozLTE4OjE2IiBkYXRhVHlwZT0ie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1tdW5pemF0aW9uIiB0ZW1wbGF0ZUlkPSJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vSW1tdW5pemF0aW9uIi8+CiAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgPHdzdHhuczg6cmVsYXRpb25zaGlwLz4KICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iQW5kIiBsb2NhbElkPSIzOSIgbG9jYXRvcj0iMTk6NS0yMTo1NyI+CiAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkFuZCIgbG9jYWxJZD0iMzIiIGxvY2F0b3I9IjE5OjExLTIwOjUyIj4KICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFeGlzdHMiIGxvY2FsSWQ9IjI2IiBsb2NhdG9yPSIxOToxMS0xOTozNSI+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlIHdzdHhuczg6dHlwZT0iTGlzdFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODplbGVtZW50VHlwZSB3c3R4bnM4OnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIgbmFtZT0ie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1tdW5pemF0aW9uLlByb3RvY29sQXBwbGllZCIvPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgbG9jYWxJZD0iMjUiIGxvY2F0b3I9IjE5OjE3LTE5OjM1IiBwYXRoPSJwcm90b2NvbEFwcGxpZWQiIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSIzMSIgbG9jYXRvcj0iMjA6MTEtMjA6NTIiPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZSB3c3R4bnM4OnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZWxlbWVudFR5cGUgd3N0eG5zODp0eXBlPSJDaG9pY2VUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2Ugd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODplbGVtZW50VHlwZT4KICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzaWduYXR1cmU+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjMwIiBsb2NhdG9yPSIyMDoxNy0yMDo1MiI+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjI5IiBsb2NhdG9yPSIyMDoxOC0yMDo0NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjI4IiBsb2NhdG9yPSIyMDoxOC0yMDozNCIgcGF0aD0icHJvdG9jb2xBcHBsaWVkIiBzY29wZT0iSSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJkb3NlTnVtYmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJkb3NlTnVtYmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6cmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpyZXR1cm4gd3N0eG5zODp0eXBlPSJSZXR1cm5DbGF1c2UiIGRpc3RpbmN0PSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0idmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9Ik5vdCIgbG9jYWxJZD0iMzgiIGxvY2F0b3I9IjIxOjExLTIxOjU3Ij4KICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFeGlzdHMiIGxvY2FsSWQ9IjM3IiBsb2NhdG9yPSIyMToxNS0yMTo1NyI+CiAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzaWduYXR1cmUgd3N0eG5zODp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODplbGVtZW50VHlwZSB3c3R4bnM4OnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2Ugd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpjaG9pY2U+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZWxlbWVudFR5cGU+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIzNiIgbG9jYXRvcj0iMjE6MjEtMjE6NTciPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlF1ZXJ5IiBsb2NhbElkPSIzNSIgbG9jYXRvcj0iMjE6MjItMjE6NTAiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzZWRRdWVyeVNvdXJjZSIgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBsb2NhbElkPSIzNCIgbG9jYXRvcj0iMjE6MjItMjE6MzgiIHBhdGg9InByb3RvY29sQXBwbGllZCIgc2NvcGU9IkkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODp3aGVyZSB3c3R4bnM4OnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJzZXJpZXNEb3NlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OndoZXJlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0ic2VyaWVzRG9zZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c291cmNlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgPHdzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgICAgIDx3c3R4bnM4OmFubm90YXRpb24gd3N0eG5zODp0eXBlPSJBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPHdzdHhuczEwOnMgeG1sbnM6d3N0eG5zMTA9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSIgcj0iNDEiPgogICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgPHM+PC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+ZGVmaW5lIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPiJHZXRTaW5nbGVEb3NlIjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjoKICA8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQwIj4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPls8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JbW11bml6YXRpb248L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5dPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzkiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+d2hlcmUgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPmV4aXN0czwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+KDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgYW5kIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+ZXhpc3RzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4oPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjI4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5wcm90b2NvbEFwcGxpZWQ8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5kb3NlTnVtYmVyPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+dmFsdWU8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4pPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICBhbmQgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5ub3QgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5leGlzdHM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPig8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIzNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjMzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjM1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnNlcmllc0Rvc2VzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMzYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+dmFsdWU8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4pPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgIDwvd3N0eG5zMTA6cz4KICAgICAgICAgIDwvd3N0eG5zODphbm5vdGF0aW9uPgogICAgICAgIDwvd3N0eG5zODphbm5vdGF0aW9uPgogICAgICA8L3dzdHhuczg6ZGVmPgogICAgICA8d3N0eG5zODpkZWYgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uRGVmIiBsb2NhbElkPSI0NSIgbG9jYXRvcj0iOToxLTEwOjQ3IiBuYW1lPSJDb21wbGV0ZWRJbW11bml6YXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJPciIgbG9jYWxJZD0iNDQiIGxvY2F0b3I9IjEwOjMtMTA6NDciPgogICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkV4aXN0cyIgbG9jYWxJZD0iMjEiIGxvY2F0b3I9IjEwOjMtMTA6MjIiPgogICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZSB3c3R4bnM4OnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZWxlbWVudFR5cGUgd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9IntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIvPgogICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICA8L3dzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uUmVmIiBsb2NhbElkPSIyMCIgbG9jYXRvcj0iMTA6OS0xMDoyMiIgbmFtZT0iR2V0RmluYWxEb3NlIi8+CiAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXhpc3RzIiBsb2NhbElkPSI0MyIgbG9jYXRvcj0iMTA6MjctMTA6NDciPgogICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZSB3c3R4bnM4OnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgPHdzdHhuczg6ZWxlbWVudFR5cGUgd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9IntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIvPgogICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICA8L3dzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFeHByZXNzaW9uUmVmIiBsb2NhbElkPSI0MiIgbG9jYXRvcj0iMTA6MzMtMTA6NDciIG5hbWU9IkdldFNpbmdsZURvc2UiLz4KICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICA8d3N0eG5zODphbm5vdGF0aW9uPgogICAgICAgICAgPHdzdHhuczg6YW5ub3RhdGlvbiB3c3R4bnM4OnR5cGU9IkFubm90YXRpb24iPgogICAgICAgICAgICA8d3N0eG5zMTE6cyB4bWxuczp3c3R4bnMxMT0idXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxIiByPSI0NSI+CiAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz48L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz5kZWZpbmUgPC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+IkNvbXBsZXRlZEltbXVuaXphdGlvbiI8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz46CiAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0NCI+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+ZXhpc3RzPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4oPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSIyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5HZXRGaW5hbERvc2U8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4gb3IgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5leGlzdHM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPig8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkdldFNpbmdsZURvc2U8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPik8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgPC93c3R4bnMxMTpzPgogICAgICAgICAgPC93c3R4bnM4OmFubm90YXRpb24+CiAgICAgICAgPC93c3R4bnM4OmFubm90YXRpb24+CiAgICAgIDwvd3N0eG5zODpkZWY+CiAgICAgIDx3c3R4bnM4OmRlZiB3c3R4bnM4OnR5cGU9IkV4cHJlc3Npb25EZWYiIGxvY2FsSWQ9IjcxIiBsb2NhdG9yPSIyMzoxLTI3Ojg4IiBuYW1lPSJHZXRGaW5hbERvc2VXaXRoTG9jYXRpb25EYXRhIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjcwIiBsb2NhdG9yPSIyNDozLTI3Ojg4Ij4KICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNlZFF1ZXJ5U291cmNlIiBsb2NhbElkPSI0NyIgbG9jYXRvcj0iMjQ6My0yNDoxOCIgYWxpYXM9IkkiPgogICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJSZXRyaWV2ZSIgbG9jYWxJZD0iNDYiIGxvY2F0b3I9IjI0OjMtMjQ6MTYiIGRhdGFUeXBlPSJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbW11bml6YXRpb24iIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9JbW11bml6YXRpb24iLz4KICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICA8d3N0eG5zODpyZWxhdGlvbnNoaXA+CiAgICAgICAgICAgIDx3c3R4bnM4OnJlbGF0aW9uc2hpcCB3c3R4bnM4OnR5cGU9IldpdGgiIGxvY2FsSWQ9IjY5IiBsb2NhdG9yPSIyNTo2LTI3Ojg4IiBhbGlhcz0iTCI+CiAgICAgICAgICAgICAgPHdzdHhuczg6ZXhwcmVzc2lvbiB3c3R4bnM4OnR5cGU9IlJldHJpZXZlIiBsb2NhbElkPSI0OCIgbG9jYXRvcj0iMjU6MTEtMjU6MjAiIGRhdGFUeXBlPSJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Mb2NhdGlvbiIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL0xvY2F0aW9uIi8+CiAgICAgICAgICAgICAgPHdzdHhuczg6c3VjaFRoYXQgd3N0eG5zODp0eXBlPSJBbmQiIGxvY2FsSWQ9IjY4IiBsb2NhdG9yPSIyNjoxOS0yNzo4OCI+CiAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iRXF1YWwiIGxvY2FsSWQ9IjU4IiBsb2NhdG9yPSIyNjoxOS0yNjo2NCI+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIvPgogICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzaWduYXR1cmU+CiAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgbG9jYWxJZD0iNTMiIGxvY2F0b3I9IjI2OjE5LTI2OjQ0IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBsb2NhbElkPSI1MiIgbG9jYXRvcj0iMjY6MTktMjY6MzgiIHBhdGg9InJlZmVyZW5jZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjUxIiBsb2NhdG9yPSIyNjoxOS0yNjoyOCIgcGF0aD0ibG9jYXRpb24iIHNjb3BlPSJJIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJDb25jYXRlbmF0ZSIgbG9jYWxJZD0iNTciIGxvY2F0b3I9IjI2OjQ4LTI2OjY0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iTGl0ZXJhbCIgbG9jYWxJZD0iNTQiIGxvY2F0b3I9IjI2OjQ4LTI2OjU4IiB2YWx1ZVR5cGU9Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiB2YWx1ZT0iTG9jYXRpb24vIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IkZ1bmN0aW9uUmVmIiBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7aHR0cDovL2hsNy5vcmcvZmhpcn1zdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzaWduYXR1cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjU2IiBsb2NhdG9yPSIyNjo2MS0yNjo2NCIgcGF0aD0iaWQiIHNjb3BlPSJMIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJFcXVhbCIgbG9jYWxJZD0iNjciIGxvY2F0b3I9IjI3OjE3LTI3Ojg4Ij4KICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzaWduYXR1cmU+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzaWduYXR1cmUgd3N0eG5zODp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmVsZW1lbnRUeXBlIHdzdHhuczg6dHlwZT0iQ2hvaWNlVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6Y2hvaWNlIHdzdHhuczg6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIiBuYW1lPSJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmNob2ljZSB3c3R4bnM4OnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIgbmFtZT0ie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6Y2hvaWNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZWxlbWVudFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c2lnbmF0dXJlIHdzdHhuczg6dHlwZT0iTGlzdFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODplbGVtZW50VHlwZSB3c3R4bnM4OnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmNob2ljZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmNob2ljZSB3c3R4bnM4OnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIgbmFtZT0ie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpjaG9pY2Ugd3N0eG5zODp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiIG5hbWU9Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmNob2ljZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmVsZW1lbnRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNpZ25hdHVyZT4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6c2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjYyIiBsb2NhdG9yPSIyNzoxNy0yNzo1MCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjYxIiBsb2NhdG9yPSIyNzoxNy0yNzo0NCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjYwIiBsb2NhdG9yPSIyNzoxNy0yNzozMyIgcGF0aD0icHJvdG9jb2xBcHBsaWVkIiBzY29wZT0iSSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0iZG9zZU51bWJlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0iZG9zZU51bWJlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6ZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnJldHVybj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0idmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6cmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjY2IiBsb2NhdG9yPSIyNzo1NC0yNzo4OCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUXVlcnkiIGxvY2FsSWQ9IjY1IiBsb2NhdG9yPSIyNzo1NC0yNzo4MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIGxvY2FsSWQ9IjY0IiBsb2NhdG9yPSIyNzo1NC0yNzo3MCIgcGF0aD0icHJvdG9jb2xBcHBsaWVkIiBzY29wZT0iSSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpzb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OndoZXJlIHdzdHhuczg6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpvcGVyYW5kIHdzdHhuczg6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0ic2VyaWVzRG9zZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpzb3VyY2Ugd3N0eG5zODp0eXBlPSJBbGlhc1JlZiIgbmFtZT0iJHRoaXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpvcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6d2hlcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnJldHVybiB3c3R4bnM4OnR5cGU9IlJldHVybkNsYXVzZSIgZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3N0eG5zODpleHByZXNzaW9uIHdzdHhuczg6dHlwZT0iUHJvcGVydHkiIHBhdGg9InNlcmllc0Rvc2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6cmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OnNvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6d2hlcmUgd3N0eG5zODp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4Om9wZXJhbmQgd3N0eG5zODp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6b3BlcmFuZCB3c3R4bnM4OnR5cGU9IlByb3BlcnR5IiBwYXRoPSJ2YWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OnNvdXJjZSB3c3R4bnM4OnR5cGU9IkFsaWFzUmVmIiBuYW1lPSIkdGhpcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODp3aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6cmV0dXJuIHdzdHhuczg6dHlwZT0iUmV0dXJuQ2xhdXNlIiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx3c3R4bnM4OmV4cHJlc3Npb24gd3N0eG5zODp0eXBlPSJQcm9wZXJ0eSIgcGF0aD0idmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzdHhuczg6c291cmNlIHdzdHhuczg6dHlwZT0iQWxpYXNSZWYiIG5hbWU9IiR0aGlzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC93c3R4bnM4OmV4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3N0eG5zODpyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93c3R4bnM4Om9wZXJhbmQ+CiAgICAgICAgICAgICAgICA8L3dzdHhuczg6b3BlcmFuZD4KICAgICAgICAgICAgICA8L3dzdHhuczg6c3VjaFRoYXQ+CiAgICAgICAgICAgIDwvd3N0eG5zODpyZWxhdGlvbnNoaXA+CiAgICAgICAgICA8L3dzdHhuczg6cmVsYXRpb25zaGlwPgogICAgICAgIDwvd3N0eG5zODpleHByZXNzaW9uPgogICAgICAgIDx3c3R4bnM4OmFubm90YXRpb24+CiAgICAgICAgICA8d3N0eG5zODphbm5vdGF0aW9uIHdzdHhuczg6dHlwZT0iQW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDx3c3R4bnMxMjpzIHhtbG5zOndzdHhuczEyPSJ1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjEiIHI9IjcxIj4KICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgIDxzPjwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPmRlZmluZSA8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz4iR2V0RmluYWxEb3NlV2l0aExvY2F0aW9uRGF0YSI8L3M+CiAgICAgICAgICAgICAgICAgICAgICA8cz46CiAgPC9zPgogICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI3MCI+CiAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNDciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQ2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5bPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+SW1tdW5pemF0aW9uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+XTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5JPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz53aXRoIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNDkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjQ4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI0OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5bPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+TG9jYXRpb248L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5dPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkw8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgIHN1Y2ggdGhhdCA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjY4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI1OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjUyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI1MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNTAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+STwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+bG9jYXRpb248L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI1MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz5yZWZlcmVuY2U8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI1MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz52YWx1ZTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz49PC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjU0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPidMb2NhdGlvbi8nPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4rIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjU1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkw8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjU2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPmlkPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgYW5kIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNjciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjYyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjU5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPkk8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjYwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPnByb3RvY29sQXBwbGllZDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPi48L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjYxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPmRvc2VOdW1iZXI8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz52YWx1ZTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPiA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz49PC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+IDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHI9IjY1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2NCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNjMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+STwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+cHJvdG9jb2xBcHBsaWVkPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+Ljwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcj0iNjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+c2VyaWVzRG9zZXM8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4uPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT57dXJuOmhsNy1vcmc6Y3FsLWFubm90YXRpb25zOnIxfXM8L25hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWNsYXJlZFR5cGU+b3JnLmhsNy5jcWxfYW5ub3RhdGlvbnMucjEuTmFycmF0aXZlPC9kZWNsYXJlZFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5qYXZheC54bWwuYmluZC5KQVhCRWxlbWVudCRHbG9iYWxTY29wZTwvc2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSByPSI2NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+e3VybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMX1zPC9uYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVjbGFyZWRUeXBlPm9yZy5obDcuY3FsX2Fubm90YXRpb25zLnIxLk5hcnJhdGl2ZTwvZGVjbGFyZWRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnQkR2xvYmFsU2NvcGU8L3Njb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cz52YWx1ZTwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmlsPmZhbHNlPC9uaWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnbG9iYWxTY29wZT50cnVlPC9nbG9iYWxTY29wZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGVTdWJzdGl0dXRlZD5mYWxzZTwvdHlwZVN1YnN0aXR1dGVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPG5pbD5mYWxzZTwvbmlsPgogICAgICAgICAgICAgICAgICAgICAgICA8Z2xvYmFsU2NvcGU+dHJ1ZTwvZ2xvYmFsU2NvcGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlU3Vic3RpdHV0ZWQ+ZmFsc2U8L3R5cGVTdWJzdGl0dXRlZD4KICAgICAgICAgICAgICAgICAgICAgIDwvcz4KICAgICAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgICAgPC9zPgogICAgICAgICAgICA8L3dzdHhuczEyOnM+CiAgICAgICAgICA8L3dzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgICA8L3dzdHhuczg6YW5ub3RhdGlvbj4KICAgICAgPC93c3R4bnM4OmRlZj4KICAgIDwvd3N0eG5zODpkZWY+CiAgPC93c3R4bnM4OnN0YXRlbWVudHM+CiAgPHdzdHhuczEzOmFubm90YXRpb24geG1sbnM6d3N0eG5zMTM9InVybjpobDctb3JnOmVsbTpyMSI+CiAgICA8d3N0eG5zMTM6YW5ub3RhdGlvbiB3c3R4bnMxMzp0eXBlPSJDcWxUb0VsbUluZm8iIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIi8+CiAgICA8d3N0eG5zMTM6YW5ub3RhdGlvbiB3c3R4bnMxMzp0eXBlPSJBbm5vdGF0aW9uIj4KICAgICAgPHdzdHhuczE0OnMgeG1sbnM6d3N0eG5zMTQ9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSIgcj0iNzEiPgogICAgICAgIDxzPgogICAgICAgICAgPHM+CiAgICAgICAgICAgIDxuYW1lPnt1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjF9czwvbmFtZT4KICAgICAgICAgICAgPGRlY2xhcmVkVHlwZT5vcmcuaGw3LmNxbF9hbm5vdGF0aW9ucy5yMS5OYXJyYXRpdmU8L2RlY2xhcmVkVHlwZT4KICAgICAgICAgICAgPHNjb3BlPmphdmF4LnhtbC5iaW5kLkpBWEJFbGVtZW50JEdsb2JhbFNjb3BlPC9zY29wZT4KICAgICAgICAgICAgPHZhbHVlPgogICAgICAgICAgICAgIDxzPgogICAgICAgICAgICAgICAgPHM+PC9zPgogICAgICAgICAgICAgICAgPHM+bGlicmFyeSBJbW11bml0eUNoZWNrIHZlcnNpb24gJzEuMC4wJzwvcz4KICAgICAgICAgICAgICA8L3M+CiAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgIDxuaWw+ZmFsc2U8L25pbD4KICAgICAgICAgICAgPGdsb2JhbFNjb3BlPnRydWU8L2dsb2JhbFNjb3BlPgogICAgICAgICAgICA8dHlwZVN1YnN0aXR1dGVkPmZhbHNlPC90eXBlU3Vic3RpdHV0ZWQ+CiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zPgogICAgICA8L3dzdHhuczE0OnM+CiAgICA8L3dzdHhuczEzOmFubm90YXRpb24+CiAgPC93c3R4bnMxMzphbm5vdGF0aW9uPgo8L0xpYnJhcnk+Cg=="}]} \ No newline at end of file diff --git a/workflow-testing/src/main/resources/immunity-check/ImmunizationHistory.json b/workflow-testing/src/main/resources/immunity-check/ImmunizationHistory.json index 1c3f4e44be..aaf0d62ecc 100644 --- a/workflow-testing/src/main/resources/immunity-check/ImmunizationHistory.json +++ b/workflow-testing/src/main/resources/immunity-check/ImmunizationHistory.json @@ -38,7 +38,10 @@ "doseNumberPositiveInt": 2, "seriesDosesPositiveInt": 2 } - ] + ], + "location": { + "reference": "Location/nairobi-047" + } } } ] diff --git a/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/D_FhirJsonParserBenchmark.kt b/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/D_FhirJsonParserBenchmark.kt index a9765b21f5..33fe02815c 100644 --- a/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/D_FhirJsonParserBenchmark.kt +++ b/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/D_FhirJsonParserBenchmark.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -71,7 +71,7 @@ class D_FhirJsonParserBenchmark { val fhirHelpersLibrary = jsonParser.parseResource(fhirHelpersJson) as Library assertThat(immunityCheckLibrary.id).isEqualTo("Library/ImmunityCheck-1.0.0") - assertThat(immunityCheckLibrary.content[0].data.size).isEqualTo(575) + assertThat(immunityCheckLibrary.content[0].data.size).isEqualTo(810) assertThat(fhirHelpersLibrary.id).isEqualTo("Library/FHIRHelpers-4.0.1") assertThat(fhirHelpersLibrary.content[0].data.size).isEqualTo(17845) } diff --git a/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/F_CqlEvaluatorBenchmark.kt b/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/F_CqlEvaluatorBenchmark.kt index 51c6633fc0..dc63e1fc5c 100644 --- a/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/F_CqlEvaluatorBenchmark.kt +++ b/workflow/benchmark/src/androidTest/java/com/google/android/fhir/workflow/benchmark/F_CqlEvaluatorBenchmark.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -84,9 +84,9 @@ class F_CqlEvaluatorBenchmark { val results = fhirOperator.evaluateLibrary( - "http://localhost/Library/ImmunityCheck|1.0.0", - "d4d35004-24f8-40e4-8084-1ad75924514f", - setOf("CompletedImmunization"), + libraryUrl = "http://localhost/Library/ImmunityCheck|1.0.0", + patientId = "d4d35004-24f8-40e4-8084-1ad75924514f", + expressions = setOf("CompletedImmunization"), ) as Parameters assertThat(results.getParameterBool("CompletedImmunization")).isTrue() diff --git a/workflow/src/androidTest/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateTest.kt b/workflow/src/androidTest/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateTest.kt index 91de7a807e..345bc28049 100644 --- a/workflow/src/androidTest/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateTest.kt +++ b/workflow/src/androidTest/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateTest.kt @@ -32,6 +32,7 @@ import kotlinx.coroutines.runBlocking import org.hl7.fhir.instance.model.api.IBaseResource import org.hl7.fhir.r4.model.Bundle import org.hl7.fhir.r4.model.Library +import org.hl7.fhir.r4.model.Location import org.hl7.fhir.r4.model.Parameters import org.junit.Before import org.junit.Rule @@ -122,15 +123,58 @@ class FhirOperatorLibraryEvaluateTest { // Load Library that checks if Patient has taken a vaccine knowledgeManager.install(copy("/immunity-check/ImmunityCheck.json")) + // Evaluates a specific Patient + val results = + fhirOperator.evaluateLibrary( + libraryUrl = "http://localhost/Library/ImmunityCheck|1.0.0", + patientId = "d4d35004-24f8-40e4-8084-1ad75924514f", + expressions = setOf("CompletedImmunization"), + ) as Parameters + + assertThat(results.getParameterBool("CompletedImmunization")).isTrue() + } + + @Test + fun evaluateImmunityCheckWithAdditionalData() = runBlocking { + val patientImmunizationHistory = load("/immunity-check/ImmunizationHistory.json") as Bundle + for (entry in patientImmunizationHistory.entry) { + fhirEngine.create(entry.resource) + } + + // Load Library that checks if Patient has taken a vaccine + knowledgeManager.install(copy("/immunity-check/ImmunityCheck.json")) + knowledgeManager.install(copy("/immunity-check/FhirHelpers.json")) + + val location = + """ + { + "resourceType": "Location", + "id": "nairobi-047", + "name": "Nairobi mobile clinic" + } + """ + .trimIndent() + + val additionalDataBundle = + Bundle().apply { + addEntry( + Bundle.BundleEntryComponent().apply { + resource = jsonParser.parseResource(location) as Location + }, + ) + } + // Evaluates a specific Patient val results = fhirOperator.evaluateLibrary( "http://localhost/Library/ImmunityCheck|1.0.0", "d4d35004-24f8-40e4-8084-1ad75924514f", - setOf("CompletedImmunization"), + null, + additionalDataBundle, + null, ) as Parameters - assertThat(results.getParameterBool("CompletedImmunization")).isTrue() + assertThat(results.hasParameter("GetFinalDoseWithLocationData")).isTrue() } @Test diff --git a/workflow/src/main/java/com/google/android/fhir/workflow/FhirOperator.kt b/workflow/src/main/java/com/google/android/fhir/workflow/FhirOperator.kt index 81ca998e40..6b92d735f4 100644 --- a/workflow/src/main/java/com/google/android/fhir/workflow/FhirOperator.kt +++ b/workflow/src/main/java/com/google/android/fhir/workflow/FhirOperator.kt @@ -71,70 +71,6 @@ internal constructor( private val measureProcessor = R4MeasureProcessor(repository, measureEvaluationOptions) private val planDefinitionProcessor = PlanDefinitionProcessor(repository, evaluationSettings) - /** - * The function evaluates a FHIR library against the database. - * - * NOTE: The API may internally result in a blocking IO operation. The user should call the API - * from a worker thread or it may throw [BlockingMainThreadException] exception. - * - * @param libraryUrl the url of the Library to evaluate - * @param expressions names of expressions in the Library to evaluate. If null the result contains - * all evaluations or variables in library. - * @return a Parameters resource that contains an evaluation result for each expression requested. - * Or if expressions param is null then result contains all evaluations or variables in given - * library. - */ - @WorkerThread - fun evaluateLibrary(libraryUrl: String, expressions: Set?): IBaseParameters { - return evaluateLibrary(libraryUrl, null, null, expressions) - } - - /** - * The function evaluates a FHIR library against a patient's records. - * - * NOTE: The API may internally result in a blocking IO operation. The user should call the API - * from a worker thread or it may throw [BlockingMainThreadException] exception. - * - * @param libraryUrl the url of the Library to evaluate - * @param patientId the Id of the patient to be evaluated - * @param expressions names of expressions in the Library to evaluate. If null the result contains - * all evaluations or variables in library. - * @return a Parameters resource that contains an evaluation result for each expression requested. - * Or if expressions param is null then result contains all evaluations or variables in given - * library. - */ - @WorkerThread - fun evaluateLibrary( - libraryUrl: String, - patientId: String, - expressions: Set?, - ): IBaseParameters { - return evaluateLibrary(libraryUrl, patientId, null, expressions) - } - - /** - * The function evaluates a FHIR library against the database. - * - * NOTE: The API may internally result in a blocking IO operation. The user should call the API - * from a worker thread or it may throw [BlockingMainThreadException] exception. - * - * @param libraryUrl the url of the Library to evaluate - * @param parameters list of parameters to be passed to the CQL library - * @param expressions names of expressions in the Library to evaluate. If null the result contains - * all evaluations or variables in library. - * @return a Parameters resource that contains an evaluation result for each expression requested. - * Or if expressions param is null then result contains all evaluations or variables in given - * library. - */ - @WorkerThread - fun evaluateLibrary( - libraryUrl: String, - parameters: Parameters, - expressions: Set?, - ): IBaseParameters { - return evaluateLibrary(libraryUrl, null, parameters, expressions) - } - /** * The function evaluates a FHIR library against the database. * @@ -144,6 +80,8 @@ internal constructor( * @param libraryUrl the url of the Library to evaluate * @param patientId the Id of the patient to be evaluated, if applicable * @param parameters list of parameters to be passed to the CQL library, if applicable + * @param additionalData Bundle of additional resources to be passed to the CQL library, if + * applicable * @param expressions names of expressions in the Library to evaluate. If null the result contains * all evaluations or variables in library. * @return a Parameters resource that contains an evaluation result for each expression requested. @@ -153,15 +91,16 @@ internal constructor( @WorkerThread fun evaluateLibrary( libraryUrl: String, - patientId: String?, - parameters: Parameters?, - expressions: Set?, + patientId: String? = null, + parameters: Parameters? = null, + additionalData: IBaseBundle? = null, + expressions: Set? = null, ): IBaseParameters { return libraryProcessor.evaluate( /* url = */ libraryUrl, /* patientId = */ patientId, /* parameters = */ parameters, - /* additionalData = */ null, + /* additionalData = */ additionalData, /* expressions = */ expressions, ) } diff --git a/workflow/src/test/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateJavaTest.kt b/workflow/src/test/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateJavaTest.kt index dd6ab1fdbf..be66a40615 100644 --- a/workflow/src/test/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateJavaTest.kt +++ b/workflow/src/test/java/com/google/android/fhir/workflow/FhirOperatorLibraryEvaluateJavaTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 Google LLC + * Copyright 2022-2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -116,9 +116,9 @@ class FhirOperatorLibraryEvaluateJavaTest { // Evaluates a specific Patient val results = fhirOperator.evaluateLibrary( - "http://localhost/Library/ImmunityCheck|1.0.0", - "d4d35004-24f8-40e4-8084-1ad75924514f", - setOf("CompletedImmunization"), + libraryUrl = "http://localhost/Library/ImmunityCheck|1.0.0", + patientId = "d4d35004-24f8-40e4-8084-1ad75924514f", + expressions = setOf("CompletedImmunization"), ) as Parameters assertThat(results.getParameterBool("CompletedImmunization")).isTrue() @@ -140,7 +140,9 @@ class FhirOperatorLibraryEvaluateJavaTest { knowledgeManager.install(writeToFile(library)) // Evaluates expression without any extra data - val results = fhirOperator.evaluateLibrary(library.url, setOf("GetName")) as Parameters + val results = + fhirOperator.evaluateLibrary(libraryUrl = library.url, expressions = setOf("GetName")) + as Parameters assertThat((results.parameterFirstRep.value as StringType).value).isEqualTo("MyName") } @@ -171,7 +173,12 @@ class FhirOperatorLibraryEvaluateJavaTest { } // Evaluates the library with a parameter - val results = fhirOperator.evaluateLibrary(library.url, params, setOf("SumOne")) as Parameters + val results = + fhirOperator.evaluateLibrary( + libraryUrl = library.url, + parameters = params, + expressions = setOf("SumOne"), + ) as Parameters assertThat((results.parameterFirstRep.value as DecimalType).value).isEqualTo(BigDecimal(2)) }