@effect-aws/client-cognito-identity-provider 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @effect-aws/client-cognito-identity-provider
|
|
2
2
|
|
|
3
|
+
## 1.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#75](https://github.com/floydspace/effect-aws/pull/75) [`9dc170d`](https://github.com/floydspace/effect-aws/commit/9dc170d975c04888bbc7ca7b241b4b5265668fb5) Thanks [@godu](https://github.com/godu)! - export the HttpHandlerOptions type
|
|
8
|
+
|
|
3
9
|
## 1.0.0
|
|
4
10
|
|
|
5
11
|
### Major Changes
|
|
@@ -5,7 +5,10 @@ import { type AddCustomAttributesCommandInput, type AddCustomAttributesCommandOu
|
|
|
5
5
|
import { Effect, Layer } from "effect";
|
|
6
6
|
import { CognitoIdentityProviderClientInstance } from "./CognitoIdentityProviderClientInstance";
|
|
7
7
|
import { AliasExistsError, CodeDeliveryFailureError, CodeMismatchError, ConcurrentModificationError, DuplicateProviderError, EnableSoftwareTokenMFAError, ExpiredCodeError, ForbiddenError, GroupExistsError, InternalError, InvalidEmailRoleAccessPolicyError, InvalidLambdaResponseError, InvalidOAuthFlowError, InvalidParameterError, InvalidPasswordError, InvalidSmsRoleAccessPolicyError, InvalidSmsRoleTrustRelationshipError, InvalidUserPoolConfigurationError, LimitExceededError, MFAMethodNotFoundError, NotAuthorizedError, PasswordHistoryPolicyViolationError, PasswordResetRequiredError, PreconditionNotMetError, ResourceNotFoundError, ScopeDoesNotExistError, SoftwareTokenMFANotFoundError, TooManyFailedAttemptsError, TooManyRequestsError, UnauthorizedError, UnexpectedLambdaError, UnsupportedIdentityProviderError, UnsupportedOperationError, UnsupportedTokenTypeError, UnsupportedUserStateError, UserImportInProgressError, UserLambdaValidationError, UserNotConfirmedError, UserNotFoundError, UserPoolAddOnNotEnabledError, UserPoolTaggingError, UsernameExistsError, SdkError } from "./Errors";
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.1
|
|
10
|
+
*/
|
|
11
|
+
export interface HttpHandlerOptions {
|
|
9
12
|
/**
|
|
10
13
|
* The maximum time in milliseconds that the connection phase of a request
|
|
11
14
|
* may take before the connection attempt is abandoned.
|
|
@@ -174,4 +174,4 @@ exports.CognitoIdentityProviderServiceLayer = exports.BaseCognitoIdentityProvide
|
|
|
174
174
|
* @category layers
|
|
175
175
|
*/
|
|
176
176
|
exports.DefaultCognitoIdentityProviderServiceLayer = exports.CognitoIdentityProviderServiceLayer.pipe(effect_1.Layer.provide(CognitoIdentityProviderClientInstanceConfig_1.DefaultCognitoIdentityProviderClientConfigLayer));
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILGdHQXVUbUQ7QUFDbkQsbUNBQXFEO0FBQ3JELG1HQUdpRDtBQUNqRCwrR0FBZ0g7QUFDaEgscUNBOENrQjtBQVVsQixNQUFNLFFBQVEsR0FBRztJQUNmLDBCQUEwQixFQUExQiw2REFBMEI7SUFDMUIsMEJBQTBCLEVBQTFCLDZEQUEwQjtJQUMxQix5QkFBeUIsRUFBekIsNERBQXlCO0lBQ3pCLHNCQUFzQixFQUF0Qix5REFBc0I7SUFDdEIsc0JBQXNCLEVBQXRCLHlEQUFzQjtJQUN0QixnQ0FBZ0MsRUFBaEMsbUVBQWdDO0lBQ2hDLGtDQUFrQyxFQUFsQyxxRUFBa0M7SUFDbEMsdUJBQXVCLEVBQXZCLDBEQUF1QjtJQUN2QixzQkFBc0IsRUFBdEIseURBQXNCO0lBQ3RCLHdCQUF3QixFQUF4QiwyREFBd0I7SUFDeEIscUJBQXFCLEVBQXJCLHdEQUFxQjtJQUNyQixtQkFBbUIsRUFBbkIsc0RBQW1CO0lBQ25CLHdCQUF3QixFQUF4QiwyREFBd0I7SUFDeEIsK0JBQStCLEVBQS9CLGtFQUErQjtJQUMvQix1QkFBdUIsRUFBdkIsMERBQXVCO0lBQ3ZCLDZCQUE2QixFQUE3QixnRUFBNkI7SUFDN0IsOEJBQThCLEVBQTlCLGlFQUE4QjtJQUM5QiwrQkFBK0IsRUFBL0Isa0VBQStCO0lBQy9CLDZCQUE2QixFQUE3QixnRUFBNkI7SUFDN0Isa0NBQWtDLEVBQWxDLHFFQUFrQztJQUNsQyxnQ0FBZ0MsRUFBaEMsbUVBQWdDO0lBQ2hDLDJCQUEyQixFQUEzQiw4REFBMkI7SUFDM0IsMkJBQTJCLEVBQTNCLDhEQUEyQjtJQUMzQixtQ0FBbUMsRUFBbkMsc0VBQW1DO0lBQ25DLDhCQUE4QixFQUE5QixpRUFBOEI7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QUFJLENBQzFDLGNBQUssQ0FBQyxPQUFPLENBQUMsa0ZBQTBDLENBQUMsQ0FDMUQsQ0FBQztBQUVKOzs7R0FHRztBQUNVLFFBQUEsMENBQTBDLEdBQ3JELDJDQUFtQyxDQUFDLElBQUksQ0FDdEMsY0FBSyxDQUFDLE9BQU8sQ0FBQyw2RkFBK0MsQ0FBQyxDQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlRXhjZXB0aW9uLFxuICBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kT3V0cHV0LFxuICBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kLFxuICB0eXBlIEFkbWluQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluQ3JlYXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluRGlzYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkVuYWJsZVVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluRW5hYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkVuYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkZvcmdldERldmljZUNvbW1hbmQsXG4gIHR5cGUgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBBZG1pbkdldERldmljZUNvbW1hbmQsXG4gIHR5cGUgQWRtaW5HZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5HZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBBZG1pbkdldFVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluR2V0VXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkdldFVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmQsXG4gIHR5cGUgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluTGlzdERldmljZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kT3V0cHV0LFxuICBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kLFxuICB0eXBlIEFkbWluUmVtb3ZlVXNlckZyb21Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kT3V0cHV0LFxuICBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZCxcbiAgdHlwZSBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kLFxuICB0eXBlIEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kT3V0cHV0LFxuICBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZCxcbiAgdHlwZSBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICBBZG1pblNldFVzZXJQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBBZG1pblNldFVzZXJTZXR0aW5nc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZCxcbiAgdHlwZSBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kT3V0cHV0LFxuICBBZG1pblVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgdHlwZSBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgdHlwZSBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICB0eXBlIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICBDaGFuZ2VQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgQ2hhbmdlUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ2hhbmdlUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBDb25maXJtRGV2aWNlQ29tbWFuZCxcbiAgdHlwZSBDb25maXJtRGV2aWNlQ29tbWFuZElucHV0LFxuICB0eXBlIENvbmZpcm1EZXZpY2VDb21tYW5kT3V0cHV0LFxuICBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIENvbmZpcm1Gb3Jnb3RQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBDb25maXJtU2lnblVwQ29tbWFuZCxcbiAgdHlwZSBDb25maXJtU2lnblVwQ29tbWFuZElucHV0LFxuICB0eXBlIENvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHcm91cENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZWxldGVHcm91cENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJQb29sQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBGb3JnZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEZvcmdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBGb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBGb3Jnb3RQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBHZXRDU1ZIZWFkZXJDb21tYW5kLFxuICB0eXBlIEdldENTVkhlYWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDU1ZIZWFkZXJDb21tYW5kT3V0cHV0LFxuICBHZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBHZXRHcm91cENvbW1hbmQsXG4gIHR5cGUgR2V0R3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0R3JvdXBDb21tYW5kT3V0cHV0LFxuICBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZCxcbiAgdHlwZSBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kT3V0cHV0LFxuICBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kLFxuICB0eXBlIEdldFNpZ25pbmdDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICB0eXBlIEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRVc2VyQ29tbWFuZCxcbiAgdHlwZSBHZXRVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVzZXJDb21tYW5kT3V0cHV0LFxuICBHZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kT3V0cHV0LFxuICBHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgdHlwZSBHbG9iYWxTaWduT3V0Q29tbWFuZElucHV0LFxuICB0eXBlIEdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICBJbml0aWF0ZUF1dGhDb21tYW5kLFxuICB0eXBlIEluaXRpYXRlQXV0aENvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbml0aWF0ZUF1dGhDb21tYW5kT3V0cHV0LFxuICBMaXN0RGV2aWNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdERldmljZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERldmljZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0R3JvdXBzQ29tbWFuZCxcbiAgdHlwZSBMaXN0R3JvdXBzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RHcm91cHNDb21tYW5kT3V0cHV0LFxuICBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kLFxuICB0eXBlIExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kLFxuICB0eXBlIExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlclBvb2xzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlclBvb2xzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RVc2VyUG9vbHNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlcnNDb21tYW5kLFxuICB0eXBlIExpc3RVc2Vyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kT3V0cHV0LFxuICBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZCxcbiAgdHlwZSBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgdHlwZSBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZElucHV0LFxuICB0eXBlIFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kT3V0cHV0LFxuICBSZXZva2VUb2tlbkNvbW1hbmQsXG4gIHR5cGUgUmV2b2tlVG9rZW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlVG9rZW5Db21tYW5kT3V0cHV0LFxuICBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICB0eXBlIFNldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIHR5cGUgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kT3V0cHV0LFxuICBTZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICB0eXBlIFNldFVzZXJTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICBTaWduVXBDb21tYW5kLFxuICB0eXBlIFNpZ25VcENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTaWduVXBDb21tYW5kT3V0cHV0LFxuICBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICB0eXBlIFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIHR5cGUgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVHcm91cENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWNvZ25pdG8taWRlbnRpdHktcHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2UsXG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2VMYXllcixcbn0gZnJvbSBcIi4vQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50Q29uZmlnTGF5ZXIgfSBmcm9tIFwiLi9Db2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5pbXBvcnQge1xuICBBbGxTZXJ2aWNlRXJyb3JzLFxuICBBbGlhc0V4aXN0c0Vycm9yLFxuICBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3IsXG4gIENvZGVNaXNtYXRjaEVycm9yLFxuICBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3IsXG4gIER1cGxpY2F0ZVByb3ZpZGVyRXJyb3IsXG4gIEVuYWJsZVNvZnR3YXJlVG9rZW5NRkFFcnJvcixcbiAgRXhwaXJlZENvZGVFcnJvcixcbiAgRm9yYmlkZGVuRXJyb3IsXG4gIEdyb3VwRXhpc3RzRXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvcixcbiAgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3IsXG4gIEludmFsaWRPQXV0aEZsb3dFcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICBJbnZhbGlkUGFzc3dvcmRFcnJvcixcbiAgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvcixcbiAgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yLFxuICBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3IsXG4gIExpbWl0RXhjZWVkZWRFcnJvcixcbiAgTUZBTWV0aG9kTm90Rm91bmRFcnJvcixcbiAgTm90QXV0aG9yaXplZEVycm9yLFxuICBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvcixcbiAgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3IsXG4gIFByZWNvbmRpdGlvbk5vdE1ldEVycm9yLFxuICBSZXNvdXJjZU5vdEZvdW5kRXJyb3IsXG4gIFNjb3BlRG9lc05vdEV4aXN0RXJyb3IsXG4gIFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yLFxuICBUb29NYW55RmFpbGVkQXR0ZW1wdHNFcnJvcixcbiAgVG9vTWFueVJlcXVlc3RzRXJyb3IsXG4gIFVuYXV0aG9yaXplZEVycm9yLFxuICBVbmV4cGVjdGVkTGFtYmRhRXJyb3IsXG4gIFVuc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlckVycm9yLFxuICBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLFxuICBVbnN1cHBvcnRlZFRva2VuVHlwZUVycm9yLFxuICBVbnN1cHBvcnRlZFVzZXJTdGF0ZUVycm9yLFxuICBVc2VySW1wb3J0SW5Qcm9ncmVzc0Vycm9yLFxuICBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yLFxuICBVc2VyTm90Q29uZmlybWVkRXJyb3IsXG4gIFVzZXJOb3RGb3VuZEVycm9yLFxuICBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yLFxuICBVc2VyUG9vbFRhZ2dpbmdFcnJvcixcbiAgVXNlcm5hbWVFeGlzdHNFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5cbmludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmQsXG4gIEFkbWluQ29uZmlybVNpZ25VcENvbW1hbmQsXG4gIEFkbWluQ3JlYXRlVXNlckNvbW1hbmQsXG4gIEFkbWluRGVsZXRlVXNlckNvbW1hbmQsXG4gIEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kLFxuICBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZCxcbiAgQWRtaW5FbmFibGVVc2VyQ29tbWFuZCxcbiAgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kLFxuICBBZG1pbkdldERldmljZUNvbW1hbmQsXG4gIEFkbWluR2V0VXNlckNvbW1hbmQsXG4gIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZCxcbiAgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmQsXG4gIEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kLFxuICBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmQsXG4gIEFkbWluUmVtb3ZlVXNlckZyb21Hcm91cENvbW1hbmQsXG4gIEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kLFxuICBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kLFxuICBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZCxcbiAgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kLFxuICBBZG1pblNldFVzZXJTZXR0aW5nc0NvbW1hbmQsXG4gIEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kLFxuICBBZG1pblVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmQsXG4gIEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmQsXG4gIENoYW5nZVBhc3N3b3JkQ29tbWFuZCxcbiAgQ29uZmlybURldmljZUNvbW1hbmQsXG4gIENvbmZpcm1Gb3Jnb3RQYXNzd29yZENvbW1hbmQsXG4gIENvbmZpcm1TaWduVXBDb21tYW5kLFxuICBDcmVhdGVHcm91cENvbW1hbmQsXG4gIENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICBDcmVhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICBDcmVhdGVVc2VyUG9vbENvbW1hbmQsXG4gIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICBEZWxldGVHcm91cENvbW1hbmQsXG4gIERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIERlbGV0ZVVzZXJDb21tYW5kLFxuICBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIERlbGV0ZVVzZXJQb29sQ29tbWFuZCxcbiAgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICBEZWxldGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIERlc2NyaWJlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmQsXG4gIERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgRm9yZ2V0RGV2aWNlQ29tbWFuZCxcbiAgRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICBHZXRDU1ZIZWFkZXJDb21tYW5kLFxuICBHZXREZXZpY2VDb21tYW5kLFxuICBHZXRHcm91cENvbW1hbmQsXG4gIEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kLFxuICBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kLFxuICBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICBHZXRVc2VyQ29tbWFuZCxcbiAgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kLFxuICBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmQsXG4gIEdsb2JhbFNpZ25PdXRDb21tYW5kLFxuICBJbml0aWF0ZUF1dGhDb21tYW5kLFxuICBMaXN0RGV2aWNlc0NvbW1hbmQsXG4gIExpc3RHcm91cHNDb21tYW5kLFxuICBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kLFxuICBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmQsXG4gIExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kLFxuICBMaXN0VXNlclBvb2xzQ29tbWFuZCxcbiAgTGlzdFVzZXJzQ29tbWFuZCxcbiAgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmQsXG4gIFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kLFxuICBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgUmV2b2tlVG9rZW5Db21tYW5kLFxuICBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFNldFVJQ3VzdG9taXphdGlvbkNvbW1hbmQsXG4gIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZCxcbiAgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICBTZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICBTaWduVXBDb21tYW5kLFxuICBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZCxcbiAgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZCxcbiAgVXBkYXRlR3JvdXBDb21tYW5kLFxuICBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIFVwZGF0ZVVzZXJQb29sQ29tbWFuZCxcbiAgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICBVcGRhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kLFxuICBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UkIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBhZGRDdXN0b21BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZH1cbiAgICovXG4gIGFkbWluQWRkVXNlclRvR3JvdXAoXG4gICAgYXJnczogQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5Db25maXJtU2lnblVwKFxuICAgIGFyZ3M6IEFkbWluQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluQ29uZmlybVNpZ25VcENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueUZhaWxlZEF0dGVtcHRzRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluQ3JlYXRlVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkNyZWF0ZVVzZXIoXG4gICAgYXJnczogQWRtaW5DcmVhdGVVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uTm90TWV0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRVc2VyU3RhdGVFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlcm5hbWVFeGlzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5EZWxldGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRGVsZXRlVXNlcihcbiAgICBhcmdzOiBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXMoXG4gICAgYXJnczogQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyKFxuICAgIGFyZ3M6IEFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRGlzYWJsZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5EaXNhYmxlVXNlcihcbiAgICBhcmdzOiBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRW5hYmxlVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkVuYWJsZVVzZXIoXG4gICAgYXJnczogQWRtaW5FbmFibGVVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5FbmFibGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5Gb3JnZXREZXZpY2UoXG4gICAgYXJnczogQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkZvcmdldERldmljZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5HZXREZXZpY2VDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5HZXREZXZpY2UoXG4gICAgYXJnczogQWRtaW5HZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkdldERldmljZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkdldFVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5HZXRVc2VyKFxuICAgIGFyZ3M6IEFkbWluR2V0VXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluR2V0VXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZH1cbiAgICovXG4gIGFkbWluSW5pdGlhdGVBdXRoKFxuICAgIGFyZ3M6IEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE1GQU1ldGhvZE5vdEZvdW5kRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyKFxuICAgIGFyZ3M6IEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmR9XG4gICAqL1xuICBhZG1pbkxpc3REZXZpY2VzKFxuICAgIGFyZ3M6IEFkbWluTGlzdERldmljZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5MaXN0R3JvdXBzRm9yVXNlcihcbiAgICBhcmdzOiBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluTGlzdFVzZXJBdXRoRXZlbnRzKFxuICAgIGFyZ3M6IEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICAgIHwgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwKFxuICAgIGFyZ3M6IEFkbWluUmVtb3ZlVXNlckZyb21Hcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluUmVtb3ZlVXNlckZyb21Hcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5SZXNldFVzZXJQYXNzd29yZChcbiAgICBhcmdzOiBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmR9XG4gICAqL1xuICBhZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2UoXG4gICAgYXJnczogQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRXhwaXJlZENvZGVFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE1GQU1ldGhvZE5vdEZvdW5kRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZShcbiAgICBhcmdzOiBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5TZXRVc2VyUGFzc3dvcmQoXG4gICAgYXJnczogQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblNldFVzZXJQYXNzd29yZENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5TZXRVc2VyU2V0dGluZ3MoXG4gICAgYXJnczogQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblNldFVzZXJTZXR0aW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmR9XG4gICAqL1xuICBhZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrKFxuICAgIGFyZ3M6IEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5VcGRhdGVEZXZpY2VTdGF0dXMoXG4gICAgYXJnczogQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBhZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5Vc2VyR2xvYmFsU2lnbk91dChcbiAgICBhcmdzOiBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kfVxuICAgKi9cbiAgYXNzb2NpYXRlU29mdHdhcmVUb2tlbihcbiAgICBhcmdzOiBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU29mdHdhcmVUb2tlbk1GQU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ2hhbmdlUGFzc3dvcmRDb21tYW5kfVxuICAgKi9cbiAgY2hhbmdlUGFzc3dvcmQoXG4gICAgYXJnczogQ2hhbmdlUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDaGFuZ2VQYXNzd29yZENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29uZmlybURldmljZUNvbW1hbmR9XG4gICAqL1xuICBjb25maXJtRGV2aWNlKFxuICAgIGFyZ3M6IENvbmZpcm1EZXZpY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25maXJtRGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlcm5hbWVFeGlzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kfVxuICAgKi9cbiAgY29uZmlybUZvcmdvdFBhc3N3b3JkKFxuICAgIGFyZ3M6IENvbmZpcm1Gb3Jnb3RQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvbmZpcm1Gb3Jnb3RQYXNzd29yZENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkSGlzdG9yeVBvbGljeVZpb2xhdGlvbkVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlGYWlsZWRBdHRlbXB0c0Vycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbmZpcm1TaWduVXBDb21tYW5kfVxuICAgKi9cbiAgY29uZmlybVNpZ25VcChcbiAgICBhcmdzOiBDb25maXJtU2lnblVwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ29uZmlybVNpZ25VcENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55RmFpbGVkQXR0ZW1wdHNFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlR3JvdXAoXG4gICAgYXJnczogQ3JlYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgR3JvdXBFeGlzdHNFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUlkZW50aXR5UHJvdmlkZXIoXG4gICAgYXJnczogQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IER1cGxpY2F0ZVByb3ZpZGVyRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlUmVzb3VyY2VTZXJ2ZXIoXG4gICAgYXJnczogQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVVzZXJJbXBvcnRKb2IoXG4gICAgYXJnczogQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbk5vdE1ldEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVVzZXJQb29sQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVVzZXJQb29sKFxuICAgIGFyZ3M6IENyZWF0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlclBvb2xUYWdnaW5nRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVXNlclBvb2xDbGllbnQoXG4gICAgYXJnczogQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZE9BdXRoRmxvd0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNjb3BlRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVVzZXJQb29sRG9tYWluKFxuICAgIGFyZ3M6IENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVHcm91cENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVHcm91cChcbiAgICBhcmdzOiBEZWxldGVHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUlkZW50aXR5UHJvdmlkZXIoXG4gICAgYXJnczogRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlc291cmNlU2VydmVyKFxuICAgIGFyZ3M6IERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVXNlcihcbiAgICBhcmdzOiBEZWxldGVVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyQXR0cmlidXRlcyhcbiAgICBhcmdzOiBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVVzZXJQb29sQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXJQb29sKFxuICAgIGFyZ3M6IERlbGV0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VySW1wb3J0SW5Qcm9ncmVzc0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXJQb29sQ2xpZW50KFxuICAgIGFyZ3M6IERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVXNlclBvb2xEb21haW4oXG4gICAgYXJnczogRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVVc2VyUG9vbERvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IERlc2NyaWJlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJlc291cmNlU2VydmVyKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVVzZXJJbXBvcnRKb2IoXG4gICAgYXJnczogRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVVzZXJQb29sQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlVXNlclBvb2woXG4gICAgYXJnczogRGVzY3JpYmVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyUG9vbFRhZ2dpbmdFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlVXNlclBvb2xDbGllbnQoXG4gICAgYXJnczogRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVVc2VyUG9vbERvbWFpbihcbiAgICBhcmdzOiBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBGb3JnZXREZXZpY2VDb21tYW5kfVxuICAgKi9cbiAgZm9yZ2V0RGV2aWNlKFxuICAgIGFyZ3M6IEZvcmdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEZvcmdldERldmljZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEZvcmdvdFBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGZvcmdvdFBhc3N3b3JkKFxuICAgIGFyZ3M6IEZvcmdvdFBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDU1ZIZWFkZXJDb21tYW5kfVxuICAgKi9cbiAgZ2V0Q1NWSGVhZGVyKFxuICAgIGFyZ3M6IEdldENTVkhlYWRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldENTVkhlYWRlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGdldERldmljZShcbiAgICBhcmdzOiBHZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRHcm91cENvbW1hbmR9XG4gICAqL1xuICBnZXRHcm91cChcbiAgICBhcmdzOiBHZXRHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZH1cbiAgICovXG4gIGdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXIoXG4gICAgYXJnczogR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kfVxuICAgKi9cbiAgZ2V0U2lnbmluZ0NlcnRpZmljYXRlKFxuICAgIGFyZ3M6IEdldFNpZ25pbmdDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFNpZ25pbmdDZXJ0aWZpY2F0ZUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRVSUN1c3RvbWl6YXRpb24oXG4gICAgYXJnczogR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVc2VyQ29tbWFuZH1cbiAgICovXG4gIGdldFVzZXIoXG4gICAgYXJnczogR2V0VXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kfVxuICAgKi9cbiAgZ2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGUoXG4gICAgYXJnczogR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFVzZXJQb29sTWZhQ29uZmlnKFxuICAgIGFyZ3M6IEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdsb2JhbFNpZ25PdXRDb21tYW5kfVxuICAgKi9cbiAgZ2xvYmFsU2lnbk91dChcbiAgICBhcmdzOiBHbG9iYWxTaWduT3V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2xvYmFsU2lnbk91dENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEluaXRpYXRlQXV0aENvbW1hbmR9XG4gICAqL1xuICBpbml0aWF0ZUF1dGgoXG4gICAgYXJnczogSW5pdGlhdGVBdXRoQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3REZXZpY2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REZXZpY2VzKFxuICAgIGFyZ3M6IExpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdERldmljZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0R3JvdXBzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RHcm91cHMoXG4gICAgYXJnczogTGlzdEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RHcm91cHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SWRlbnRpdHlQcm92aWRlcnMoXG4gICAgYXJnczogTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RSZXNvdXJjZVNlcnZlcnMoXG4gICAgYXJnczogTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3NGb3JSZXNvdXJjZShcbiAgICBhcmdzOiBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2VySW1wb3J0Sm9icyhcbiAgICBhcmdzOiBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFVzZXJQb29sQ2xpZW50cyhcbiAgICBhcmdzOiBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFVzZXJQb29sc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlclBvb2xzKFxuICAgIGFyZ3M6IExpc3RVc2VyUG9vbHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VXNlclBvb2xzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFVzZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2VycyhcbiAgICBhcmdzOiBMaXN0VXNlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VXNlcnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgbGlzdFVzZXJzSW5Hcm91cChcbiAgICBhcmdzOiBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmR9XG4gICAqL1xuICByZXNlbmRDb25maXJtYXRpb25Db2RlKFxuICAgIGFyZ3M6IFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmR9XG4gICAqL1xuICByZXNwb25kVG9BdXRoQ2hhbGxlbmdlKFxuICAgIGFyZ3M6IFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRXhwaXJlZENvZGVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBNRkFNZXRob2ROb3RGb3VuZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkSGlzdG9yeVBvbGljeVZpb2xhdGlvbkVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXZva2VUb2tlbkNvbW1hbmR9XG4gICAqL1xuICByZXZva2VUb2tlbihcbiAgICBhcmdzOiBSZXZva2VUb2tlbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldm9rZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5hdXRob3JpemVkRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkVG9rZW5UeXBlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHNldFJpc2tDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kfVxuICAgKi9cbiAgc2V0VUlDdXN0b21pemF0aW9uKFxuICAgIGFyZ3M6IFNldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kfVxuICAgKi9cbiAgc2V0VXNlck1GQVByZWZlcmVuY2UoXG4gICAgYXJnczogU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHNldFVzZXJQb29sTWZhQ29uZmlnKFxuICAgIGFyZ3M6IFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRVc2VyU2V0dGluZ3NDb21tYW5kfVxuICAgKi9cbiAgc2V0VXNlclNldHRpbmdzKFxuICAgIGFyZ3M6IFNldFVzZXJTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFVzZXJTZXR0aW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNpZ25VcENvbW1hbmR9XG4gICAqL1xuICBzaWduVXAoXG4gICAgYXJnczogU2lnblVwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJuYW1lRXhpc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0VXNlckltcG9ydEpvYihcbiAgICBhcmdzOiBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25Ob3RNZXRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmR9XG4gICAqL1xuICBzdG9wVXNlckltcG9ydEpvYihcbiAgICBhcmdzOiBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uTm90TWV0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdGFnUmVzb3VyY2UoXG4gICAgYXJnczogVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVW50YWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1bnRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVBdXRoRXZlbnRGZWVkYmFjayhcbiAgICBhcmdzOiBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZURldmljZVN0YXR1cyhcbiAgICBhcmdzOiBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVHcm91cENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVHcm91cChcbiAgICBhcmdzOiBVcGRhdGVHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUlkZW50aXR5UHJvdmlkZXIoXG4gICAgYXJnczogVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVJlc291cmNlU2VydmVyKFxuICAgIGFyZ3M6IFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVVzZXJBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVVzZXJQb29sQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVVzZXJQb29sKFxuICAgIGFyZ3M6IFVwZGF0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VySW1wb3J0SW5Qcm9ncmVzc0Vycm9yXG4gICAgfCBVc2VyUG9vbFRhZ2dpbmdFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVVc2VyUG9vbENsaWVudChcbiAgICBhcmdzOiBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRPQXV0aEZsb3dFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2NvcGVEb2VzTm90RXhpc3RFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVXNlclBvb2xEb21haW4oXG4gICAgYXJnczogVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlTb2Z0d2FyZVRva2VuKFxuICAgIGFyZ3M6IFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRW5hYmxlU29mdHdhcmVUb2tlbk1GQUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU29mdHdhcmVUb2tlbk1GQU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5VXNlckF0dHJpYnV0ZShcbiAgICBhcmdzOiBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlRhZyhcbiAgXCJAZWZmZWN0LWF3cy9jbGllbnQtY29nbml0by1pZGVudGl0eS1wcm92aWRlci9Db2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VcIixcbik8Q29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLCBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UkPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUV4Y2VwdGlvbiAmJlxuICAgICAgICAgICAgQWxsU2VydmljZUVycm9ycy5pbmNsdWRlcyhlLm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBTZXJ2aWNlRXhjZXB0aW9uID0gRGF0YS50YWdnZWQ8XG4gICAgICAgICAgICAgIFRhZ2dlZEV4Y2VwdGlvbjxDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllciA9IExheWVyLmVmZmVjdChcbiAgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLFxuICBtYWtlQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUxheWVyID1cbiAgQmFzZUNvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUxheWVyLnBpcGUoXG4gICAgTGF5ZXIucHJvdmlkZShDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlTGF5ZXIpLFxuICApO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUxheWVyID1cbiAgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlTGF5ZXIucGlwZShcbiAgICBMYXllci5wcm92aWRlKERlZmF1bHRDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudENvbmZpZ0xheWVyKSxcbiAgKTtcbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILGdHQXVUbUQ7QUFDbkQsbUNBQXFEO0FBQ3JELG1HQUdpRDtBQUNqRCwrR0FBZ0g7QUFDaEgscUNBOENrQjtBQWFsQixNQUFNLFFBQVEsR0FBRztJQUNmLDBCQUEwQixFQUExQiw2REFBMEI7SUFDMUIsMEJBQTBCLEVBQTFCLDZEQUEwQjtJQUMxQix5QkFBeUIsRUFBekIsNERBQXlCO0lBQ3pCLHNCQUFzQixFQUF0Qix5REFBc0I7SUFDdEIsc0JBQXNCLEVBQXRCLHlEQUFzQjtJQUN0QixnQ0FBZ0MsRUFBaEMsbUVBQWdDO0lBQ2hDLGtDQUFrQyxFQUFsQyxxRUFBa0M7SUFDbEMsdUJBQXVCLEVBQXZCLDBEQUF1QjtJQUN2QixzQkFBc0IsRUFBdEIseURBQXNCO0lBQ3RCLHdCQUF3QixFQUF4QiwyREFBd0I7SUFDeEIscUJBQXFCLEVBQXJCLHdEQUFxQjtJQUNyQixtQkFBbUIsRUFBbkIsc0RBQW1CO0lBQ25CLHdCQUF3QixFQUF4QiwyREFBd0I7SUFDeEIsK0JBQStCLEVBQS9CLGtFQUErQjtJQUMvQix1QkFBdUIsRUFBdkIsMERBQXVCO0lBQ3ZCLDZCQUE2QixFQUE3QixnRUFBNkI7SUFDN0IsOEJBQThCLEVBQTlCLGlFQUE4QjtJQUM5QiwrQkFBK0IsRUFBL0Isa0VBQStCO0lBQy9CLDZCQUE2QixFQUE3QixnRUFBNkI7SUFDN0Isa0NBQWtDLEVBQWxDLHFFQUFrQztJQUNsQyxnQ0FBZ0MsRUFBaEMsbUVBQWdDO0lBQ2hDLDJCQUEyQixFQUEzQiw4REFBMkI7SUFDM0IsMkJBQTJCLEVBQTNCLDhEQUEyQjtJQUMzQixtQ0FBbUMsRUFBbkMsc0VBQW1DO0lBQ25DLDhCQUE4QixFQUE5QixpRUFBOEI7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QUFJLENBQzFDLGNBQUssQ0FBQyxPQUFPLENBQUMsa0ZBQTBDLENBQUMsQ0FDMUQsQ0FBQztBQUVKOzs7R0FHRztBQUNVLFFBQUEsMENBQTBDLEdBQ3JELDJDQUFtQyxDQUFDLElBQUksQ0FDdEMsY0FBSyxDQUFDLE9BQU8sQ0FBQyw2RkFBK0MsQ0FBQyxDQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlRXhjZXB0aW9uLFxuICBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kT3V0cHV0LFxuICBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kLFxuICB0eXBlIEFkbWluQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluQ3JlYXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluRGlzYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkVuYWJsZVVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluRW5hYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkVuYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkZvcmdldERldmljZUNvbW1hbmQsXG4gIHR5cGUgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBBZG1pbkdldERldmljZUNvbW1hbmQsXG4gIHR5cGUgQWRtaW5HZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5HZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBBZG1pbkdldFVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluR2V0VXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkdldFVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmQsXG4gIHR5cGUgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kLFxuICB0eXBlIEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluTGlzdERldmljZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kT3V0cHV0LFxuICBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kT3V0cHV0LFxuICBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kLFxuICB0eXBlIEFkbWluUmVtb3ZlVXNlckZyb21Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kT3V0cHV0LFxuICBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZCxcbiAgdHlwZSBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kLFxuICB0eXBlIEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kT3V0cHV0LFxuICBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZCxcbiAgdHlwZSBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICBBZG1pblNldFVzZXJQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBBZG1pblNldFVzZXJTZXR0aW5nc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZCxcbiAgdHlwZSBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kT3V0cHV0LFxuICBBZG1pblVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgdHlwZSBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgdHlwZSBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICB0eXBlIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICBDaGFuZ2VQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgQ2hhbmdlUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ2hhbmdlUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBDb25maXJtRGV2aWNlQ29tbWFuZCxcbiAgdHlwZSBDb25maXJtRGV2aWNlQ29tbWFuZElucHV0LFxuICB0eXBlIENvbmZpcm1EZXZpY2VDb21tYW5kT3V0cHV0LFxuICBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIENvbmZpcm1Gb3Jnb3RQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBDb25maXJtU2lnblVwQ29tbWFuZCxcbiAgdHlwZSBDb25maXJtU2lnblVwQ29tbWFuZElucHV0LFxuICB0eXBlIENvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVHcm91cENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZWxldGVHcm91cENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJQb29sQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBGb3JnZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEZvcmdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBGb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBGb3Jnb3RQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICBHZXRDU1ZIZWFkZXJDb21tYW5kLFxuICB0eXBlIEdldENTVkhlYWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDU1ZIZWFkZXJDb21tYW5kT3V0cHV0LFxuICBHZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICBHZXRHcm91cENvbW1hbmQsXG4gIHR5cGUgR2V0R3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0R3JvdXBDb21tYW5kT3V0cHV0LFxuICBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZCxcbiAgdHlwZSBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kT3V0cHV0LFxuICBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kLFxuICB0eXBlIEdldFNpZ25pbmdDZXJ0aWZpY2F0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kT3V0cHV0LFxuICBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICB0eXBlIEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRVc2VyQ29tbWFuZCxcbiAgdHlwZSBHZXRVc2VyQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVzZXJDb21tYW5kT3V0cHV0LFxuICBHZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kT3V0cHV0LFxuICBHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgdHlwZSBHbG9iYWxTaWduT3V0Q29tbWFuZElucHV0LFxuICB0eXBlIEdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICBJbml0aWF0ZUF1dGhDb21tYW5kLFxuICB0eXBlIEluaXRpYXRlQXV0aENvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbml0aWF0ZUF1dGhDb21tYW5kT3V0cHV0LFxuICBMaXN0RGV2aWNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdERldmljZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERldmljZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0R3JvdXBzQ29tbWFuZCxcbiAgdHlwZSBMaXN0R3JvdXBzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RHcm91cHNDb21tYW5kT3V0cHV0LFxuICBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kLFxuICB0eXBlIExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kLFxuICB0eXBlIExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlclBvb2xzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlclBvb2xzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RVc2VyUG9vbHNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlcnNDb21tYW5kLFxuICB0eXBlIExpc3RVc2Vyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kT3V0cHV0LFxuICBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZCxcbiAgdHlwZSBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgdHlwZSBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZElucHV0LFxuICB0eXBlIFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kT3V0cHV0LFxuICBSZXZva2VUb2tlbkNvbW1hbmQsXG4gIHR5cGUgUmV2b2tlVG9rZW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlVG9rZW5Db21tYW5kT3V0cHV0LFxuICBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICB0eXBlIFNldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIHR5cGUgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kT3V0cHV0LFxuICBTZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICB0eXBlIFNldFVzZXJTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICBTaWduVXBDb21tYW5kLFxuICB0eXBlIFNpZ25VcENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTaWduVXBDb21tYW5kT3V0cHV0LFxuICBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICB0eXBlIFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIHR5cGUgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVHcm91cENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWNvZ25pdG8taWRlbnRpdHktcHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2UsXG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2VMYXllcixcbn0gZnJvbSBcIi4vQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50Q29uZmlnTGF5ZXIgfSBmcm9tIFwiLi9Db2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5pbXBvcnQge1xuICBBbGxTZXJ2aWNlRXJyb3JzLFxuICBBbGlhc0V4aXN0c0Vycm9yLFxuICBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3IsXG4gIENvZGVNaXNtYXRjaEVycm9yLFxuICBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3IsXG4gIER1cGxpY2F0ZVByb3ZpZGVyRXJyb3IsXG4gIEVuYWJsZVNvZnR3YXJlVG9rZW5NRkFFcnJvcixcbiAgRXhwaXJlZENvZGVFcnJvcixcbiAgRm9yYmlkZGVuRXJyb3IsXG4gIEdyb3VwRXhpc3RzRXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvcixcbiAgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3IsXG4gIEludmFsaWRPQXV0aEZsb3dFcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlckVycm9yLFxuICBJbnZhbGlkUGFzc3dvcmRFcnJvcixcbiAgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvcixcbiAgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yLFxuICBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3IsXG4gIExpbWl0RXhjZWVkZWRFcnJvcixcbiAgTUZBTWV0aG9kTm90Rm91bmRFcnJvcixcbiAgTm90QXV0aG9yaXplZEVycm9yLFxuICBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvcixcbiAgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3IsXG4gIFByZWNvbmRpdGlvbk5vdE1ldEVycm9yLFxuICBSZXNvdXJjZU5vdEZvdW5kRXJyb3IsXG4gIFNjb3BlRG9lc05vdEV4aXN0RXJyb3IsXG4gIFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yLFxuICBUb29NYW55RmFpbGVkQXR0ZW1wdHNFcnJvcixcbiAgVG9vTWFueVJlcXVlc3RzRXJyb3IsXG4gIFVuYXV0aG9yaXplZEVycm9yLFxuICBVbmV4cGVjdGVkTGFtYmRhRXJyb3IsXG4gIFVuc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlckVycm9yLFxuICBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLFxuICBVbnN1cHBvcnRlZFRva2VuVHlwZUVycm9yLFxuICBVbnN1cHBvcnRlZFVzZXJTdGF0ZUVycm9yLFxuICBVc2VySW1wb3J0SW5Qcm9ncmVzc0Vycm9yLFxuICBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yLFxuICBVc2VyTm90Q29uZmlybWVkRXJyb3IsXG4gIFVzZXJOb3RGb3VuZEVycm9yLFxuICBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yLFxuICBVc2VyUG9vbFRhZ2dpbmdFcnJvcixcbiAgVXNlcm5hbWVFeGlzdHNFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4xXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmQsXG4gIEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kLFxuICBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kLFxuICBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kLFxuICBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kLFxuICBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmQsXG4gIEFkbWluRW5hYmxlVXNlckNvbW1hbmQsXG4gIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZCxcbiAgQWRtaW5HZXREZXZpY2VDb21tYW5kLFxuICBBZG1pbkdldFVzZXJDb21tYW5kLFxuICBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmQsXG4gIEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmQsXG4gIEFkbWluTGlzdERldmljZXNDb21tYW5kLFxuICBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZCxcbiAgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kLFxuICBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kLFxuICBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZCxcbiAgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZCxcbiAgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZCxcbiAgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kLFxuICBDaGFuZ2VQYXNzd29yZENvbW1hbmQsXG4gIENvbmZpcm1EZXZpY2VDb21tYW5kLFxuICBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICBDb25maXJtU2lnblVwQ29tbWFuZCxcbiAgQ3JlYXRlR3JvdXBDb21tYW5kLFxuICBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgQ3JlYXRlVXNlclBvb2xDb21tYW5kLFxuICBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgRGVsZXRlR3JvdXBDb21tYW5kLFxuICBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICBEZWxldGVVc2VyQ29tbWFuZCxcbiAgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICBEZWxldGVVc2VyUG9vbENvbW1hbmQsXG4gIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIERlc2NyaWJlVXNlclBvb2xDb21tYW5kLFxuICBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIEZvcmdldERldmljZUNvbW1hbmQsXG4gIEZvcmdvdFBhc3N3b3JkQ29tbWFuZCxcbiAgR2V0Q1NWSGVhZGVyQ29tbWFuZCxcbiAgR2V0RGV2aWNlQ29tbWFuZCxcbiAgR2V0R3JvdXBDb21tYW5kLFxuICBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZCxcbiAgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZCxcbiAgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgR2V0VXNlckNvbW1hbmQsXG4gIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZCxcbiAgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICBHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgSW5pdGlhdGVBdXRoQ29tbWFuZCxcbiAgTGlzdERldmljZXNDb21tYW5kLFxuICBMaXN0R3JvdXBzQ29tbWFuZCxcbiAgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZCxcbiAgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kLFxuICBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kLFxuICBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZCxcbiAgTGlzdFVzZXJQb29sc0NvbW1hbmQsXG4gIExpc3RVc2Vyc0NvbW1hbmQsXG4gIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kLFxuICBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZCxcbiAgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmQsXG4gIFJldm9rZVRva2VuQ29tbWFuZCxcbiAgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZCxcbiAgU2V0VXNlclNldHRpbmdzQ29tbWFuZCxcbiAgU2lnblVwQ29tbWFuZCxcbiAgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmQsXG4gIFVwZGF0ZUdyb3VwQ29tbWFuZCxcbiAgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICBVcGRhdGVVc2VyUG9vbENvbW1hbmQsXG4gIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgYWRkQ3VzdG9tQXR0cmlidXRlcyhcbiAgICBhcmdzOiBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJJbXBvcnRJblByb2dyZXNzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmR9XG4gICAqL1xuICBhZG1pbkFkZFVzZXJUb0dyb3VwKFxuICAgIGFyZ3M6IEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZH1cbiAgICovXG4gIGFkbWluQ29uZmlybVNpZ25VcChcbiAgICBhcmdzOiBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlGYWlsZWRBdHRlbXB0c0Vycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5DcmVhdGVVc2VyKFxuICAgIGFyZ3M6IEFkbWluQ3JlYXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluQ3JlYXRlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbk5vdE1ldEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkVXNlclN0YXRlRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJuYW1lRXhpc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRGVsZXRlVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkRlbGV0ZVVzZXIoXG4gICAgYXJnczogQWRtaW5EZWxldGVVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5EZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBhZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlcihcbiAgICBhcmdzOiBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRGlzYWJsZVVzZXIoXG4gICAgYXJnczogQWRtaW5EaXNhYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRGlzYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkVuYWJsZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5FbmFibGVVc2VyKFxuICAgIGFyZ3M6IEFkbWluRW5hYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRW5hYmxlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRm9yZ2V0RGV2aWNlKFxuICAgIGFyZ3M6IEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluR2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluR2V0RGV2aWNlKFxuICAgIGFyZ3M6IEFkbWluR2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5HZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5HZXRVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluR2V0VXNlcihcbiAgICBhcmdzOiBBZG1pbkdldFVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkdldFVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmR9XG4gICAqL1xuICBhZG1pbkluaXRpYXRlQXV0aChcbiAgICBhcmdzOiBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBNRkFNZXRob2ROb3RGb3VuZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluTGlua1Byb3ZpZGVyRm9yVXNlcihcbiAgICBhcmdzOiBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluTGlzdERldmljZXNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5MaXN0RGV2aWNlcyhcbiAgICBhcmdzOiBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluTGlzdEdyb3Vwc0ZvclVzZXIoXG4gICAgYXJnczogQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmR9XG4gICAqL1xuICBhZG1pbkxpc3RVc2VyQXV0aEV2ZW50cyhcbiAgICBhcmdzOiBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGFkbWluUmVtb3ZlVXNlckZyb21Hcm91cChcbiAgICBhcmdzOiBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGFkbWluUmVzZXRVc2VyUGFzc3dvcmQoXG4gICAgYXJnczogQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlKFxuICAgIGFyZ3M6IEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBNRkFNZXRob2ROb3RGb3VuZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkSGlzdG9yeVBvbGljeVZpb2xhdGlvbkVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluU2V0VXNlck1GQVByZWZlcmVuY2UoXG4gICAgYXJnczogQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGFkbWluU2V0VXNlclBhc3N3b3JkKFxuICAgIGFyZ3M6IEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluU2V0VXNlclNldHRpbmdzKFxuICAgIGFyZ3M6IEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFjayhcbiAgICBhcmdzOiBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluVXBkYXRlRGV2aWNlU3RhdHVzKFxuICAgIGFyZ3M6IEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlcyhcbiAgICBhcmdzOiBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZH1cbiAgICovXG4gIGFkbWluVXNlckdsb2JhbFNpZ25PdXQoXG4gICAgYXJnczogQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZH1cbiAgICovXG4gIGFzc29jaWF0ZVNvZnR3YXJlVG9rZW4oXG4gICAgYXJnczogQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENoYW5nZVBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGNoYW5nZVBhc3N3b3JkKFxuICAgIGFyZ3M6IENoYW5nZVBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2hhbmdlUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbmZpcm1EZXZpY2VDb21tYW5kfVxuICAgKi9cbiAgY29uZmlybURldmljZShcbiAgICBhcmdzOiBDb25maXJtRGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ29uZmlybURldmljZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJuYW1lRXhpc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGNvbmZpcm1Gb3Jnb3RQYXNzd29yZChcbiAgICBhcmdzOiBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55RmFpbGVkQXR0ZW1wdHNFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb25maXJtU2lnblVwQ29tbWFuZH1cbiAgICovXG4gIGNvbmZpcm1TaWduVXAoXG4gICAgYXJnczogQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueUZhaWxlZEF0dGVtcHRzRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUdyb3VwKFxuICAgIGFyZ3M6IENyZWF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEdyb3VwRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEdXBsaWNhdGVQcm92aWRlckVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVJlc291cmNlU2VydmVyKFxuICAgIGFyZ3M6IENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VySW1wb3J0Sm9iKFxuICAgIGFyZ3M6IENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25Ob3RNZXRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VyUG9vbChcbiAgICBhcmdzOiBDcmVhdGVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJQb29sVGFnZ2luZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVVzZXJQb29sQ2xpZW50KFxuICAgIGFyZ3M6IENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRPQXV0aEZsb3dFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTY29wZURvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VyUG9vbERvbWFpbihcbiAgICBhcmdzOiBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlR3JvdXAoXG4gICAgYXJnczogRGVsZXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXIoXG4gICAgYXJnczogRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVXNlckF0dHJpYnV0ZXMoXG4gICAgYXJnczogRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyUG9vbChcbiAgICBhcmdzOiBEZWxldGVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyUG9vbENsaWVudChcbiAgICBhcmdzOiBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXJQb29sRG9tYWluKFxuICAgIGFyZ3M6IERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlSWRlbnRpdHlQcm92aWRlcihcbiAgICBhcmdzOiBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJpc2tDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVVc2VySW1wb3J0Sm9iKFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVVzZXJQb29sKFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlclBvb2xUYWdnaW5nRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVVzZXJQb29sQ2xpZW50KFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlVXNlclBvb2xEb21haW4oXG4gICAgYXJnczogRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRm9yZ2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGZvcmdldERldmljZShcbiAgICBhcmdzOiBGb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBGb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBGb3Jnb3RQYXNzd29yZENvbW1hbmR9XG4gICAqL1xuICBmb3Jnb3RQYXNzd29yZChcbiAgICBhcmdzOiBGb3Jnb3RQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0Q1NWSGVhZGVyQ29tbWFuZH1cbiAgICovXG4gIGdldENTVkhlYWRlcihcbiAgICBhcmdzOiBHZXRDU1ZIZWFkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRDU1ZIZWFkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldERldmljZUNvbW1hbmR9XG4gICAqL1xuICBnZXREZXZpY2UoXG4gICAgYXJnczogR2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0R3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZ2V0R3JvdXAoXG4gICAgYXJnczogR2V0R3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmR9XG4gICAqL1xuICBnZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyKFxuICAgIGFyZ3M6IEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZH1cbiAgICovXG4gIGdldFNpZ25pbmdDZXJ0aWZpY2F0ZShcbiAgICBhcmdzOiBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0VUlDdXN0b21pemF0aW9uKFxuICAgIGFyZ3M6IEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXNlckNvbW1hbmR9XG4gICAqL1xuICBnZXRVc2VyKFxuICAgIGFyZ3M6IEdldFVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZH1cbiAgICovXG4gIGdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlKFxuICAgIGFyZ3M6IEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRVc2VyUG9vbE1mYUNvbmZpZyhcbiAgICBhcmdzOiBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHbG9iYWxTaWduT3V0Q29tbWFuZH1cbiAgICovXG4gIGdsb2JhbFNpZ25PdXQoXG4gICAgYXJnczogR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbml0aWF0ZUF1dGhDb21tYW5kfVxuICAgKi9cbiAgaW5pdGlhdGVBdXRoKFxuICAgIGFyZ3M6IEluaXRpYXRlQXV0aENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEluaXRpYXRlQXV0aENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RGV2aWNlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RGV2aWNlcyhcbiAgICBhcmdzOiBMaXN0RGV2aWNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEdyb3Vwc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0R3JvdXBzKFxuICAgIGFyZ3M6IExpc3RHcm91cHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0R3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdElkZW50aXR5UHJvdmlkZXJzKFxuICAgIGFyZ3M6IExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UmVzb3VyY2VTZXJ2ZXJzKFxuICAgIGFyZ3M6IExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzRm9yUmVzb3VyY2UoXG4gICAgYXJnczogTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlckltcG9ydEpvYnMoXG4gICAgYXJnczogTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2VyUG9vbENsaWVudHMoXG4gICAgYXJnczogTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2VyUG9vbHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFVzZXJQb29scyhcbiAgICBhcmdzOiBMaXN0VXNlclBvb2xzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJQb29sc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2Vyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlcnMoXG4gICAgYXJnczogTGlzdFVzZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2Vyc0luR3JvdXAoXG4gICAgYXJnczogTGlzdFVzZXJzSW5Hcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kfVxuICAgKi9cbiAgcmVzZW5kQ29uZmlybWF0aW9uQ29kZShcbiAgICBhcmdzOiBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kfVxuICAgKi9cbiAgcmVzcG9uZFRvQXV0aENoYWxsZW5nZShcbiAgICBhcmdzOiBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTUZBTWV0aG9kTm90Rm91bmRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU29mdHdhcmVUb2tlbk1GQU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmV2b2tlVG9rZW5Db21tYW5kfVxuICAgKi9cbiAgcmV2b2tlVG9rZW4oXG4gICAgYXJnczogUmV2b2tlVG9rZW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXZva2VUb2tlbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuYXV0aG9yaXplZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBVbnN1cHBvcnRlZFRva2VuVHlwZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzZXRSaXNrQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHNldFVJQ3VzdG9taXphdGlvbihcbiAgICBhcmdzOiBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZH1cbiAgICovXG4gIHNldFVzZXJNRkFQcmVmZXJlbmNlKFxuICAgIGFyZ3M6IFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBzZXRVc2VyUG9vbE1mYUNvbmZpZyhcbiAgICBhcmdzOiBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VXNlclNldHRpbmdzQ29tbWFuZH1cbiAgICovXG4gIHNldFVzZXJTZXR0aW5ncyhcbiAgICBhcmdzOiBTZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTaWduVXBDb21tYW5kfVxuICAgKi9cbiAgc2lnblVwKFxuICAgIGFyZ3M6IFNpZ25VcENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNpZ25VcENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VybmFtZUV4aXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmR9XG4gICAqL1xuICBzdGFydFVzZXJJbXBvcnRKb2IoXG4gICAgYXJnczogU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uTm90TWV0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kfVxuICAgKi9cbiAgc3RvcFVzZXJJbXBvcnRKb2IoXG4gICAgYXJnczogU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbk5vdE1ldEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQXV0aEV2ZW50RmVlZGJhY2soXG4gICAgYXJnczogVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEZXZpY2VTdGF0dXMoXG4gICAgYXJnczogVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlR3JvdXAoXG4gICAgYXJnczogVXBkYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVVc2VyQXR0cmlidXRlcyhcbiAgICBhcmdzOiBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVVc2VyUG9vbChcbiAgICBhcmdzOiBVcGRhdGVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvclxuICAgIHwgVXNlclBvb2xUYWdnaW5nRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVXNlclBvb2xDbGllbnQoXG4gICAgYXJnczogVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkT0F1dGhGbG93RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNjb3BlRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVVzZXJQb29sRG9tYWluKFxuICAgIGFyZ3M6IFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5U29mdHdhcmVUb2tlbihcbiAgICBhcmdzOiBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEVuYWJsZVNvZnR3YXJlVG9rZW5NRkFFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZH1cbiAgICovXG4gIHZlcmlmeVVzZXJBdHRyaWJ1dGUoXG4gICAgYXJnczogVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LWNvZ25pdG8taWRlbnRpdHktcHJvdmlkZXIvQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlXCIsXG4pPENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSwgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlJD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUNvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248Q29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSxcbiAgbWFrZUNvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllciA9XG4gIEJhc2VDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllci5waXBlKFxuICAgIExheWVyLnByb3ZpZGUoQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZUxheWVyKSxcbiAgKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllciA9XG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUxheWVyLnBpcGUoXG4gICAgTGF5ZXIucHJvdmlkZShEZWZhdWx0Q29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRDb25maWdMYXllciksXG4gICk7XG4iXX0=
|
|
@@ -170,4 +170,4 @@ export const CognitoIdentityProviderServiceLayer = BaseCognitoIdentityProviderSe
|
|
|
170
170
|
* @category layers
|
|
171
171
|
*/
|
|
172
172
|
export const DefaultCognitoIdentityProviderServiceLayer = CognitoIdentityProviderServiceLayer.pipe(Layer.provide(DefaultCognitoIdentityProviderClientConfigLayer));
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFDTCx1Q0FBdUMsRUFDdkMsMEJBQTBCLEVBRzFCLDBCQUEwQixFQUcxQix5QkFBeUIsRUFHekIsc0JBQXNCLEVBR3RCLHNCQUFzQixFQUd0QixnQ0FBZ0MsRUFHaEMsa0NBQWtDLEVBR2xDLHVCQUF1QixFQUd2QixzQkFBc0IsRUFHdEIsd0JBQXdCLEVBR3hCLHFCQUFxQixFQUdyQixtQkFBbUIsRUFHbkIsd0JBQXdCLEVBR3hCLCtCQUErQixFQUcvQix1QkFBdUIsRUFHdkIsNkJBQTZCLEVBRzdCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IsNkJBQTZCLEVBRzdCLGtDQUFrQyxFQUdsQyxnQ0FBZ0MsRUFHaEMsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQixtQ0FBbUMsRUFHbkMsOEJBQThCLEVBRzlCLGdDQUFnQyxFQUdoQyw2QkFBNkIsRUFHN0IsNkJBQTZCLEVBRzdCLHFCQUFxQixFQUdyQixvQkFBb0IsRUFHcEIsNEJBQTRCLEVBRzVCLG9CQUFvQixFQUdwQixrQkFBa0IsRUFHbEIsNkJBQTZCLEVBRzdCLDJCQUEyQixFQUczQiwwQkFBMEIsRUFHMUIscUJBQXFCLEVBR3JCLDJCQUEyQixFQUczQiwyQkFBMkIsRUFHM0Isa0JBQWtCLEVBR2xCLDZCQUE2QixFQUc3QiwyQkFBMkIsRUFHM0IsaUJBQWlCLEVBR2pCLDJCQUEyQixFQUczQixxQkFBcUIsRUFHckIsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQiwrQkFBK0IsRUFHL0IsNkJBQTZCLEVBRzdCLGdDQUFnQyxFQUdoQyw0QkFBNEIsRUFHNUIsdUJBQXVCLEVBR3ZCLDZCQUE2QixFQUc3Qiw2QkFBNkIsRUFHN0IsbUJBQW1C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VUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBb0MsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2pFLDhCQUE4QixFQUM5QixrQ0FBa0MsQ0FDbkMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUM5Qyx1Q0FBdUMsQ0FBQyxJQUFJLENBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUMsQ0FDMUQsQ0FBQztBQUVKOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUNyRCxtQ0FBbUMsQ0FBQyxJQUFJLENBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUV4Y2VwdGlvbixcbiAgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmQsXG4gIHR5cGUgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EZWxldGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5EZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmQsXG4gIHR5cGUgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5FbmFibGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkVuYWJsZVVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5FbmFibGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5HZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEFkbWluR2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5HZXRVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkdldFVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5HZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kLFxuICB0eXBlIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmQsXG4gIHR5cGUgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kLFxuICB0eXBlIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZCxcbiAgdHlwZSBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgdHlwZSBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICB0eXBlIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICB0eXBlIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIHR5cGUgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZE91dHB1dCxcbiAgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmQsXG4gIHR5cGUgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgQ2hhbmdlUGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIENoYW5nZVBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIENoYW5nZVBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQ29uZmlybURldmljZUNvbW1hbmQsXG4gIHR5cGUgQ29uZmlybURldmljZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtRGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZCxcbiAgdHlwZSBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQ29uZmlybVNpZ25VcENvbW1hbmQsXG4gIHR5cGUgQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlR3JvdXBDb21tYW5kLFxuICB0eXBlIENyZWF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlclBvb2xDb21tYW5kLFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICB0eXBlIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlR3JvdXBDb21tYW5kLFxuICB0eXBlIERlbGV0ZUdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICB0eXBlIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlclBvb2xDb21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRm9yZ2V0RGV2aWNlQ29tbWFuZCxcbiAgdHlwZSBGb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRm9yZ2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIEZvcmdvdFBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIEZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgR2V0Q1NWSGVhZGVyQ29tbWFuZCxcbiAgdHlwZSBHZXRDU1ZIZWFkZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0Q1NWSGVhZGVyQ29tbWFuZE91dHB1dCxcbiAgR2V0RGV2aWNlQ29tbWFuZCxcbiAgdHlwZSBHZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgR2V0R3JvdXBDb21tYW5kLFxuICB0eXBlIEdldEdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEdyb3VwQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmQsXG4gIHR5cGUgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZE91dHB1dCxcbiAgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZCxcbiAgdHlwZSBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZE91dHB1dCxcbiAgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0VXNlckNvbW1hbmQsXG4gIHR5cGUgR2V0VXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kLFxuICB0eXBlIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICB0eXBlIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIHR5cGUgR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgdHlwZSBHbG9iYWxTaWduT3V0Q29tbWFuZE91dHB1dCxcbiAgSW5pdGlhdGVBdXRoQ29tbWFuZCxcbiAgdHlwZSBJbml0aWF0ZUF1dGhDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgTGlzdERldmljZXNDb21tYW5kLFxuICB0eXBlIExpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEdyb3Vwc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0R3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmQsXG4gIHR5cGUgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJQb29sc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFVzZXJQb29sc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlclBvb2xzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFVzZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmQsXG4gIHR5cGUgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZE91dHB1dCxcbiAgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmQsXG4gIHR5cGUgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZE91dHB1dCxcbiAgUmV2b2tlVG9rZW5Db21tYW5kLFxuICB0eXBlIFJldm9rZVRva2VuQ29tbWFuZElucHV0LFxuICB0eXBlIFJldm9rZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgdHlwZSBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kLFxuICB0eXBlIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZE91dHB1dCxcbiAgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICB0eXBlIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgU2V0VXNlclNldHRpbmdzQ29tbWFuZCxcbiAgdHlwZSBTZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VXNlclNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgU2lnblVwQ29tbWFuZCxcbiAgdHlwZSBTaWduVXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgdHlwZSBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICB0eXBlIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICB0eXBlIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlR3JvdXBDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlclBvb2xDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1jb2duaXRvLWlkZW50aXR5LXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRhLCBFZmZlY3QsIExheWVyLCBSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlLFxuICBDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlTGF5ZXIsXG59IGZyb20gXCIuL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudENvbmZpZ0xheWVyIH0gZnJvbSBcIi4vQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWxpYXNFeGlzdHNFcnJvcixcbiAgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yLFxuICBDb2RlTWlzbWF0Y2hFcnJvcixcbiAgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yLFxuICBEdXBsaWNhdGVQcm92aWRlckVycm9yLFxuICBFbmFibGVTb2Z0d2FyZVRva2VuTUZBRXJyb3IsXG4gIEV4cGlyZWRDb2RlRXJyb3IsXG4gIEZvcmJpZGRlbkVycm9yLFxuICBHcm91cEV4aXN0c0Vycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3IsXG4gIEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yLFxuICBJbnZhbGlkT0F1dGhGbG93RXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJFcnJvcixcbiAgSW52YWxpZFBhc3N3b3JkRXJyb3IsXG4gIEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3IsXG4gIEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvcixcbiAgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIE1GQU1ldGhvZE5vdEZvdW5kRXJyb3IsXG4gIE5vdEF1dGhvcml6ZWRFcnJvcixcbiAgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3IsXG4gIFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yLFxuICBQcmVjb25kaXRpb25Ob3RNZXRFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBTY29wZURvZXNOb3RFeGlzdEVycm9yLFxuICBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvcixcbiAgVG9vTWFueUZhaWxlZEF0dGVtcHRzRXJyb3IsXG4gIFRvb01hbnlSZXF1ZXN0c0Vycm9yLFxuICBVbmF1dGhvcml6ZWRFcnJvcixcbiAgVW5leHBlY3RlZExhbWJkYUVycm9yLFxuICBVbnN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJFcnJvcixcbiAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgVW5zdXBwb3J0ZWRUb2tlblR5cGVFcnJvcixcbiAgVW5zdXBwb3J0ZWRVc2VyU3RhdGVFcnJvcixcbiAgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvcixcbiAgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvcixcbiAgVXNlck5vdENvbmZpcm1lZEVycm9yLFxuICBVc2VyTm90Rm91bmRFcnJvcixcbiAgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvcixcbiAgVXNlclBvb2xUYWdnaW5nRXJyb3IsXG4gIFVzZXJuYW1lRXhpc3RzRXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuXG5pbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmQsXG4gIEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kLFxuICBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kLFxuICBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kLFxuICBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kLFxuICBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmQsXG4gIEFkbWluRW5hYmxlVXNlckNvbW1hbmQsXG4gIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZCxcbiAgQWRtaW5HZXREZXZpY2VDb21tYW5kLFxuICBBZG1pbkdldFVzZXJDb21tYW5kLFxuICBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmQsXG4gIEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmQsXG4gIEFkbWluTGlzdERldmljZXNDb21tYW5kLFxuICBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZCxcbiAgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kLFxuICBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kLFxuICBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZCxcbiAgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZCxcbiAgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZCxcbiAgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kLFxuICBDaGFuZ2VQYXNzd29yZENvbW1hbmQsXG4gIENvbmZpcm1EZXZpY2VDb21tYW5kLFxuICBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICBDb25maXJtU2lnblVwQ29tbWFuZCxcbiAgQ3JlYXRlR3JvdXBDb21tYW5kLFxuICBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgQ3JlYXRlVXNlclBvb2xDb21tYW5kLFxuICBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgRGVsZXRlR3JvdXBDb21tYW5kLFxuICBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICBEZWxldGVVc2VyQ29tbWFuZCxcbiAgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICBEZWxldGVVc2VyUG9vbENvbW1hbmQsXG4gIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIERlc2NyaWJlVXNlclBvb2xDb21tYW5kLFxuICBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIEZvcmdldERldmljZUNvbW1hbmQsXG4gIEZvcmdvdFBhc3N3b3JkQ29tbWFuZCxcbiAgR2V0Q1NWSGVhZGVyQ29tbWFuZCxcbiAgR2V0RGV2aWNlQ29tbWFuZCxcbiAgR2V0R3JvdXBDb21tYW5kLFxuICBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZCxcbiAgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZCxcbiAgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgR2V0VXNlckNvbW1hbmQsXG4gIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZCxcbiAgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICBHbG9iYWxTaWduT3V0Q29tbWFuZCxcbiAgSW5pdGlhdGVBdXRoQ29tbWFuZCxcbiAgTGlzdERldmljZXNDb21tYW5kLFxuICBMaXN0R3JvdXBzQ29tbWFuZCxcbiAgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZCxcbiAgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kLFxuICBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kLFxuICBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZCxcbiAgTGlzdFVzZXJQb29sc0NvbW1hbmQsXG4gIExpc3RVc2Vyc0NvbW1hbmQsXG4gIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kLFxuICBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZCxcbiAgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmQsXG4gIFJldm9rZVRva2VuQ29tbWFuZCxcbiAgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kLFxuICBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZCxcbiAgU2V0VXNlclNldHRpbmdzQ29tbWFuZCxcbiAgU2lnblVwQ29tbWFuZCxcbiAgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmQsXG4gIFVwZGF0ZUdyb3VwQ29tbWFuZCxcbiAgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICBVcGRhdGVVc2VyUG9vbENvbW1hbmQsXG4gIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZCxcbiAgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgYWRkQ3VzdG9tQXR0cmlidXRlcyhcbiAgICBhcmdzOiBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJJbXBvcnRJblByb2dyZXNzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmR9XG4gICAqL1xuICBhZG1pbkFkZFVzZXJUb0dyb3VwKFxuICAgIGFyZ3M6IEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZH1cbiAgICovXG4gIGFkbWluQ29uZmlybVNpZ25VcChcbiAgICBhcmdzOiBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlGYWlsZWRBdHRlbXB0c0Vycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5DcmVhdGVVc2VyKFxuICAgIGFyZ3M6IEFkbWluQ3JlYXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluQ3JlYXRlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbk5vdE1ldEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkVXNlclN0YXRlRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJuYW1lRXhpc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRGVsZXRlVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkRlbGV0ZVVzZXIoXG4gICAgYXJnczogQWRtaW5EZWxldGVVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5EZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBhZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlcihcbiAgICBhcmdzOiBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRGlzYWJsZVVzZXIoXG4gICAgYXJnczogQWRtaW5EaXNhYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRGlzYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkVuYWJsZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5FbmFibGVVc2VyKFxuICAgIGFyZ3M6IEFkbWluRW5hYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRW5hYmxlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRm9yZ2V0RGV2aWNlKFxuICAgIGFyZ3M6IEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluR2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluR2V0RGV2aWNlKFxuICAgIGFyZ3M6IEFkbWluR2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5HZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5HZXRVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluR2V0VXNlcihcbiAgICBhcmdzOiBBZG1pbkdldFVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkdldFVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmR9XG4gICAqL1xuICBhZG1pbkluaXRpYXRlQXV0aChcbiAgICBhcmdzOiBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBNRkFNZXRob2ROb3RGb3VuZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluTGlua1Byb3ZpZGVyRm9yVXNlcihcbiAgICBhcmdzOiBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluTGlzdERldmljZXNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5MaXN0RGV2aWNlcyhcbiAgICBhcmdzOiBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluTGlzdEdyb3Vwc0ZvclVzZXIoXG4gICAgYXJnczogQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmR9XG4gICAqL1xuICBhZG1pbkxpc3RVc2VyQXV0aEV2ZW50cyhcbiAgICBhcmdzOiBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGFkbWluUmVtb3ZlVXNlckZyb21Hcm91cChcbiAgICBhcmdzOiBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGFkbWluUmVzZXRVc2VyUGFzc3dvcmQoXG4gICAgYXJnczogQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlKFxuICAgIGFyZ3M6IEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBNRkFNZXRob2ROb3RGb3VuZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkSGlzdG9yeVBvbGljeVZpb2xhdGlvbkVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluU2V0VXNlck1GQVByZWZlcmVuY2UoXG4gICAgYXJnczogQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGFkbWluU2V0VXNlclBhc3N3b3JkKFxuICAgIGFyZ3M6IEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluU2V0VXNlclNldHRpbmdzKFxuICAgIGFyZ3M6IEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFjayhcbiAgICBhcmdzOiBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluVXBkYXRlRGV2aWNlU3RhdHVzKFxuICAgIGFyZ3M6IEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlcyhcbiAgICBhcmdzOiBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZH1cbiAgICovXG4gIGFkbWluVXNlckdsb2JhbFNpZ25PdXQoXG4gICAgYXJnczogQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZH1cbiAgICovXG4gIGFzc29jaWF0ZVNvZnR3YXJlVG9rZW4oXG4gICAgYXJnczogQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENoYW5nZVBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGNoYW5nZVBhc3N3b3JkKFxuICAgIGFyZ3M6IENoYW5nZVBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2hhbmdlUGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbmZpcm1EZXZpY2VDb21tYW5kfVxuICAgKi9cbiAgY29uZmlybURldmljZShcbiAgICBhcmdzOiBDb25maXJtRGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ29uZmlybURldmljZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJuYW1lRXhpc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZH1cbiAgICovXG4gIGNvbmZpcm1Gb3Jnb3RQYXNzd29yZChcbiAgICBhcmdzOiBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55RmFpbGVkQXR0ZW1wdHNFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb25maXJtU2lnblVwQ29tbWFuZH1cbiAgICovXG4gIGNvbmZpcm1TaWduVXAoXG4gICAgYXJnczogQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvbmZpcm1TaWduVXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueUZhaWxlZEF0dGVtcHRzRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUdyb3VwKFxuICAgIGFyZ3M6IENyZWF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEdyb3VwRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEdXBsaWNhdGVQcm92aWRlckVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVJlc291cmNlU2VydmVyKFxuICAgIGFyZ3M6IENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VySW1wb3J0Sm9iKFxuICAgIGFyZ3M6IENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25Ob3RNZXRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VyUG9vbChcbiAgICBhcmdzOiBDcmVhdGVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJQb29sVGFnZ2luZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVVzZXJQb29sQ2xpZW50KFxuICAgIGFyZ3M6IENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRPQXV0aEZsb3dFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTY29wZURvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VyUG9vbERvbWFpbihcbiAgICBhcmdzOiBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlR3JvdXAoXG4gICAgYXJnczogRGVsZXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXIoXG4gICAgYXJnczogRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVXNlckF0dHJpYnV0ZXMoXG4gICAgYXJnczogRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyUG9vbChcbiAgICBhcmdzOiBEZWxldGVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyUG9vbENsaWVudChcbiAgICBhcmdzOiBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXJQb29sRG9tYWluKFxuICAgIGFyZ3M6IERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlSWRlbnRpdHlQcm92aWRlcihcbiAgICBhcmdzOiBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJpc2tDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVVc2VySW1wb3J0Sm9iKFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVXNlckltcG9ydEpvYkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVVzZXJQb29sKFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlclBvb2xUYWdnaW5nRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVVzZXJQb29sQ2xpZW50KFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlVXNlclBvb2xEb21haW4oXG4gICAgYXJnczogRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRm9yZ2V0RGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGZvcmdldERldmljZShcbiAgICBhcmdzOiBGb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBGb3JnZXREZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBGb3Jnb3RQYXNzd29yZENvbW1hbmR9XG4gICAqL1xuICBmb3Jnb3RQYXNzd29yZChcbiAgICBhcmdzOiBGb3Jnb3RQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0Q1NWSGVhZGVyQ29tbWFuZH1cbiAgICovXG4gIGdldENTVkhlYWRlcihcbiAgICBhcmdzOiBHZXRDU1ZIZWFkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRDU1ZIZWFkZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldERldmljZUNvbW1hbmR9XG4gICAqL1xuICBnZXREZXZpY2UoXG4gICAgYXJnczogR2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0R3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZ2V0R3JvdXAoXG4gICAgYXJnczogR2V0R3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmR9XG4gICAqL1xuICBnZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyKFxuICAgIGFyZ3M6IEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZH1cbiAgICovXG4gIGdldFNpZ25pbmdDZXJ0aWZpY2F0ZShcbiAgICBhcmdzOiBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0VUlDdXN0b21pemF0aW9uKFxuICAgIGFyZ3M6IEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXNlckNvbW1hbmR9XG4gICAqL1xuICBnZXRVc2VyKFxuICAgIGFyZ3M6IEdldFVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZH1cbiAgICovXG4gIGdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlKFxuICAgIGFyZ3M6IEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRVc2VyUG9vbE1mYUNvbmZpZyhcbiAgICBhcmdzOiBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHbG9iYWxTaWduT3V0Q29tbWFuZH1cbiAgICovXG4gIGdsb2JhbFNpZ25PdXQoXG4gICAgYXJnczogR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdsb2JhbFNpZ25PdXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbml0aWF0ZUF1dGhDb21tYW5kfVxuICAgKi9cbiAgaW5pdGlhdGVBdXRoKFxuICAgIGFyZ3M6IEluaXRpYXRlQXV0aENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEluaXRpYXRlQXV0aENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RGV2aWNlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RGV2aWNlcyhcbiAgICBhcmdzOiBMaXN0RGV2aWNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEdyb3Vwc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0R3JvdXBzKFxuICAgIGFyZ3M6IExpc3RHcm91cHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0R3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdElkZW50aXR5UHJvdmlkZXJzKFxuICAgIGFyZ3M6IExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UmVzb3VyY2VTZXJ2ZXJzKFxuICAgIGFyZ3M6IExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzRm9yUmVzb3VyY2UoXG4gICAgYXJnczogTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlckltcG9ydEpvYnMoXG4gICAgYXJnczogTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2VyUG9vbENsaWVudHMoXG4gICAgYXJnczogTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2VyUG9vbHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFVzZXJQb29scyhcbiAgICBhcmdzOiBMaXN0VXNlclBvb2xzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJQb29sc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RVc2Vyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlcnMoXG4gICAgYXJnczogTGlzdFVzZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFVzZXJzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2Vyc0luR3JvdXAoXG4gICAgYXJnczogTGlzdFVzZXJzSW5Hcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2Vyc0luR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kfVxuICAgKi9cbiAgcmVzZW5kQ29uZmlybWF0aW9uQ29kZShcbiAgICBhcmdzOiBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kfVxuICAgKi9cbiAgcmVzcG9uZFRvQXV0aENoYWxsZW5nZShcbiAgICBhcmdzOiBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEV4cGlyZWRDb2RlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTUZBTWV0aG9kTm90Rm91bmRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU29mdHdhcmVUb2tlbk1GQU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmV2b2tlVG9rZW5Db21tYW5kfVxuICAgKi9cbiAgcmV2b2tlVG9rZW4oXG4gICAgYXJnczogUmV2b2tlVG9rZW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXZva2VUb2tlbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuYXV0aG9yaXplZEVycm9yXG4gICAgfCBVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBVbnN1cHBvcnRlZFRva2VuVHlwZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzZXRSaXNrQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHNldFVJQ3VzdG9taXphdGlvbihcbiAgICBhcmdzOiBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZH1cbiAgICovXG4gIHNldFVzZXJNRkFQcmVmZXJlbmNlKFxuICAgIGFyZ3M6IFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBzZXRVc2VyUG9vbE1mYUNvbmZpZyhcbiAgICBhcmdzOiBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VXNlclNldHRpbmdzQ29tbWFuZH1cbiAgICovXG4gIHNldFVzZXJTZXR0aW5ncyhcbiAgICBhcmdzOiBTZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRVc2VyU2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTaWduVXBDb21tYW5kfVxuICAgKi9cbiAgc2lnblVwKFxuICAgIGFyZ3M6IFNpZ25VcENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNpZ25VcENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VybmFtZUV4aXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmR9XG4gICAqL1xuICBzdGFydFVzZXJJbXBvcnRKb2IoXG4gICAgYXJnczogU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uTm90TWV0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kfVxuICAgKi9cbiAgc3RvcFVzZXJJbXBvcnRKb2IoXG4gICAgYXJnczogU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdG9wVXNlckltcG9ydEpvYkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbk5vdE1ldEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQXV0aEV2ZW50RmVlZGJhY2soXG4gICAgYXJnczogVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEZXZpY2VTdGF0dXMoXG4gICAgYXJnczogVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlR3JvdXAoXG4gICAgYXJnczogVXBkYXRlR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVJZGVudGl0eVByb3ZpZGVyKFxuICAgIGFyZ3M6IFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVVc2VyQXR0cmlidXRlcyhcbiAgICBhcmdzOiBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVVc2VyUG9vbENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVVc2VyUG9vbChcbiAgICBhcmdzOiBVcGRhdGVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvclxuICAgIHwgVXNlclBvb2xUYWdnaW5nRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVXNlclBvb2xDbGllbnQoXG4gICAgYXJnczogVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkT0F1dGhGbG93RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNjb3BlRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVVzZXJQb29sRG9tYWluKFxuICAgIGFyZ3M6IFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5U29mdHdhcmVUb2tlbihcbiAgICBhcmdzOiBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZU1pc21hdGNoRXJyb3JcbiAgICB8IEVuYWJsZVNvZnR3YXJlVG9rZW5NRkFFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZH1cbiAgICovXG4gIHZlcmlmeVVzZXJBdHRyaWJ1dGUoXG4gICAgYXJnczogVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LWNvZ25pdG8taWRlbnRpdHktcHJvdmlkZXIvQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlXCIsXG4pPENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSwgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlJD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUNvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248Q29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSxcbiAgbWFrZUNvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllciA9XG4gIEJhc2VDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllci5waXBlKFxuICAgIExheWVyLnByb3ZpZGUoQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZUxheWVyKSxcbiAgKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllciA9XG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUxheWVyLnBpcGUoXG4gICAgTGF5ZXIucHJvdmlkZShEZWZhdWx0Q29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRDb25maWdMYXllciksXG4gICk7XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFDTCx1Q0FBdUMsRUFDdkMsMEJBQTBCLEVBRzFCLDBCQUEwQixFQUcxQix5QkFBeUIsRUFHekIsc0JBQXNCLEVBR3RCLHNCQUFzQixFQUd0QixnQ0FBZ0MsRUFHaEMsa0NBQWtDLEVBR2xDLHVCQUF1QixFQUd2QixzQkFBc0IsRUFHdEIsd0JBQXdCLEVBR3hCLHFCQUFxQixFQUdyQixtQkFBbUIsRUFHbkIsd0JBQXdCLEVBR3hCLCtCQUErQixFQUcvQix1QkFBdUIsRUFHdkIsNkJBQTZCLEVBRzdCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IsNkJBQTZCLEVBRzdCLGtDQUFrQyxFQUdsQyxnQ0FBZ0MsRUFHaEMsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQixtQ0FBbUMsRUFHbkMsOEJBQThCLEVBRzlCLGdDQUFnQyxFQUdoQyw2QkFBNkIsRUFHN0IsNkJBQTZCLEVBRzdCLHFCQUFxQixFQUdyQixvQkFBb0IsRUFHcEIsNEJBQTRCLEVBRzVCLG9CQUFvQixFQUdwQixrQkFBa0IsRUFHbEIsNkJBQTZCLEVBRzdCLDJCQUEyQixFQUczQiwwQkFBMEIsRUFHMUIscUJBQXFCLEVBR3JCLDJCQUEyQixFQUczQiwyQkFBMkIsRUFHM0Isa0JBQWtCLEVBR2xCLDZCQUE2QixFQUc3QiwyQkFBMkIsRUFHM0IsaUJBQWlCLEVBR2pCLDJCQUEyQixFQUczQixxQkFBcUIsRUFHckIsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQiwrQkFBK0IsRUFHL0IsNkJBQTZCLEVBRzdCLGdDQUFnQyxFQUdoQyw0QkFBNEIsRUFHNUIsdUJBQXVCLEVBR3ZCLDZCQUE2QixFQUc3Qiw2QkFBNkIsRUFHN0IsbUJBQW1CLEVBR25CLHFCQUFxQixFQUdyQixtQkFBbUIsRUFHbkIsZ0JBQWdCLEVBR2hCLGVBQWUsRUFHZixzQ0FBc0MsRUFHdEMsa0NBQWtDLEVBR2xDLDRCQUE0QixFQUc1Qix5QkFBeUIsRUFHekIsY0FBYyxFQUdkLHVDQUF1QyxFQUd2QywyQkFBMkIsRUFHM0Isb0JBQW9CLEVBR3BCLG1CQUFtQixFQUduQixrQkFBa0IsRUFHbEIsaUJBQWlCLEVBR2pCLDRCQUE0QixFQUc1QiwwQkFBMEIsRUFHMUIsMEJBQTBCLEVBRzFCLHlCQUF5QixFQUd6QiwwQkFBMEIsRUFHMUIsb0JBQW9CLEVBR3BCLGdCQUFnQixFQUdoQix1QkFBdUIsRUFHdkIsNkJBQTZCLEVBRzdCLDZCQUE2QixFQUc3QixrQkFBa0IsRUFHbEIsa0NBQWtDLEVBR2xDLDJCQUEyQixFQUczQix5QkFBeUIsRUFHekIsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQixzQkFBc0IsRUFHdEIsYUFBYSxFQUdiLHlCQUF5QixFQUd6Qix3QkFBd0IsRUFHeEIsa0JBQWtCLEVBR2xCLG9CQUFvQixFQUdwQiw4QkFBOEIsRUFHOUIseUJBQXlCLEVBR3pCLGtCQUFrQixFQUdsQiw2QkFBNkIsRUFHN0IsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQixxQkFBcUIsRUFHckIsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQiwwQkFBMEIsRUFHMUIsMEJBQTBCLEdBRzNCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRCxPQUFPLEVBQ0wscUNBQXFDLEVBQ3JDLDBDQUEwQyxHQUMzQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hILE9BQU8sRUFDTCxnQkFBZ0IsRUEyQ2hCLFFBQVEsR0FFVCxNQUFNLFVBQVUsQ0FBQztBQWFsQixNQUFNLFFBQVEsR0FBRztJQUNmLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsZ0NBQWdDO0lBQ2hDLGtDQUFrQztJQUNsQyx1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLHdCQUF3QjtJQUN4QixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHdCQUF3QjtJQUN4QiwrQkFBK0I7SUFDL0IsdUJBQXVCO0lBQ3ZCLDZCQUE2QjtJQUM3Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMsZ0NBQWdDO0lBQ2hDLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLDhCQUE4QjtJQUM5QixnQ0FBZ0M7SUFDaEMsNkJBQTZCO0lBQzdCLDZCQUE2QjtJQUM3QixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLDRCQUE0QjtJQUM1QixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3QiwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLGtCQUFrQjtJQUNsQiw2QkFBNkI7SUFDN0IsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQiwyQkFBMkI7SUFDM0IscUJBQXFCO0lBQ3JCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsK0JBQStCO0lBQy9CLDZCQUE2QjtJQUM3QixnQ0FBZ0M7SUFDaEMsNEJBQTRCO0lBQzVCLHVCQUF1QjtJQUN2Qiw2QkFBNkI7SUFDN0IsNkJBQTZCO0lBQzdCLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2Ysc0NBQXNDO0lBQ3RDLGtDQUFrQztJQUNsQyw0QkFBNEI7SUFDNUIseUJBQXlCO0lBQ3pCLGNBQWM7SUFDZCx1Q0FBdUM7SUFDdkMsMkJBQTJCO0lBQzNCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQiw0QkFBNEI7SUFDNUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLGtDQUFrQztJQUNsQywyQkFBMkI7SUFDM0IseUJBQXlCO0lBQ3pCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0Isc0JBQXNCO0lBQ3RCLGFBQWE7SUFDYix5QkFBeUI7SUFDekIsd0JBQXdCO0lBQ3hCLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsOEJBQThCO0lBQzlCLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIsNkJBQTZCO0lBQzdCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IscUJBQXFCO0lBQ3JCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLDBCQUEwQjtDQUMzQixDQUFDO0FBMDZERjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsTUFBTSxDQUFDLEdBQUcsQ0FDNUQsNkVBQTZFLENBQzlFLEVBQW1FO0NBQUc7QUFFdkU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBRS9ELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQzFELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQVEsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBRSxPQUE0QixFQUFFLEVBQUUsQ0FDN0QsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNoQixHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxHQUFHLENBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksRUFBRSxDQUFDO2dCQUNsQixXQUFXO2FBQ1osQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQ0UsQ0FBQyxZQUFZLHVDQUF1QztvQkFDcEQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDakMsQ0FBQztvQkFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBRWxDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFVixPQUFPLGdCQUFnQixDQUFDO3dCQUN0QixHQUFHLENBQUM7d0JBQ0osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sUUFBUSxDQUFDO3dCQUNkLEdBQUcsQ0FBQzt3QkFDSixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBb0MsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2pFLDhCQUE4QixFQUM5QixrQ0FBa0MsQ0FDbkMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUM5Qyx1Q0FBdUMsQ0FBQyxJQUFJLENBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUMsQ0FDMUQsQ0FBQztBQUVKOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUNyRCxtQ0FBbUMsQ0FBQyxJQUFJLENBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FDL0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUV4Y2VwdGlvbixcbiAgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmQsXG4gIHR5cGUgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkNvbmZpcm1TaWduVXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EZWxldGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5EZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmQsXG4gIHR5cGUgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5FbmFibGVVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkVuYWJsZVVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5FbmFibGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Gb3JnZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5HZXREZXZpY2VDb21tYW5kLFxuICB0eXBlIEFkbWluR2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5HZXRVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkdldFVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5HZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kLFxuICB0eXBlIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZCxcbiAgdHlwZSBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmQsXG4gIHR5cGUgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kLFxuICB0eXBlIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZCxcbiAgdHlwZSBBZG1pblJlbW92ZVVzZXJGcm9tR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmQsXG4gIHR5cGUgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZCxcbiAgdHlwZSBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmQsXG4gIHR5cGUgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5TZXRVc2VyUGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5TZXRVc2VyU2V0dGluZ3NDb21tYW5kLFxuICB0eXBlIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5VcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICB0eXBlIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIHR5cGUgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZE91dHB1dCxcbiAgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmQsXG4gIHR5cGUgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgQ2hhbmdlUGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIENoYW5nZVBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIENoYW5nZVBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQ29uZmlybURldmljZUNvbW1hbmQsXG4gIHR5cGUgQ29uZmlybURldmljZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtRGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZCxcbiAgdHlwZSBDb25maXJtRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgQ29uZmlybVNpZ25VcENvbW1hbmQsXG4gIHR5cGUgQ29uZmlybVNpZ25VcENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlR3JvdXBDb21tYW5kLFxuICB0eXBlIENyZWF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlclBvb2xDb21tYW5kLFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICB0eXBlIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlR3JvdXBDb21tYW5kLFxuICB0eXBlIERlbGV0ZUdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICB0eXBlIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlclBvb2xDb21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICB0eXBlIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRm9yZ2V0RGV2aWNlQ29tbWFuZCxcbiAgdHlwZSBGb3JnZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRm9yZ2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgRm9yZ290UGFzc3dvcmRDb21tYW5kLFxuICB0eXBlIEZvcmdvdFBhc3N3b3JkQ29tbWFuZElucHV0LFxuICB0eXBlIEZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgR2V0Q1NWSGVhZGVyQ29tbWFuZCxcbiAgdHlwZSBHZXRDU1ZIZWFkZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0Q1NWSGVhZGVyQ29tbWFuZE91dHB1dCxcbiAgR2V0RGV2aWNlQ29tbWFuZCxcbiAgdHlwZSBHZXREZXZpY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgR2V0R3JvdXBDb21tYW5kLFxuICB0eXBlIEdldEdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEdyb3VwQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmQsXG4gIHR5cGUgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZE91dHB1dCxcbiAgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZCxcbiAgdHlwZSBHZXRTaWduaW5nQ2VydGlmaWNhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZE91dHB1dCxcbiAgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0VXNlckNvbW1hbmQsXG4gIHR5cGUgR2V0VXNlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgR2V0VXNlckF0dHJpYnV0ZVZlcmlmaWNhdGlvbkNvZGVDb21tYW5kLFxuICB0eXBlIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICB0eXBlIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIHR5cGUgR2xvYmFsU2lnbk91dENvbW1hbmRJbnB1dCxcbiAgdHlwZSBHbG9iYWxTaWduT3V0Q29tbWFuZE91dHB1dCxcbiAgSW5pdGlhdGVBdXRoQ29tbWFuZCxcbiAgdHlwZSBJbml0aWF0ZUF1dGhDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW5pdGlhdGVBdXRoQ29tbWFuZE91dHB1dCxcbiAgTGlzdERldmljZXNDb21tYW5kLFxuICB0eXBlIExpc3REZXZpY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REZXZpY2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEdyb3Vwc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0R3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmQsXG4gIHR5cGUgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJQb29sc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFVzZXJQb29sc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlclBvb2xzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VXNlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFVzZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmQsXG4gIHR5cGUgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZE91dHB1dCxcbiAgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmQsXG4gIHR5cGUgUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZE91dHB1dCxcbiAgUmV2b2tlVG9rZW5Db21tYW5kLFxuICB0eXBlIFJldm9rZVRva2VuQ29tbWFuZElucHV0LFxuICB0eXBlIFJldm9rZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgdHlwZSBTZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kLFxuICB0eXBlIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZE91dHB1dCxcbiAgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kLFxuICB0eXBlIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgU2V0VXNlclNldHRpbmdzQ29tbWFuZCxcbiAgdHlwZSBTZXRVc2VyU2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VXNlclNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgU2lnblVwQ29tbWFuZCxcbiAgdHlwZSBTaWduVXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgdHlwZSBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RhcnRVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICB0eXBlIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICB0eXBlIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZE91dHB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlR3JvdXBDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlclBvb2xDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1jb2duaXRvLWlkZW50aXR5LXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRhLCBFZmZlY3QsIExheWVyLCBSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlLFxuICBDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlTGF5ZXIsXG59IGZyb20gXCIuL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudENvbmZpZ0xheWVyIH0gZnJvbSBcIi4vQ29nbml0b0lkZW50aXR5UHJvdmlkZXJDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWxpYXNFeGlzdHNFcnJvcixcbiAgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yLFxuICBDb2RlTWlzbWF0Y2hFcnJvcixcbiAgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yLFxuICBEdXBsaWNhdGVQcm92aWRlckVycm9yLFxuICBFbmFibGVTb2Z0d2FyZVRva2VuTUZBRXJyb3IsXG4gIEV4cGlyZWRDb2RlRXJyb3IsXG4gIEZvcmJpZGRlbkVycm9yLFxuICBHcm91cEV4aXN0c0Vycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3IsXG4gIEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yLFxuICBJbnZhbGlkT0F1dGhGbG93RXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJFcnJvcixcbiAgSW52YWxpZFBhc3N3b3JkRXJyb3IsXG4gIEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3IsXG4gIEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvcixcbiAgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIE1GQU1ldGhvZE5vdEZvdW5kRXJyb3IsXG4gIE5vdEF1dGhvcml6ZWRFcnJvcixcbiAgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3IsXG4gIFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yLFxuICBQcmVjb25kaXRpb25Ob3RNZXRFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBTY29wZURvZXNOb3RFeGlzdEVycm9yLFxuICBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvcixcbiAgVG9vTWFueUZhaWxlZEF0dGVtcHRzRXJyb3IsXG4gIFRvb01hbnlSZXF1ZXN0c0Vycm9yLFxuICBVbmF1dGhvcml6ZWRFcnJvcixcbiAgVW5leHBlY3RlZExhbWJkYUVycm9yLFxuICBVbnN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJFcnJvcixcbiAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvcixcbiAgVW5zdXBwb3J0ZWRUb2tlblR5cGVFcnJvcixcbiAgVW5zdXBwb3J0ZWRVc2VyU3RhdGVFcnJvcixcbiAgVXNlckltcG9ydEluUHJvZ3Jlc3NFcnJvcixcbiAgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvcixcbiAgVXNlck5vdENvbmZpcm1lZEVycm9yLFxuICBVc2VyTm90Rm91bmRFcnJvcixcbiAgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvcixcbiAgVXNlclBvb2xUYWdnaW5nRXJyb3IsXG4gIFVzZXJuYW1lRXhpc3RzRXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBIYW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IHRoZSBjb25uZWN0aW9uIHBoYXNlIG9mIGEgcmVxdWVzdFxuICAgKiBtYXkgdGFrZSBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCBpcyBhYmFuZG9uZWQuXG4gICAqL1xuICByZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbn1cblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kLFxuICBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZCxcbiAgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZCxcbiAgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZCxcbiAgQWRtaW5EZWxldGVVc2VyQ29tbWFuZCxcbiAgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIEFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlckNvbW1hbmQsXG4gIEFkbWluRGlzYWJsZVVzZXJDb21tYW5kLFxuICBBZG1pbkVuYWJsZVVzZXJDb21tYW5kLFxuICBBZG1pbkZvcmdldERldmljZUNvbW1hbmQsXG4gIEFkbWluR2V0RGV2aWNlQ29tbWFuZCxcbiAgQWRtaW5HZXRVc2VyQ29tbWFuZCxcbiAgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kLFxuICBBZG1pbkxpbmtQcm92aWRlckZvclVzZXJDb21tYW5kLFxuICBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZCxcbiAgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmQsXG4gIEFkbWluTGlzdFVzZXJBdXRoRXZlbnRzQ29tbWFuZCxcbiAgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZCxcbiAgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmQsXG4gIEFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmQsXG4gIEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kLFxuICBBZG1pblNldFVzZXJQYXNzd29yZENvbW1hbmQsXG4gIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZCxcbiAgQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmQsXG4gIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZCxcbiAgQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmQsXG4gIEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kLFxuICBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZCxcbiAgQ2hhbmdlUGFzc3dvcmRDb21tYW5kLFxuICBDb25maXJtRGV2aWNlQ29tbWFuZCxcbiAgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZCxcbiAgQ29uZmlybVNpZ25VcENvbW1hbmQsXG4gIENyZWF0ZUdyb3VwQ29tbWFuZCxcbiAgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIENyZWF0ZVVzZXJQb29sQ29tbWFuZCxcbiAgQ3JlYXRlVXNlclBvb2xDbGllbnRDb21tYW5kLFxuICBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmQsXG4gIERlbGV0ZUdyb3VwQ29tbWFuZCxcbiAgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmQsXG4gIERlbGV0ZVJlc291cmNlU2VydmVyQ29tbWFuZCxcbiAgRGVsZXRlVXNlckNvbW1hbmQsXG4gIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgRGVsZXRlVXNlclBvb2xDb21tYW5kLFxuICBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kLFxuICBEZXNjcmliZVVzZXJQb29sQ29tbWFuZCxcbiAgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kLFxuICBGb3JnZXREZXZpY2VDb21tYW5kLFxuICBGb3Jnb3RQYXNzd29yZENvbW1hbmQsXG4gIEdldENTVkhlYWRlckNvbW1hbmQsXG4gIEdldERldmljZUNvbW1hbmQsXG4gIEdldEdyb3VwQ29tbWFuZCxcbiAgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmQsXG4gIEdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldFNpZ25pbmdDZXJ0aWZpY2F0ZUNvbW1hbmQsXG4gIEdldFVJQ3VzdG9taXphdGlvbkNvbW1hbmQsXG4gIEdldFVzZXJDb21tYW5kLFxuICBHZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZUNvbW1hbmQsXG4gIEdldFVzZXJQb29sTWZhQ29uZmlnQ29tbWFuZCxcbiAgR2xvYmFsU2lnbk91dENvbW1hbmQsXG4gIEluaXRpYXRlQXV0aENvbW1hbmQsXG4gIExpc3REZXZpY2VzQ29tbWFuZCxcbiAgTGlzdEdyb3Vwc0NvbW1hbmQsXG4gIExpc3RJZGVudGl0eVByb3ZpZGVyc0NvbW1hbmQsXG4gIExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kLFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgTGlzdFVzZXJJbXBvcnRKb2JzQ29tbWFuZCxcbiAgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmQsXG4gIExpc3RVc2VyUG9vbHNDb21tYW5kLFxuICBMaXN0VXNlcnNDb21tYW5kLFxuICBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZCxcbiAgUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmQsXG4gIFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kLFxuICBSZXZva2VUb2tlbkNvbW1hbmQsXG4gIFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFNldFJpc2tDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZCxcbiAgU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kLFxuICBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmQsXG4gIFNldFVzZXJTZXR0aW5nc0NvbW1hbmQsXG4gIFNpZ25VcENvbW1hbmQsXG4gIFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmQsXG4gIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kLFxuICBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kLFxuICBVcGRhdGVHcm91cENvbW1hbmQsXG4gIFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kLFxuICBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmQsXG4gIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgVXBkYXRlVXNlclBvb2xDb21tYW5kLFxuICBVcGRhdGVVc2VyUG9vbENsaWVudENvbW1hbmQsXG4gIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZCxcbiAgVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmQsXG4gIFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kLFxufTtcblxuaW50ZXJmYWNlIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSQge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGRDdXN0b21BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGFkZEN1c3RvbUF0dHJpYnV0ZXMoXG4gICAgYXJnczogQWRkQ3VzdG9tQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZEN1c3RvbUF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VySW1wb3J0SW5Qcm9ncmVzc0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluQWRkVXNlclRvR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5BZGRVc2VyVG9Hcm91cChcbiAgICBhcmdzOiBBZG1pbkFkZFVzZXJUb0dyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5BZGRVc2VyVG9Hcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluQ29uZmlybVNpZ25VcENvbW1hbmR9XG4gICAqL1xuICBhZG1pbkNvbmZpcm1TaWduVXAoXG4gICAgYXJnczogQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5Db25maXJtU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55RmFpbGVkQXR0ZW1wdHNFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5DcmVhdGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluQ3JlYXRlVXNlcihcbiAgICBhcmdzOiBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkNyZWF0ZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25Ob3RNZXRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVbnN1cHBvcnRlZFVzZXJTdGF0ZUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VybmFtZUV4aXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkRlbGV0ZVVzZXJDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5EZWxldGVVc2VyKFxuICAgIGFyZ3M6IEFkbWluRGVsZXRlVXNlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRGVsZXRlVXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5EZWxldGVVc2VyQXR0cmlidXRlcyhcbiAgICBhcmdzOiBBZG1pbkRlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5EZWxldGVVc2VyQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluRGlzYWJsZVByb3ZpZGVyRm9yVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkRpc2FibGVQcm92aWRlckZvclVzZXIoXG4gICAgYXJnczogQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5EaXNhYmxlUHJvdmlkZXJGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5EaXNhYmxlVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkRpc2FibGVVc2VyKFxuICAgIGFyZ3M6IEFkbWluRGlzYWJsZVVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkRpc2FibGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5FbmFibGVVc2VyQ29tbWFuZH1cbiAgICovXG4gIGFkbWluRW5hYmxlVXNlcihcbiAgICBhcmdzOiBBZG1pbkVuYWJsZVVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkVuYWJsZVVzZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkZvcmdldERldmljZUNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkZvcmdldERldmljZShcbiAgICBhcmdzOiBBZG1pbkZvcmdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluRm9yZ2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkdldERldmljZUNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkdldERldmljZShcbiAgICBhcmdzOiBBZG1pbkdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluR2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluR2V0VXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkdldFVzZXIoXG4gICAgYXJnczogQWRtaW5HZXRVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5HZXRVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5Jbml0aWF0ZUF1dGgoXG4gICAgYXJnczogQWRtaW5Jbml0aWF0ZUF1dGhDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkluaXRpYXRlQXV0aENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTUZBTWV0aG9kTm90Rm91bmRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluTGlua1Byb3ZpZGVyRm9yVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkxpbmtQcm92aWRlckZvclVzZXIoXG4gICAgYXJnczogQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5MaW5rUHJvdmlkZXJGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pbkxpc3REZXZpY2VzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluTGlzdERldmljZXMoXG4gICAgYXJnczogQWRtaW5MaXN0RGV2aWNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluTGlzdERldmljZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5MaXN0R3JvdXBzRm9yVXNlckNvbW1hbmR9XG4gICAqL1xuICBhZG1pbkxpc3RHcm91cHNGb3JVc2VyKFxuICAgIGFyZ3M6IEFkbWluTGlzdEdyb3Vwc0ZvclVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkxpc3RHcm91cHNGb3JVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kfVxuICAgKi9cbiAgYWRtaW5MaXN0VXNlckF1dGhFdmVudHMoXG4gICAgYXJnczogQWRtaW5MaXN0VXNlckF1dGhFdmVudHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pbkxpc3RVc2VyQXV0aEV2ZW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkbWluUmVtb3ZlVXNlckZyb21Hcm91cENvbW1hbmR9XG4gICAqL1xuICBhZG1pblJlbW92ZVVzZXJGcm9tR3JvdXAoXG4gICAgYXJnczogQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRtaW5SZW1vdmVVc2VyRnJvbUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5SZXNldFVzZXJQYXNzd29yZENvbW1hbmR9XG4gICAqL1xuICBhZG1pblJlc2V0VXNlclBhc3N3b3JkKFxuICAgIGFyZ3M6IEFkbWluUmVzZXRVc2VyUGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblJlc2V0VXNlclBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5SZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZH1cbiAgICovXG4gIGFkbWluUmVzcG9uZFRvQXV0aENoYWxsZW5nZShcbiAgICBhcmdzOiBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTUZBTWV0aG9kTm90Rm91bmRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZEhpc3RvcnlQb2xpY3lWaW9sYXRpb25FcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU29mdHdhcmVUb2tlbk1GQU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5TZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmR9XG4gICAqL1xuICBhZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlKFxuICAgIGFyZ3M6IEFkbWluU2V0VXNlck1GQVByZWZlcmVuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblNldFVzZXJQYXNzd29yZENvbW1hbmR9XG4gICAqL1xuICBhZG1pblNldFVzZXJQYXNzd29yZChcbiAgICBhcmdzOiBBZG1pblNldFVzZXJQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluU2V0VXNlclBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkSGlzdG9yeVBvbGljeVZpb2xhdGlvbkVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblNldFVzZXJTZXR0aW5nc0NvbW1hbmR9XG4gICAqL1xuICBhZG1pblNldFVzZXJTZXR0aW5ncyhcbiAgICBhcmdzOiBBZG1pblNldFVzZXJTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluU2V0VXNlclNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZH1cbiAgICovXG4gIGFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2soXG4gICAgYXJnczogQWRtaW5VcGRhdGVBdXRoRXZlbnRGZWVkYmFja0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICAgIHwgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmR9XG4gICAqL1xuICBhZG1pblVwZGF0ZURldmljZVN0YXR1cyhcbiAgICBhcmdzOiBBZG1pblVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluVXBkYXRlRGV2aWNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZG1pblVwZGF0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXMoXG4gICAgYXJnczogQWRtaW5VcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkbWluVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRtaW5Vc2VyR2xvYmFsU2lnbk91dENvbW1hbmR9XG4gICAqL1xuICBhZG1pblVzZXJHbG9iYWxTaWduT3V0KFxuICAgIGFyZ3M6IEFkbWluVXNlckdsb2JhbFNpZ25PdXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZG1pblVzZXJHbG9iYWxTaWduT3V0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQXNzb2NpYXRlU29mdHdhcmVUb2tlbkNvbW1hbmR9XG4gICAqL1xuICBhc3NvY2lhdGVTb2Z0d2FyZVRva2VuKFxuICAgIGFyZ3M6IEFzc29jaWF0ZVNvZnR3YXJlVG9rZW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBc3NvY2lhdGVTb2Z0d2FyZVRva2VuQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDaGFuZ2VQYXNzd29yZENvbW1hbmR9XG4gICAqL1xuICBjaGFuZ2VQYXNzd29yZChcbiAgICBhcmdzOiBDaGFuZ2VQYXNzd29yZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENoYW5nZVBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkSGlzdG9yeVBvbGljeVZpb2xhdGlvbkVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb25maXJtRGV2aWNlQ29tbWFuZH1cbiAgICovXG4gIGNvbmZpcm1EZXZpY2UoXG4gICAgYXJnczogQ29uZmlybURldmljZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvbmZpcm1EZXZpY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VybmFtZUV4aXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbmZpcm1Gb3Jnb3RQYXNzd29yZENvbW1hbmR9XG4gICAqL1xuICBjb25maXJtRm9yZ290UGFzc3dvcmQoXG4gICAgYXJnczogQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ29uZmlybUZvcmdvdFBhc3N3b3JkQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRXhwaXJlZENvZGVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRQYXNzd29yZEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueUZhaWxlZEF0dGVtcHRzRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29uZmlybVNpZ25VcENvbW1hbmR9XG4gICAqL1xuICBjb25maXJtU2lnblVwKFxuICAgIGFyZ3M6IENvbmZpcm1TaWduVXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb25maXJtU2lnblVwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRXhwaXJlZENvZGVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlGYWlsZWRBdHRlbXB0c0Vycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVHcm91cENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVHcm91cChcbiAgICBhcmdzOiBDcmVhdGVHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBHcm91cEV4aXN0c0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlSWRlbnRpdHlQcm92aWRlcihcbiAgICBhcmdzOiBDcmVhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRHVwbGljYXRlUHJvdmlkZXJFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVSZXNvdXJjZVNlcnZlcihcbiAgICBhcmdzOiBDcmVhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVJlc291cmNlU2VydmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVVzZXJJbXBvcnRKb2JDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVXNlckltcG9ydEpvYihcbiAgICBhcmdzOiBDcmVhdGVVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVXNlckltcG9ydEpvYkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uTm90TWV0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVXNlclBvb2xDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVXNlclBvb2woXG4gICAgYXJnczogQ3JlYXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVVc2VyUG9vbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyUG9vbFRhZ2dpbmdFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVVc2VyUG9vbENsaWVudChcbiAgICBhcmdzOiBDcmVhdGVVc2VyUG9vbENsaWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkT0F1dGhGbG93RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2NvcGVEb2VzTm90RXhpc3RFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVXNlclBvb2xEb21haW4oXG4gICAgYXJnczogQ3JlYXRlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUdyb3VwKFxuICAgIGFyZ3M6IERlbGV0ZUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlSWRlbnRpdHlQcm92aWRlcihcbiAgICBhcmdzOiBEZWxldGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlUmVzb3VyY2VTZXJ2ZXIoXG4gICAgYXJnczogRGVsZXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVSZXNvdXJjZVNlcnZlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVXNlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyKFxuICAgIGFyZ3M6IERlbGV0ZVVzZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVVc2VyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVVzZXJBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IERlbGV0ZVVzZXJBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVXNlclBvb2xDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVXNlclBvb2woXG4gICAgYXJnczogRGVsZXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVVc2VyUG9vbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJJbXBvcnRJblByb2dyZXNzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVXNlclBvb2xDbGllbnQoXG4gICAgYXJnczogRGVsZXRlVXNlclBvb2xDbGllbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVVc2VyUG9vbENsaWVudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVVc2VyUG9vbERvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVVc2VyUG9vbERvbWFpbihcbiAgICBhcmdzOiBEZWxldGVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlSWRlbnRpdHlQcm92aWRlckNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUlkZW50aXR5UHJvdmlkZXIoXG4gICAgYXJnczogRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJlc291cmNlU2VydmVyQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlUmVzb3VyY2VTZXJ2ZXIoXG4gICAgYXJnczogRGVzY3JpYmVSZXNvdXJjZVNlcnZlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUmlza0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBEZXNjcmliZVJpc2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJQb29sQWRkT25Ob3RFbmFibGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVVc2VySW1wb3J0Sm9iQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlVXNlckltcG9ydEpvYihcbiAgICBhcmdzOiBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlVXNlclBvb2xDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVVc2VyUG9vbChcbiAgICBhcmdzOiBEZXNjcmliZVVzZXJQb29sQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVVc2VyUG9vbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJQb29sVGFnZ2luZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlVXNlclBvb2xDbGllbnRDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVVc2VyUG9vbENsaWVudChcbiAgICBhcmdzOiBEZXNjcmliZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVVc2VyUG9vbENsaWVudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVVc2VyUG9vbERvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVVzZXJQb29sRG9tYWluKFxuICAgIGFyZ3M6IERlc2NyaWJlVXNlclBvb2xEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEZvcmdldERldmljZUNvbW1hbmR9XG4gICAqL1xuICBmb3JnZXREZXZpY2UoXG4gICAgYXJnczogRm9yZ2V0RGV2aWNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRm9yZ2V0RGV2aWNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRSZXNldFJlcXVpcmVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRm9yZ290UGFzc3dvcmRDb21tYW5kfVxuICAgKi9cbiAgZm9yZ290UGFzc3dvcmQoXG4gICAgYXJnczogRm9yZ290UGFzc3dvcmRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBGb3Jnb3RQYXNzd29yZENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkU21zUm9sZVRydXN0UmVsYXRpb25zaGlwRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldENTVkhlYWRlckNvbW1hbmR9XG4gICAqL1xuICBnZXRDU1ZIZWFkZXIoXG4gICAgYXJnczogR2V0Q1NWSGVhZGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0Q1NWSGVhZGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXREZXZpY2VDb21tYW5kfVxuICAgKi9cbiAgZ2V0RGV2aWNlKFxuICAgIGFyZ3M6IEdldERldmljZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldERldmljZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGdldEdyb3VwKFxuICAgIGFyZ3M6IEdldEdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0R3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldElkZW50aXR5UHJvdmlkZXJCeUlkZW50aWZpZXJDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllcihcbiAgICBhcmdzOiBHZXRJZGVudGl0eVByb3ZpZGVyQnlJZGVudGlmaWVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0SWRlbnRpdHlQcm92aWRlckJ5SWRlbnRpZmllckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFNpZ25pbmdDZXJ0aWZpY2F0ZUNvbW1hbmR9XG4gICAqL1xuICBnZXRTaWduaW5nQ2VydGlmaWNhdGUoXG4gICAgYXJnczogR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0U2lnbmluZ0NlcnRpZmljYXRlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldFVJQ3VzdG9taXphdGlvbihcbiAgICBhcmdzOiBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVSUN1c3RvbWl6YXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVzZXJDb21tYW5kfVxuICAgKi9cbiAgZ2V0VXNlcihcbiAgICBhcmdzOiBHZXRVc2VyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VXNlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVXNlck5vdENvbmZpcm1lZEVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZUNvbW1hbmR9XG4gICAqL1xuICBnZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZShcbiAgICBhcmdzOiBHZXRVc2VyQXR0cmlidXRlVmVyaWZpY2F0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVzZXJBdHRyaWJ1dGVWZXJpZmljYXRpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlRGVsaXZlcnlGYWlsdXJlRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0VXNlclBvb2xNZmFDb25maWcoXG4gICAgYXJnczogR2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2xvYmFsU2lnbk91dENvbW1hbmR9XG4gICAqL1xuICBnbG9iYWxTaWduT3V0KFxuICAgIGFyZ3M6IEdsb2JhbFNpZ25PdXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHbG9iYWxTaWduT3V0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW5pdGlhdGVBdXRoQ29tbWFuZH1cbiAgICovXG4gIGluaXRpYXRlQXV0aChcbiAgICBhcmdzOiBJbml0aWF0ZUF1dGhDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbml0aWF0ZUF1dGhDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFSZXNwb25zZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERldmljZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdERldmljZXMoXG4gICAgYXJnczogTGlzdERldmljZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RGV2aWNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RHcm91cHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEdyb3VwcyhcbiAgICBhcmdzOiBMaXN0R3JvdXBzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEdyb3Vwc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdElkZW50aXR5UHJvdmlkZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RJZGVudGl0eVByb3ZpZGVycyhcbiAgICBhcmdzOiBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0SWRlbnRpdHlQcm92aWRlcnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RSZXNvdXJjZVNlcnZlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFJlc291cmNlU2VydmVycyhcbiAgICBhcmdzOiBMaXN0UmVzb3VyY2VTZXJ2ZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFJlc291cmNlU2VydmVyc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICBsaXN0VGFnc0ZvclJlc291cmNlKFxuICAgIGFyZ3M6IExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlckltcG9ydEpvYnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFVzZXJJbXBvcnRKb2JzKFxuICAgIGFyZ3M6IExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2VySW1wb3J0Sm9ic0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFVzZXJQb29sQ2xpZW50c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlclBvb2xDbGllbnRzKFxuICAgIGFyZ3M6IExpc3RVc2VyUG9vbENsaWVudHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VXNlclBvb2xDbGllbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlclBvb2xzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RVc2VyUG9vbHMoXG4gICAgYXJnczogTGlzdFVzZXJQb29sc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2VyUG9vbHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VXNlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFVzZXJzKFxuICAgIGFyZ3M6IExpc3RVc2Vyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RVc2Vyc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFVzZXJzSW5Hcm91cENvbW1hbmR9XG4gICAqL1xuICBsaXN0VXNlcnNJbkdyb3VwKFxuICAgIGFyZ3M6IExpc3RVc2Vyc0luR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VXNlcnNJbkdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXNlbmRDb25maXJtYXRpb25Db2RlQ29tbWFuZH1cbiAgICovXG4gIHJlc2VuZENvbmZpcm1hdGlvbkNvZGUoXG4gICAgYXJnczogUmVzZW5kQ29uZmlybWF0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlc2VuZENvbmZpcm1hdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXNwb25kVG9BdXRoQ2hhbGxlbmdlQ29tbWFuZH1cbiAgICovXG4gIHJlc3BvbmRUb0F1dGhDaGFsbGVuZ2UoXG4gICAgYXJnczogUmVzcG9uZFRvQXV0aENoYWxsZW5nZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlc3BvbmRUb0F1dGhDaGFsbGVuZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFsaWFzRXhpc3RzRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFeHBpcmVkQ29kZUVycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZEVtYWlsUm9sZUFjY2Vzc1BvbGljeUVycm9yXG4gICAgfCBJbnZhbGlkTGFtYmRhUmVzcG9uc2VFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFzc3dvcmRFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBJbnZhbGlkVXNlclBvb2xDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IE1GQU1ldGhvZE5vdEZvdW5kRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUGFzc3dvcmRIaXN0b3J5UG9saWN5VmlvbGF0aW9uRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNvZnR3YXJlVG9rZW5NRkFOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5leHBlY3RlZExhbWJkYUVycm9yXG4gICAgfCBVc2VyTGFtYmRhVmFsaWRhdGlvbkVycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJldm9rZVRva2VuQ29tbWFuZH1cbiAgICovXG4gIHJldm9rZVRva2VuKFxuICAgIGFyZ3M6IFJldm9rZVRva2VuQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmV2b2tlVG9rZW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmF1dGhvcml6ZWRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRUb2tlblR5cGVFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRMb2dEZWxpdmVyeUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgc2V0TG9nRGVsaXZlcnlDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldExvZ0RlbGl2ZXJ5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgc2V0Umlza0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogU2V0Umlza0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRSaXNrQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyUG9vbEFkZE9uTm90RW5hYmxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFVJQ3VzdG9taXphdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzZXRVSUN1c3RvbWl6YXRpb24oXG4gICAgYXJnczogU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VUlDdXN0b21pemF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmR9XG4gICAqL1xuICBzZXRVc2VyTUZBUHJlZmVyZW5jZShcbiAgICBhcmdzOiBTZXRVc2VyTUZBUHJlZmVyZW5jZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFVzZXJNRkFQcmVmZXJlbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kfVxuICAgKi9cbiAgc2V0VXNlclBvb2xNZmFDb25maWcoXG4gICAgYXJnczogU2V0VXNlclBvb2xNZmFDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRVc2VyUG9vbE1mYUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFVzZXJTZXR0aW5nc0NvbW1hbmR9XG4gICAqL1xuICBzZXRVc2VyU2V0dGluZ3MoXG4gICAgYXJnczogU2V0VXNlclNldHRpbmdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VXNlclNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBGb3JiaWRkZW5FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2lnblVwQ29tbWFuZH1cbiAgICovXG4gIHNpZ25VcChcbiAgICBhcmdzOiBTaWduVXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTaWduVXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVEZWxpdmVyeUZhaWx1cmVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhc3N3b3JkRXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRTbXNSb2xlVHJ1c3RSZWxhdGlvbnNoaXBFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuZXhwZWN0ZWRMYW1iZGFFcnJvclxuICAgIHwgVXNlckxhbWJkYVZhbGlkYXRpb25FcnJvclxuICAgIHwgVXNlcm5hbWVFeGlzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdGFydFVzZXJJbXBvcnRKb2JDb21tYW5kfVxuICAgKi9cbiAgc3RhcnRVc2VySW1wb3J0Sm9iKFxuICAgIGFyZ3M6IFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0YXJ0VXNlckltcG9ydEpvYkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbk5vdE1ldEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZH1cbiAgICovXG4gIHN0b3BVc2VySW1wb3J0Sm9iKFxuICAgIGFyZ3M6IFN0b3BVc2VySW1wb3J0Sm9iQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RvcFVzZXJJbXBvcnRKb2JDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25Ob3RNZXRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrKFxuICAgIGFyZ3M6IFVwZGF0ZUF1dGhFdmVudEZlZWRiYWNrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQXV0aEV2ZW50RmVlZGJhY2tDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Rm91bmRFcnJvclxuICAgIHwgVXNlclBvb2xBZGRPbk5vdEVuYWJsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVEZXZpY2VTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRGV2aWNlU3RhdHVzKFxuICAgIGFyZ3M6IFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZURldmljZVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFVzZXJQb29sQ29uZmlndXJhdGlvbkVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUdyb3VwQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUdyb3VwKFxuICAgIGFyZ3M6IFVwZGF0ZUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUlkZW50aXR5UHJvdmlkZXJDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlSWRlbnRpdHlQcm92aWRlcihcbiAgICBhcmdzOiBVcGRhdGVJZGVudGl0eVByb3ZpZGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlSWRlbnRpdHlQcm92aWRlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlUmVzb3VyY2VTZXJ2ZXIoXG4gICAgYXJnczogVXBkYXRlUmVzb3VyY2VTZXJ2ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVSZXNvdXJjZVNlcnZlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVXNlckF0dHJpYnV0ZXMoXG4gICAgYXJnczogVXBkYXRlVXNlckF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVVc2VyQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxpYXNFeGlzdHNFcnJvclxuICAgIHwgQ29kZURlbGl2ZXJ5RmFpbHVyZUVycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRXhwaXJlZENvZGVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRFbWFpbFJvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYVJlc3BvbnNlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbmV4cGVjdGVkTGFtYmRhRXJyb3JcbiAgICB8IFVzZXJMYW1iZGFWYWxpZGF0aW9uRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVXNlclBvb2xDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVXNlclBvb2woXG4gICAgYXJnczogVXBkYXRlVXNlclBvb2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVVc2VyUG9vbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uY3VycmVudE1vZGlmaWNhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkRW1haWxSb2xlQWNjZXNzUG9saWN5RXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVBY2Nlc3NQb2xpY3lFcnJvclxuICAgIHwgSW52YWxpZFNtc1JvbGVUcnVzdFJlbGF0aW9uc2hpcEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJJbXBvcnRJblByb2dyZXNzRXJyb3JcbiAgICB8IFVzZXJQb29sVGFnZ2luZ0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVVzZXJQb29sQ2xpZW50KFxuICAgIGFyZ3M6IFVwZGF0ZVVzZXJQb29sQ2xpZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlVXNlclBvb2xDbGllbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmN1cnJlbnRNb2RpZmljYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZE9BdXRoRmxvd0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTY29wZURvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVVc2VyUG9vbERvbWFpbihcbiAgICBhcmdzOiBVcGRhdGVVc2VyUG9vbERvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVVzZXJQb29sRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEF1dGhvcml6ZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlTb2Z0d2FyZVRva2VuQ29tbWFuZH1cbiAgICovXG4gIHZlcmlmeVNvZnR3YXJlVG9rZW4oXG4gICAgYXJnczogVmVyaWZ5U29mdHdhcmVUb2tlbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFZlcmlmeVNvZnR3YXJlVG9rZW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVNaXNtYXRjaEVycm9yXG4gICAgfCBFbmFibGVTb2Z0d2FyZVRva2VuTUZBRXJyb3JcbiAgICB8IEZvcmJpZGRlbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRVc2VyUG9vbENvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgTm90QXV0aG9yaXplZEVycm9yXG4gICAgfCBQYXNzd29yZFJlc2V0UmVxdWlyZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTb2Z0d2FyZVRva2VuTUZBTm90Rm91bmRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVzZXJOb3RDb25maXJtZWRFcnJvclxuICAgIHwgVXNlck5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5VXNlckF0dHJpYnV0ZUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlVc2VyQXR0cmlidXRlKFxuICAgIGFyZ3M6IFZlcmlmeVVzZXJBdHRyaWJ1dGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBWZXJpZnlVc2VyQXR0cmlidXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbGlhc0V4aXN0c0Vycm9yXG4gICAgfCBDb2RlTWlzbWF0Y2hFcnJvclxuICAgIHwgRXhwaXJlZENvZGVFcnJvclxuICAgIHwgRm9yYmlkZGVuRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBOb3RBdXRob3JpemVkRXJyb3JcbiAgICB8IFBhc3N3b3JkUmVzZXRSZXF1aXJlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVc2VyTm90Q29uZmlybWVkRXJyb3JcbiAgICB8IFVzZXJOb3RGb3VuZEVycm9yXG4gID47XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1jb2duaXRvLWlkZW50aXR5LXByb3ZpZGVyL0NvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZVwiLFxuKTxDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UsIENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZSQ+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhDb2duaXRvSWRlbnRpdHlQcm92aWRlckNsaWVudEluc3RhbmNlKTtcblxuICByZXR1cm4gUmVjb3JkLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zKSA9PlxuICAgICAgRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICB0cnk6IChhYm9ydFNpZ25hbCkgPT5cbiAgICAgICAgICBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zID8/IHt9KSxcbiAgICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIH0pLFxuICAgICAgICBjYXRjaDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPENvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlJDtcbn0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgQmFzZUNvZ25pdG9JZGVudGl0eVByb3ZpZGVyU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UsXG4gIG1ha2VDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlTGF5ZXIgPVxuICBCYXNlQ29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlTGF5ZXIucGlwZShcbiAgICBMYXllci5wcm92aWRlKENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0Q29nbml0b0lkZW50aXR5UHJvdmlkZXJTZXJ2aWNlTGF5ZXIgPVxuICBDb2duaXRvSWRlbnRpdHlQcm92aWRlclNlcnZpY2VMYXllci5waXBlKFxuICAgIExheWVyLnByb3ZpZGUoRGVmYXVsdENvZ25pdG9JZGVudGl0eVByb3ZpZGVyQ2xpZW50Q29uZmlnTGF5ZXIpLFxuICApO1xuIl19
|