@horietakehiro/aws-cdk-utul 0.10.2 → 0.11.3
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/lib/stack-manager.d.ts +41 -0
- package/lib/stack-manager.js +132 -0
- package/lib/types/cfn-resource-types/aws-amazonmq-configuration.d.ts +35 -5
- package/lib/types/cfn-resource-types/aws-amazonmq-configuration.js +1 -1
- package/lib/types/cfn-resource-types/aws-apigateway-vpclink.d.ts +0 -9
- package/lib/types/cfn-resource-types/aws-apigateway-vpclink.js +1 -1
- package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.js +1 -1
- package/lib/types/cfn-resource-types/aws-appconfig-deploymentstrategy.d.ts +56 -8
- package/lib/types/cfn-resource-types/aws-appconfig-deploymentstrategy.js +1 -1
- package/lib/types/cfn-resource-types/aws-appsync-datasource.d.ts +151 -31
- package/lib/types/cfn-resource-types/aws-appsync-datasource.js +1 -1
- package/lib/types/cfn-resource-types/aws-appsync-graphqlapi.d.ts +225 -36
- package/lib/types/cfn-resource-types/aws-appsync-graphqlapi.js +1 -1
- package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.d.ts +6 -1
- package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-b2bi-capability.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-b2bi-capability.js +1 -1
- package/lib/types/cfn-resource-types/aws-b2bi-partnership.d.ts +37 -1
- package/lib/types/cfn-resource-types/aws-b2bi-partnership.js +1 -1
- package/lib/types/cfn-resource-types/aws-b2bi-transformer.d.ts +41 -4
- package/lib/types/cfn-resource-types/aws-b2bi-transformer.js +1 -1
- package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.d.ts +28 -0
- package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.js +3 -0
- package/lib/types/cfn-resource-types/aws-bedrock-agent.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-agent.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-flow.d.ts +17 -6
- package/lib/types/cfn-resource-types/aws-bedrock-flow.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-flowversion.d.ts +17 -6
- package/lib/types/cfn-resource-types/aws-bedrock-flowversion.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-prompt.d.ts +3 -7
- package/lib/types/cfn-resource-types/aws-bedrock-prompt.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-promptversion.d.ts +4 -8
- package/lib/types/cfn-resource-types/aws-bedrock-promptversion.js +1 -1
- package/lib/types/cfn-resource-types/aws-cloudformation-customresource.d.ts +2 -1
- package/lib/types/cfn-resource-types/aws-cloudformation-customresource.js +1 -1
- package/lib/types/cfn-resource-types/aws-codepipeline-pipeline.d.ts +23 -2
- package/lib/types/cfn-resource-types/aws-codepipeline-pipeline.js +1 -1
- package/lib/types/cfn-resource-types/aws-cognito-userpool.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-cognito-userpool.js +1 -1
- package/lib/types/cfn-resource-types/aws-cognito-userpoolidentityprovider.d.ts +15 -8
- package/lib/types/cfn-resource-types/aws-cognito-userpoolidentityprovider.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-contactflow.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-connect-contactflow.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.d.ts +18 -18
- package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.js +1 -1
- package/lib/types/cfn-resource-types/aws-datasync-task.d.ts +96 -96
- package/lib/types/cfn-resource-types/aws-datasync-task.js +1 -1
- package/lib/types/cfn-resource-types/aws-dms-datamigration.d.ts +90 -0
- package/lib/types/cfn-resource-types/aws-dms-datamigration.js +3 -0
- package/lib/types/cfn-resource-types/aws-dms-replicationinstance.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-dms-replicationinstance.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-capacityreservation.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-ec2-capacityreservation.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-eip.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-ec2-eip.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-natgateway.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-natgateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgateway.d.ts +6 -5
- package/lib/types/cfn-resource-types/aws-ec2-transitgateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayattachment.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayattachment.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayvpcattachment.d.ts +14 -10
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayvpcattachment.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpc.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpc.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.d.ts +2 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpointconnectionnotification.d.ts +8 -8
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpointconnectionnotification.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.d.ts +213 -3
- package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-service.d.ts +10 -1
- package/lib/types/cfn-resource-types/aws-ecs-service.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-taskset.d.ts +57 -51
- package/lib/types/cfn-resource-types/aws-ecs-taskset.js +1 -1
- package/lib/types/cfn-resource-types/aws-eks-cluster.d.ts +11 -1
- package/lib/types/cfn-resource-types/aws-eks-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticache-globalreplicationgroup.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-elasticache-globalreplicationgroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.d.ts +79 -63
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.d.ts +65 -63
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.js +1 -1
- package/lib/types/cfn-resource-types/aws-emr-cluster.d.ts +35 -14
- package/lib/types/cfn-resource-types/aws-emr-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-emr-instancefleetconfig.d.ts +21 -0
- package/lib/types/cfn-resource-types/aws-emr-instancefleetconfig.js +1 -1
- package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.d.ts +81 -81
- package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.js +1 -1
- package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.d.ts +19 -0
- package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-crawler.d.ts +179 -1
- package/lib/types/cfn-resource-types/aws-glue-crawler.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-job.d.ts +96 -6
- package/lib/types/cfn-resource-types/aws-glue-job.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-schema.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-glue-schema.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-usageprofile.d.ts +64 -0
- package/lib/types/cfn-resource-types/aws-glue-usageprofile.js +3 -0
- package/lib/types/cfn-resource-types/aws-iam-policy.d.ts +4 -1
- package/lib/types/cfn-resource-types/aws-iam-policy.js +1 -1
- package/lib/types/cfn-resource-types/aws-iam-role.d.ts +3 -2
- package/lib/types/cfn-resource-types/aws-iam-role.js +1 -1
- package/lib/types/cfn-resource-types/aws-imagebuilder-component.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-imagebuilder-component.js +1 -1
- package/lib/types/cfn-resource-types/aws-imagebuilder-infrastructureconfiguration.d.ts +22 -0
- package/lib/types/cfn-resource-types/aws-imagebuilder-infrastructureconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.d.ts +6 -0
- package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-iotevents-alarmmodel.d.ts +195 -79
- package/lib/types/cfn-resource-types/aws-iotevents-alarmmodel.js +1 -1
- package/lib/types/cfn-resource-types/aws-iotevents-detectormodel.d.ts +177 -85
- package/lib/types/cfn-resource-types/aws-iotevents-detectormodel.js +1 -1
- package/lib/types/cfn-resource-types/aws-iotevents-input.d.ts +9 -11
- package/lib/types/cfn-resource-types/aws-iotevents-input.js +1 -1
- package/lib/types/cfn-resource-types/aws-ivs-encoderconfiguration.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-ivs-encoderconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-kinesis-resourcepolicy.d.ts +17 -0
- package/lib/types/cfn-resource-types/aws-kinesis-resourcepolicy.js +3 -0
- package/lib/types/cfn-resource-types/aws-lakeformation-principalpermissions.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-lakeformation-principalpermissions.js +1 -1
- package/lib/types/cfn-resource-types/aws-lakeformation-tag.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-lakeformation-tag.js +1 -1
- package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.d.ts +115 -108
- package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.js +1 -1
- package/lib/types/cfn-resource-types/aws-medialive-channel.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-medialive-channel.js +1 -1
- package/lib/types/cfn-resource-types/aws-memorydb-cluster.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-memorydb-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.d.ts +3 -0
- package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.js +1 -1
- package/lib/types/cfn-resource-types/aws-organizations-policy.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-organizations-policy.js +1 -1
- package/lib/types/cfn-resource-types/aws-qbusiness-webexperience.d.ts +6 -0
- package/lib/types/cfn-resource-types/aws-qbusiness-webexperience.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-analysis.d.ts +13 -0
- package/lib/types/cfn-resource-types/aws-quicksight-analysis.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-dashboard.d.ts +13 -0
- package/lib/types/cfn-resource-types/aws-quicksight-dashboard.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-dataset.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-quicksight-dataset.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-datasource.d.ts +247 -242
- package/lib/types/cfn-resource-types/aws-quicksight-datasource.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-folder.d.ts +79 -0
- package/lib/types/cfn-resource-types/aws-quicksight-folder.js +3 -0
- package/lib/types/cfn-resource-types/aws-quicksight-template.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-quicksight-template.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.d.ts +366 -366
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.d.ts +1 -4
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-globalcluster.d.ts +19 -0
- package/lib/types/cfn-resource-types/aws-rds-globalcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-redshift-integration.d.ts +61 -0
- package/lib/types/cfn-resource-types/aws-redshift-integration.js +3 -0
- package/lib/types/cfn-resource-types/aws-refactorspaces-environment.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-refactorspaces-environment.js +1 -1
- package/lib/types/cfn-resource-types/aws-route53profiles-profileassociation.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-route53profiles-profileassociation.js +1 -1
- package/lib/types/cfn-resource-types/aws-route53resolver-resolverrule.d.ts +4 -4
- package/lib/types/cfn-resource-types/aws-route53resolver-resolverrule.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +599 -591
- package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3express-directorybucket.d.ts +34 -3
- package/lib/types/cfn-resource-types/aws-s3express-directorybucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-domain.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-sagemaker-domain.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-endpoint.d.ts +137 -20
- package/lib/types/cfn-resource-types/aws-sagemaker-endpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-secretsmanager-secret.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-secretsmanager-secret.js +1 -1
- package/lib/types/cfn-resource-types/aws-securityhub-automationrule.d.ts +4 -4
- package/lib/types/cfn-resource-types/aws-securityhub-automationrule.js +1 -1
- package/lib/types/cfn-resource-types/aws-securityhub-findingaggregator.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-securityhub-findingaggregator.js +1 -1
- package/lib/types/cfn-resource-types/aws-ses-mailmanagerruleset.d.ts +4 -1
- package/lib/types/cfn-resource-types/aws-ses-mailmanagerruleset.js +1 -1
- package/lib/types/cfn-resource-types/aws-sns-topic.d.ts +2 -6
- package/lib/types/cfn-resource-types/aws-sns-topic.js +1 -1
- package/lib/types/cfn-resource-types/aws-sqs-queue.d.ts +12 -12
- package/lib/types/cfn-resource-types/aws-sqs-queue.js +1 -1
- package/lib/types/cfn-resource-types/aws-sqs-queuepolicy.d.ts +1 -3
- package/lib/types/cfn-resource-types/aws-sqs-queuepolicy.js +1 -1
- package/lib/types/cfn-resource-types/aws-ssmquicksetup-configurationmanager.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ssmquicksetup-configurationmanager.js +1 -1
- package/lib/types/cfn-resource-types/aws-transfer-server.d.ts +70 -36
- package/lib/types/cfn-resource-types/aws-transfer-server.js +1 -1
- package/lib/types/cfn-resource-types/aws-wisdom-aiprompt.d.ts +34 -0
- package/lib/types/cfn-resource-types/aws-wisdom-aiprompt.js +3 -0
- package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.js +1 -1
- package/lib/types/cfn-resource-types/aws-workspacesweb-identityprovider.d.ts +9 -0
- package/lib/types/cfn-resource-types/aws-workspacesweb-identityprovider.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +14 -0
- package/lib/types/cfn-resource-types.js +40 -26
- package/package.json +11 -7
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXJkcy1kYmNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtcmRzLWRiY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXIgb3IgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyBhbiBBdXJvcmEgREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmEuQ3JlYXRlSW5zdGFuY2UuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGEgTXVsdGktQVogREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhIE11bHRpLUFaIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9jcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgIFlvdSBjYW4gb25seSBjcmVhdGUgdGhpcyByZXNvdXJjZSBpbiBBV1MgUmVnaW9ucyB3aGVyZSBBbWF6b24gQXVyb3JhIG9yIE11bHRpLUFaIERCIGNsdXN0ZXJzIGFyZSBzdXBwb3J0ZWQuXG4gKiAgICAqVXBkYXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFdoZW4gcHJvcGVydGllcyBsYWJlbGVkIFwiKlVwZGF0ZSByZXF1aXJlczoqIFtSZXBsYWNlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXJlcGxhY2VtZW50KVwiIGFyZSB1cGRhdGVkLCBBV1MgQ2xvdWRGb3JtYXRpb24gZmlyc3QgY3JlYXRlcyBhIHJlcGxhY2VtZW50IERCIGNsdXN0ZXIsIHRoZW4gY2hhbmdlcyByZWZlcmVuY2VzIGZyb20gb3RoZXIgZGVwZW5kZW50IHJlc291cmNlcyB0byBwb2ludCB0byB0aGUgcmVwbGFjZW1lbnQgREIgY2x1c3RlciwgYW5kIGZpbmFsbHkgZGVsZXRlcyB0aGUgb2xkIERCIGNsdXN0ZXIuXG4gKiAgIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBkYXRhYmFzZSBiZWZvcmUgdXBkYXRpbmcgdGhlIHN0YWNrLiBJZiB5b3UgZG9uJ3QsIHlvdSBsb3NlIHRoZSBkYXRhIHdoZW4gQVdTIENsb3VkRm9ybWF0aW9uIHJlcGxhY2VzIHlvdXIgREIgY2x1c3Rlci4gVG8gcHJlc2VydmUgeW91ciBkYXRhLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOlxuICogICAxLiAgRGVhY3RpdmF0ZSBhbnkgYXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHRoZSBEQiBjbHVzdGVyIHNvIHRoYXQgdGhlcmUncyBubyBhY3Rpdml0eSBvbiB0aGUgREIgaW5zdGFuY2UuXG4gKiAgIDEuICBDcmVhdGUgYSBzbmFwc2hvdCBvZiB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ3JlYXRpbmcgYSBEQiBjbHVzdGVyIHNuYXBzaG90XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9DcmVhdGVTbmFwc2hvdENsdXN0ZXIuaHRtbCkuXG4gKiAgIDEuICBJZiB5b3Ugd2FudCB0byByZXN0b3JlIHlvdXIgREIgY2x1c3RlciB1c2luZyBhIERCIGNsdXN0ZXIgc25hcHNob3QsIG1vZGlmeSB0aGUgdXBkYXRlZCB0ZW1wbGF0ZSB3aXRoIHlvdXIgREIgY2x1c3RlciBjaGFuZ2VzIGFuZCBhZGQgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgd2l0aCB0aGUgSUQgb2YgdGhlIERCIGNsdXN0ZXIgc25hcHNob3QgdGhhdCB5b3Ugd2FudCB0byB1c2UuXG4gKiAgQWZ0ZXIgeW91IHJlc3RvcmUgYSBEQiBjbHVzdGVyIHdpdGggYSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBzYW1lIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgZm9yIGFueSBmdXR1cmUgdXBkYXRlcyB0byB0aGUgREIgY2x1c3Rlci4gV2hlbiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5IGZvciBhbiB1cGRhdGUsIHRoZSBEQiBjbHVzdGVyIGlzIG5vdCByZXN0b3JlZCBmcm9tIHRoZSBEQiBjbHVzdGVyIHNuYXBzaG90IGFnYWluLCBhbmQgdGhlIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGlzIG5vdCBjaGFuZ2VkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgYW4gZW1wdHkgREIgY2x1c3RlciBpcyBjcmVhdGVkLCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC4gSWYgeW91IHNwZWNpZnkgYSBwcm9wZXJ0eSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBzbmFwc2hvdCByZXN0b3JlIHByb3BlcnR5LCBhIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGZyb20gdGhlIHNwZWNpZmllZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC5cbiAqICAgMS4gIFVwZGF0ZSB0aGUgc3RhY2suXG4gKiAgIFxuICogICBDdXJyZW50bHksIHdoZW4geW91IGFyZSB1cGRhdGluZyB0aGUgc3RhY2sgZm9yIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIERCIGNsdXN0ZXIsIHlvdSBjYW4ndCBpbmNsdWRlIGNoYW5nZXMgdG8gYW55IG90aGVyIHByb3BlcnRpZXMgd2hlbiB5b3Ugc3BlY2lmeSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYFByZWZlcnJlZEJhY2t1cFdpbmRvd2BgLCBgYFByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93YGAsIGFuZCBgYFBvcnRgYC4gVGhpcyBsaW1pdGF0aW9uIGRvZXNuJ3QgYXBwbHkgdG8gcHJvdmlzaW9uZWQgREIgY2x1c3RlcnMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgb3RoZXIgcHJvcGVydGllcyBvZiB0aGlzIHJlc291cmNlLCBzZWUgYGBNb2RpZnlEQkNsdXN0ZXJgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgc3RhY2tzLCBzZWUgW0Nsb3VkRm9ybWF0aW9uIFN0YWNrcyBVcGRhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1jZm4tdXBkYXRpbmctc3RhY2tzLmh0bWwpLlxuICogICAqRGVsZXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFRoZSBkZWZhdWx0IGBgRGVsZXRpb25Qb2xpY3lgYCBmb3IgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2VzIGlzIGBgU25hcHNob3RgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHJlc291cmNlcywgc2VlIFtEZWxldGlvblBvbGljeSBBdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtZGVsZXRpb25wb2xpY3kuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19SRFNfREJDTFVTVEVSIHtcbkVuZHBvaW50PzogRW5kcG9pbnRcblJlYWRFbmRwb2ludD86IFJlYWRFbmRwb2ludFxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzIChHaUIpIHRvIGFsbG9jYXRlIHRvIGVhY2ggREIgaW5zdGFuY2UgaW4gdGhlIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICovXG5BbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyXG4vKipcbiAqIFByb3ZpZGVzIGEgbGlzdCBvZiB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIERCIGNsdXN0ZXIuIElBTSByb2xlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBEQiBjbHVzdGVyIGdyYW50IHBlcm1pc3Npb24gZm9yIHRoZSBEQiBjbHVzdGVyIHRvIGFjY2VzcyBvdGhlciBBbWF6b24gV2ViIFNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Bc3NvY2lhdGVkUm9sZXM/OiBEQkNsdXN0ZXJSb2xlW11cbi8qKlxuICogQSBsaXN0IG9mIEF2YWlsYWJpbGl0eSBab25lcyAoQVpzKSB3aGVyZSBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIgY2FuIGJlIGNyZWF0ZWQuIEZvciBpbmZvcm1hdGlvbiBvbiBBV1MgUmVnaW9ucyBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzLCBzZWUgW0Nob29zaW5nIHRoZSBSZWdpb25zIGFuZCBBdmFpbGFiaWxpdHkgWm9uZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9Db25jZXB0cy5SZWdpb25zQW5kQXZhaWxhYmlsaXR5Wm9uZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW11cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgbWlub3IgZW5naW5lIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gdGhlIERCIGNsdXN0ZXIgZHVyaW5nIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuIEJ5IGRlZmF1bHQsIG1pbm9yIGVuZ2luZSB1cGdyYWRlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuQXV0b01pbm9yVmVyc2lvblVwZ3JhZGU/OiBib29sZWFuXG4vKipcbiAqIFRoZSB0YXJnZXQgYmFja3RyYWNrIHdpbmRvdywgaW4gc2Vjb25kcy4gVG8gZGlzYWJsZSBiYWNrdHJhY2tpbmcsIHNldCB0aGlzIHZhbHVlIHRvIGBgMGBgLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBNeVNRTCBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogYGAwYGAgXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIElmIHNwZWNpZmllZCwgdGhpcyB2YWx1ZSBtdXN0IGJlIHNldCB0byBhIG51bWJlciBmcm9tIDAgdG8gMjU5LDIwMCAoNzIgaG91cnMpLlxuICovXG5CYWNrdHJhY2tXaW5kb3c/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIGZvciB3aGljaCBhdXRvbWF0ZWQgYmFja3VwcyBhcmUgcmV0YWluZWQuXG4gKiAgRGVmYXVsdDogMVxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IGJlIGEgdmFsdWUgZnJvbSAxIHRvIDM1XG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5CYWNrdXBSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIGNvcHkgYWxsIHRhZ3MgZnJvbSB0aGUgREIgY2x1c3RlciB0byBzbmFwc2hvdHMgb2YgdGhlIERCIGNsdXN0ZXIuIFRoZSBkZWZhdWx0IGlzIG5vdCB0byBjb3B5IHRoZW0uXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkNvcHlUYWdzVG9TbmFwc2hvdD86IGJvb2xlYW5cbi8qKlxuICogVGhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZS4gSWYgeW91IGRvbid0IHByb3ZpZGUgYSBuYW1lLCB0aGVuIEFtYXpvbiBSRFMgd29uJ3QgY3JlYXRlIGEgZGF0YWJhc2UgaW4gdGhpcyBEQiBjbHVzdGVyLiBGb3IgbmFtaW5nIGNvbnN0cmFpbnRzLCBzZWUgW05hbWluZyBDb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5Db25zdHJhaW50cykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGF0YWJhc2VOYW1lPzogc3RyaW5nXG5EQkNsdXN0ZXJBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbXB1dGUgYW5kIG1lbW9yeSBjYXBhY2l0eSBvZiBlYWNoIERCIGluc3RhbmNlIGluIHRoZSBNdWx0aS1BWiBEQiBjbHVzdGVyLCBmb3IgZXhhbXBsZSBgYGRiLm02Z2QueGxhcmdlYGAuIE5vdCBhbGwgREIgaW5zdGFuY2UgY2xhc3NlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBBV1MtUmVnaW9ucywgb3IgZm9yIGFsbCBkYXRhYmFzZSBlbmdpbmVzLlxuICogIEZvciB0aGUgZnVsbCBsaXN0IG9mIERCIGluc3RhbmNlIGNsYXNzZXMgYW5kIGF2YWlsYWJpbGl0eSBmb3IgeW91ciBlbmdpbmUsIHNlZSBbREIgaW5zdGFuY2UgY2xhc3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9Db25jZXB0cy5EQkluc3RhbmNlQ2xhc3MuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuREJDbHVzdGVySW5zdGFuY2VDbGFzcz86IHN0cmluZ1xuREJDbHVzdGVyUmVzb3VyY2VJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgcGFyYW1ldGVyIGdyb3VwIHRvIGFwcGx5IHRvIGFsbCBpbnN0YW5jZXMgb2YgdGhlIERCIGNsdXN0ZXIuXG4gKiAgIFdoZW4geW91IGFwcGx5IGEgcGFyYW1ldGVyIGdyb3VwIHVzaW5nIHRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIsIHRoZSBEQiBjbHVzdGVyIGlzbid0IHJlYm9vdGVkIGF1dG9tYXRpY2FsbHkuIEFsc28sIHBhcmFtZXRlciBjaGFuZ2VzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHJhdGhlciB0aGFuIGR1cmluZyB0aGUgbmV4dCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKiAgIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogVGhlIGV4aXN0aW5nIG5hbWUgc2V0dGluZ1xuICogIENvbnN0cmFpbnRzOlxuICogICArICBUaGUgREIgcGFyYW1ldGVyIGdyb3VwIG11c3QgYmUgaW4gdGhlIHNhbWUgREIgcGFyYW1ldGVyIGdyb3VwIGZhbWlseSBhcyB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgICsgIFRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIgaXMgdmFsaWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGBBbGxvd01ham9yVmVyc2lvblVwZ3JhZGVgYCBwYXJhbWV0ZXIgZm9yIGEgbWFqb3IgdmVyc2lvbiB1cGdyYWRlIG9ubHkuXG4gKi9cbkRCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWU/OiBzdHJpbmdcbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cbkRCU3lzdGVtSWQ/OiBzdHJpbmdcbi8qKlxuICogSWYgeW91IGFyZSBjb25maWd1cmluZyBhbiBBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIgYW5kIHdhbnQgeW91ciBBdXJvcmEgREIgY2x1c3RlciB0byBiZSBhIHNlY29uZGFyeSBtZW1iZXIgaW4gdGhlIGdsb2JhbCBkYXRhYmFzZSBjbHVzdGVyLCBzcGVjaWZ5IHRoZSBnbG9iYWwgY2x1c3RlciBJRCBvZiB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIuIFRvIGRlZmluZSB0aGUgcHJpbWFyeSBkYXRhYmFzZSBjbHVzdGVyIG9mIHRoZSBnbG9iYWwgY2x1c3RlciwgdXNlIHRoZSBbQVdTOjpSRFM6Okdsb2JhbENsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yZHMtZ2xvYmFsY2x1c3Rlci5odG1sKSByZXNvdXJjZS4gXG4gKiAgIElmIHlvdSBhcmVuJ3QgY29uZmlndXJpbmcgYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3RlciwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBcbiAqICAgVG8gcmVtb3ZlIHRoZSBEQiBjbHVzdGVyIGZyb20gYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3Rlciwgc3BlY2lmeSBhbiBlbXB0eSB2YWx1ZSBmb3IgdGhlIGBgR2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eS5cbiAqICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEF1cm9yYSBnbG9iYWwgZGF0YWJhc2VzLCBzZWUgW1dvcmtpbmcgd2l0aCBBbWF6b24gQXVyb3JhIEdsb2JhbCBEYXRhYmFzZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtZ2xvYmFsLWRhdGFiYXNlLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBEQiBjbHVzdGVyIGlkZW50aWZpZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHN0b3JlZCBhcyBhIGxvd2VyY2FzZSBzdHJpbmcuXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgY29udGFpbiBmcm9tIDEgdG8gNjMgbGV0dGVycywgbnVtYmVycywgb3IgaHlwaGVucy5cbiAqICAgKyAgRmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYSBsZXR0ZXIuXG4gKiAgICsgIENhbid0IGVuZCB3aXRoIGEgaHlwaGVuIG9yIGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnMuXG4gKiAgIFxuICogIEV4YW1wbGU6IGBgbXktY2x1c3RlcjFgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgY2x1c3RlciBwYXJhbWV0ZXIgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLlxuICogICBJZiB5b3UgYXBwbHkgYSBwYXJhbWV0ZXIgZ3JvdXAgdG8gYW4gZXhpc3RpbmcgREIgY2x1c3RlciwgdGhlbiBpdHMgREIgaW5zdGFuY2VzIG1pZ2h0IG5lZWQgdG8gcmVib290LiBUaGlzIGNhbiByZXN1bHQgaW4gYW4gb3V0YWdlIHdoaWxlIHRoZSBEQiBpbnN0YW5jZXMgYXJlIHJlYm9vdGluZy5cbiAqICBJZiB5b3UgYXBwbHkgYSBjaGFuZ2UgdG8gcGFyYW1ldGVyIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCBhIHN0b3BwZWQgREIgY2x1c3RlciwgdGhlbiB0aGUgdXBkYXRlIHN0YWNrIHdhaXRzIHVudGlsIHRoZSBEQiBjbHVzdGVyIGlzIHN0YXJ0ZWQuXG4gKiAgIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgREIgY2x1c3RlciBwYXJhbWV0ZXIgZ3JvdXAgbmFtZXMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1jbHVzdGVyLXBhcmFtZXRlci1ncm91cHMgLS1xdWVyeSBcIkRCQ2x1c3RlclBhcmFtZXRlckdyb3Vwc1tdLkRCQ2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZVwiIC0tb3V0cHV0IHRleHRgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgREIgc3VibmV0IGdyb3VwIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLiBcbiAqICBJZiB5b3UgYXJlIHJlc3RvcmluZyBhIERCIGNsdXN0ZXIgdG8gYSBwb2ludCBpbiB0aW1lIHdpdGggYGBSZXN0b3JlVHlwZWBgIHNldCB0byBgYGNvcHktb24td3JpdGVgYCwgYW5kIGRvbid0IHNwZWNpZnkgYSBEQiBzdWJuZXQgZ3JvdXAgbmFtZSwgdGhlbiB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aXRoIGEgZGVmYXVsdCBEQiBzdWJuZXQgZ3JvdXAuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkRCU3VibmV0R3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgREIgY2x1c3RlciBoYXMgZGVsZXRpb24gcHJvdGVjdGlvbiBlbmFibGVkLiBUaGUgZGF0YWJhc2UgY2FuJ3QgYmUgZGVsZXRlZCB3aGVuIGRlbGV0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZC4gQnkgZGVmYXVsdCwgZGVsZXRpb24gcHJvdGVjdGlvbiBpcyBkaXNhYmxlZC5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGRpcmVjdG9yeSBJRCBvZiB0aGUgQWN0aXZlIERpcmVjdG9yeSB0byBjcmVhdGUgdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIEFtYXpvbiBBdXJvcmEgREIgY2x1c3RlcnMsIEFtYXpvbiBSRFMgY2FuIHVzZSBLZXJiZXJvcyBhdXRoZW50aWNhdGlvbiB0byBhdXRoZW50aWNhdGUgdXNlcnMgdGhhdCBjb25uZWN0IHRvIHRoZSBEQiBjbHVzdGVyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUva2VyYmVyb3MtYXV0aGVudGljYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRG9tYWluPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUgdG8gdXNlIHdoZW4gbWFraW5nIEFQSSBjYWxscyB0byB0aGUgRGlyZWN0b3J5IFNlcnZpY2UuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5Eb21haW5JQU1Sb2xlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbGlzdCBvZiBsb2cgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGV4cG9ydGluZyB0byBDbG91ZFdhdGNoIExvZ3MuIFRoZSB2YWx1ZXMgaW4gdGhlIGxpc3QgZGVwZW5kIG9uIHRoZSBEQiBlbmdpbmUgYmVpbmcgdXNlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHVibGlzaGluZyBEYXRhYmFzZSBMb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX0xvZ0FjY2Vzcy5odG1sI1VTRVJfTG9nQWNjZXNzLlByb2NlZHVyYWwuVXBsb2FkdG9DbG91ZFdhdGNoKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgICpBdXJvcmEgTXlTUUwqIFxuICogIFZhbGlkIHZhbHVlczogYGBhdWRpdGBgLCBgYGVycm9yYGAsIGBgZ2VuZXJhbGBgLCBgYHNsb3dxdWVyeWBgIFxuICogICAqQXVyb3JhIFBvc3RncmVTUUwqIFxuICogIFZhbGlkIHZhbHVlczogYGBwb3N0Z3Jlc3FsYGAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkVuYWJsZUNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz86IHN0cmluZ1tdXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGlzIERCIGNsdXN0ZXIgdG8gZm9yd2FyZCB3cml0ZSBvcGVyYXRpb25zIHRvIHRoZSBwcmltYXJ5IGNsdXN0ZXIgb2YgYSBnbG9iYWwgY2x1c3RlciAoQXVyb3JhIGdsb2JhbCBkYXRhYmFzZSkuIEJ5IGRlZmF1bHQsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIG9uIEF1cm9yYSBEQiBjbHVzdGVycyB0aGF0IGFyZSBzZWNvbmRhcnkgY2x1c3RlcnMgaW4gYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZS5cbiAqICBZb3UgY2FuIHNldCB0aGlzIHZhbHVlIG9ubHkgb24gQXVyb3JhIERCIGNsdXN0ZXJzIHRoYXQgYXJlIG1lbWJlcnMgb2YgYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZS4gV2l0aCB0aGlzIHBhcmFtZXRlciBlbmFibGVkLCBhIHNlY29uZGFyeSBjbHVzdGVyIGNhbiBmb3J3YXJkIHdyaXRlcyB0byB0aGUgY3VycmVudCBwcmltYXJ5IGNsdXN0ZXIsIGFuZCB0aGUgcmVzdWx0aW5nIGNoYW5nZXMgYXJlIHJlcGxpY2F0ZWQgYmFjayB0byB0aGlzIGNsdXN0ZXIuIEZvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIG9mIGFuIEF1cm9yYSBnbG9iYWwgZGF0YWJhc2UsIHRoaXMgdmFsdWUgaXMgdXNlZCBpbW1lZGlhdGVseSBpZiB0aGUgcHJpbWFyeSBpcyBkZW1vdGVkIGJ5IGEgZ2xvYmFsIGNsdXN0ZXIgQVBJIG9wZXJhdGlvbiwgYnV0IGl0IGRvZXMgbm90aGluZyB1bnRpbCB0aGVuLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBIVFRQIGVuZHBvaW50IGZvciB0aGUgREIgY2x1c3Rlci4gQnkgZGVmYXVsdCwgdGhlIEhUVFAgZW5kcG9pbnQgaXNuJ3QgZW5hYmxlZC5cbiAqICBXaGVuIGVuYWJsZWQsIHRoZSBIVFRQIGVuZHBvaW50IHByb3ZpZGVzIGEgY29ubmVjdGlvbmxlc3Mgd2ViIHNlcnZpY2UgQVBJIChSRFMgRGF0YSBBUEkpIGZvciBydW5uaW5nIFNRTCBxdWVyaWVzIG9uIHRoZSBEQiBjbHVzdGVyLiBZb3UgY2FuIGFsc28gcXVlcnkgeW91ciBkYXRhYmFzZSBmcm9tIGluc2lkZSB0aGUgUkRTIGNvbnNvbGUgd2l0aCB0aGUgUkRTIHF1ZXJ5IGVkaXRvci5cbiAqICBSRFMgRGF0YSBBUEkgaXMgc3VwcG9ydGVkIHdpdGggdGhlIGZvbGxvd2luZyBEQiBjbHVzdGVyczpcbiAqICAgKyAgQXVyb3JhIFBvc3RncmVTUUwgU2VydmVybGVzcyB2MiBhbmQgcHJvdmlzaW9uZWRcbiAqICAgKyAgQXVyb3JhIFBvc3RncmVTUUwgYW5kIEF1cm9yYSBNeVNRTCBTZXJ2ZXJsZXNzIHYxXG4gKiAgIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIFJEUyBEYXRhIEFQSV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2RhdGEtYXBpLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5FbmFibGVIdHRwRW5kcG9pbnQ/OiBib29sZWFuXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgbWFwcGluZyBvZiBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIGFjY291bnRzIHRvIGRhdGFiYXNlIGFjY291bnRzLiBCeSBkZWZhdWx0LCBtYXBwaW5nIGlzIGRpc2FibGVkLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0lBTSBEYXRhYmFzZSBBdXRoZW50aWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL1VzaW5nV2l0aFJEUy5JQU1EQkF1dGguaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuYWJsZUlBTURhdGFiYXNlQXV0aGVudGljYXRpb24/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHJlYWQgcmVwbGljYXMgY2FuIGZvcndhcmQgd3JpdGUgb3BlcmF0aW9ucyB0byB0aGUgd3JpdGVyIERCIGluc3RhbmNlIGluIHRoZSBEQiBjbHVzdGVyLiBCeSBkZWZhdWx0LCB3cml0ZSBvcGVyYXRpb25zIGFyZW4ndCBhbGxvd2VkIG9uIHJlYWRlciBEQiBpbnN0YW5jZXMuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5FbmFibGVMb2NhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGVuZ2luZSB0byBiZSB1c2VkIGZvciB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgVmFsdWVzOlxuICogICArICAgYGBhdXJvcmEtbXlzcWxgYCBcbiAqICAgKyAgIGBgYXVyb3JhLXBvc3RncmVzcWxgYCBcbiAqICAgKyAgIGBgbXlzcWxgYCBcbiAqICAgKyAgIGBgcG9zdGdyZXNgYCBcbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkVuZ2luZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbGlmZSBjeWNsZSB0eXBlIGZvciB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgc2V0IHRvIGBgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnRgYCwgd2hpY2ggZW5yb2xscyB5b3VyIERCIGNsdXN0ZXIgaW50byBBbWF6b24gUkRTIEV4dGVuZGVkIFN1cHBvcnQuIEF0IHRoZSBlbmQgb2Ygc3RhbmRhcmQgc3VwcG9ydCwgeW91IGNhbiBhdm9pZCBjaGFyZ2VzIGZvciBFeHRlbmRlZCBTdXBwb3J0IGJ5IHNldHRpbmcgdGhlIHZhbHVlIHRvIGBgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnQtZGlzYWJsZWRgYC4gSW4gdGhpcyBjYXNlLCBjcmVhdGluZyB0aGUgREIgY2x1c3RlciB3aWxsIGZhaWwgaWYgdGhlIERCIG1ham9yIHZlcnNpb24gaXMgcGFzdCBpdHMgZW5kIG9mIHN0YW5kYXJkIHN1cHBvcnQgZGF0ZS5cbiAqICAgWW91IGNhbiB1c2UgdGhpcyBzZXR0aW5nIHRvIGVucm9sbCB5b3VyIERCIGNsdXN0ZXIgaW50byBBbWF6b24gUkRTIEV4dGVuZGVkIFN1cHBvcnQuIFdpdGggUkRTIEV4dGVuZGVkIFN1cHBvcnQsIHlvdSBjYW4gcnVuIHRoZSBzZWxlY3RlZCBtYWpvciBlbmdpbmUgdmVyc2lvbiBvbiB5b3VyIERCIGNsdXN0ZXIgcGFzdCB0aGUgZW5kIG9mIHN0YW5kYXJkIHN1cHBvcnQgZm9yIHRoYXQgZW5naW5lIHZlcnNpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGZvbGxvd2luZyBzZWN0aW9uczpcbiAqICAgKyAgQW1hem9uIEF1cm9yYSAoUG9zdGdyZVNRTCBvbmx5KSAtIFtVc2luZyBBbWF6b24gUkRTIEV4dGVuZGVkIFN1cHBvcnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9leHRlbmRlZC1zdXBwb3J0Lmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKiBcbiAqICAgKyAgQW1hem9uIFJEUyAtIFtVc2luZyBBbWF6b24gUkRTIEV4dGVuZGVkIFN1cHBvcnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9leHRlbmRlZC1zdXBwb3J0Lmh0bWwpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKiBcbiAqICAgXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogIFZhbGlkIFZhbHVlczogYGBvcGVuLXNvdXJjZS1yZHMtZXh0ZW5kZWQtc3VwcG9ydCB8IG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0LWRpc2FibGVkYGAgXG4gKiAgRGVmYXVsdDogYGBvcGVuLXNvdXJjZS1yZHMtZXh0ZW5kZWQtc3VwcG9ydGBgXG4gKi9cbkVuZ2luZUxpZmVjeWNsZVN1cHBvcnQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIERCIGVuZ2luZSBtb2RlIG9mIHRoZSBEQiBjbHVzdGVyLCBlaXRoZXIgYGBwcm92aXNpb25lZGBgIG9yIGBgc2VydmVybGVzc2BgLlxuICogIFRoZSBgYHNlcnZlcmxlc3NgYCBlbmdpbmUgbW9kZSBvbmx5IGFwcGxpZXMgZm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIERCIGNsdXN0ZXJzLiBBdXJvcmEgU2VydmVybGVzcyB2MiBEQiBjbHVzdGVycyB1c2UgdGhlIGBgcHJvdmlzaW9uZWRgYCBlbmdpbmUgbW9kZS5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgbGltaXRhdGlvbnMgYW5kIHJlcXVpcmVtZW50cyBmb3IgU2VydmVybGVzcyBEQiBjbHVzdGVycywgc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqOlxuICogICArICAgW0xpbWl0YXRpb25zIG9mIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvYXVyb3JhLXNlcnZlcmxlc3MuaHRtbCNhdXJvcmEtc2VydmVybGVzcy5saW1pdGF0aW9ucykgXG4gKiAgICsgICBbUmVxdWlyZW1lbnRzIGZvciBBdXJvcmEgU2VydmVybGVzcyB2Ml0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLXYyLnJlcXVpcmVtZW50cy5odG1sKSBcbiAqICAgXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5naW5lTW9kZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRhdGFiYXNlIGVuZ2luZSB0byB1c2UuXG4gKiAgVG8gbGlzdCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBlbmdpbmUgdmVyc2lvbnMgZm9yIEF1cm9yYSBNeVNRTCB2ZXJzaW9uIDIgKDUuNy1jb21wYXRpYmxlKSBhbmQgdmVyc2lvbiAzICg4LjAtY29tcGF0aWJsZSksIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1lbmdpbmUtdmVyc2lvbnMgLS1lbmdpbmUgYXVyb3JhLW15c3FsIC0tcXVlcnkgXCJEQkVuZ2luZVZlcnNpb25zW10uRW5naW5lVmVyc2lvblwiYGAgXG4gKiAgWW91IGNhbiBzdXBwbHkgZWl0aGVyIGBgNS43YGAgb3IgYGA4LjBgYCB0byB1c2UgdGhlIGRlZmF1bHQgZW5naW5lIHZlcnNpb24gZm9yIEF1cm9yYSBNeVNRTCB2ZXJzaW9uIDIgb3IgdmVyc2lvbiAzLCByZXNwZWN0aXZlbHkuXG4gKiAgVG8gbGlzdCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBlbmdpbmUgdmVyc2lvbnMgZm9yIEF1cm9yYSBQb3N0Z3JlU1FMLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItZW5naW5lLXZlcnNpb25zIC0tZW5naW5lIGF1cm9yYS1wb3N0Z3Jlc3FsIC0tcXVlcnkgXCJEQkVuZ2luZVZlcnNpb25zW10uRW5naW5lVmVyc2lvblwiYGAgXG4gKiAgVG8gbGlzdCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBlbmdpbmUgdmVyc2lvbnMgZm9yIFJEUyBmb3IgTXlTUUwsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1lbmdpbmUtdmVyc2lvbnMgLS1lbmdpbmUgbXlzcWwgLS1xdWVyeSBcIkRCRW5naW5lVmVyc2lvbnNbXS5FbmdpbmVWZXJzaW9uXCJgYCBcbiAqICBUbyBsaXN0IGFsbCBvZiB0aGUgYXZhaWxhYmxlIGVuZ2luZSB2ZXJzaW9ucyBmb3IgUkRTIGZvciBQb3N0Z3JlU1FMLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItZW5naW5lLXZlcnNpb25zIC0tZW5naW5lIHBvc3RncmVzIC0tcXVlcnkgXCJEQkVuZ2luZVZlcnNpb25zW10uRW5naW5lVmVyc2lvblwiYGAgXG4gKiAgICpBdXJvcmEgTXlTUUwqIFxuICogIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtEYXRhYmFzZSBlbmdpbmUgdXBkYXRlcyBmb3IgQW1hem9uIEF1cm9yYSBNeVNRTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0F1cm9yYU15U1FMLlVwZGF0ZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogICAqQXVyb3JhIFBvc3RncmVTUUwqIFxuICogIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gQXVyb3JhIFBvc3RncmVTUUwgcmVsZWFzZXMgYW5kIGVuZ2luZSB2ZXJzaW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0F1cm9yYVBvc3RncmVTUUwuVXBkYXRlcy4yMDE4MDMwNS5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgICpNeVNRTCogXG4gKiAgRm9yIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBSRFMgZm9yIE15U1FMXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ0hBUF9NeVNRTC5odG1sI015U1FMLkNvbmNlcHRzLlZlcnNpb25NZ210KSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgICpQb3N0Z3JlU1FMKiBcbiAqICBGb3IgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIFJEUyBmb3IgUG9zdGdyZVNRTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfUG9zdGdyZVNRTC5odG1sI1Bvc3RncmVTUUwuQ29uY2VwdHMpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRW5naW5lVmVyc2lvbj86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0byBtYW5hZ2UgdGhlIG1hc3RlciB1c2VyIHBhc3N3b3JkIHdpdGggQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQYXNzd29yZCBtYW5hZ2VtZW50IHdpdGggU2VjcmV0cyBNYW5hZ2VyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvcmRzLXNlY3JldHMtbWFuYWdlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSogYW5kIFtQYXNzd29yZCBtYW5hZ2VtZW50IHdpdGggU2VjcmV0cyBNYW5hZ2VyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvcmRzLXNlY3JldHMtbWFuYWdlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZS4qIFxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgQ2FuJ3QgbWFuYWdlIHRoZSBtYXN0ZXIgdXNlciBwYXNzd29yZCB3aXRoIEFXUyBTZWNyZXRzIE1hbmFnZXIgaWYgYGBNYXN0ZXJVc2VyUGFzc3dvcmRgYCBpcyBzcGVjaWZpZWQuXG4gKi9cbk1hbmFnZU1hc3RlclVzZXJQYXNzd29yZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIGFtb3VudCBvZiBQcm92aXNpb25lZCBJT1BTIChpbnB1dC9vdXRwdXQgb3BlcmF0aW9ucyBwZXIgc2Vjb25kKSB0byBiZSBpbml0aWFsbHkgYWxsb2NhdGVkIGZvciBlYWNoIERCIGluc3RhbmNlIGluIHRoZSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIEZvciBpbmZvcm1hdGlvbiBhYm91dCB2YWxpZCBJT1BTIHZhbHVlcywgc2VlIFtQcm92aXNpb25lZCBJT1BTIHN0b3JhZ2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9DSEFQX1N0b3JhZ2UuaHRtbCNVU0VSX1BJT1BTKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgVGhpcyBzZXR0aW5nIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IGJlIGEgbXVsdGlwbGUgYmV0d2VlbiAuNSBhbmQgNTAgb2YgdGhlIHN0b3JhZ2UgYW1vdW50IGZvciB0aGUgREIgY2x1c3Rlci5cbiAqL1xuSW9wcz86IG51bWJlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFXUyBLTVMga2V5IHRoYXQgaXMgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhYmFzZSBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIsIHN1Y2ggYXMgYGBhcm46YXdzOmttczp1cy1lYXN0LTE6MDEyMzQ1Njc4OTEwOmtleS9hYmNkMTIzNC1hMTIzLTQ1NmEtYTEyYi1hMTIzYjRjZDU2ZWZgYC4gSWYgeW91IGVuYWJsZSB0aGUgYGBTdG9yYWdlRW5jcnlwdGVkYGAgcHJvcGVydHkgYnV0IGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgdGhlIGRlZmF1bHQgS01TIGtleSBpcyB1c2VkLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzZXQgdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIHByb3BlcnR5IHRvIGBgdHJ1ZWBgLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCB0aGUgYGBTdG9yYWdlRW5jcnlwdGVkYGAgcHJvcGVydHkgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHNuYXBzaG90LCBhbmQgaWYgdGhlIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLCB0aGUgc3BlY2lmaWVkIGBgS21zS2V5SWRgYCBwcm9wZXJ0eSBpcyB1c2VkLlxuICogIElmIHlvdSBjcmVhdGUgYSByZWFkIHJlcGxpY2Egb2YgYW4gZW5jcnlwdGVkIERCIGNsdXN0ZXIgaW4gYW5vdGhlciBBV1MgUmVnaW9uLCBtYWtlIHN1cmUgdG8gc2V0IGBgS21zS2V5SWRgYCB0byBhIEtNUyBrZXkgaWRlbnRpZmllciB0aGF0IGlzIHZhbGlkIGluIHRoZSBkZXN0aW5hdGlvbiBBV1MgUmVnaW9uLiBUaGlzIEtNUyBrZXkgaXMgdXNlZCB0byBlbmNyeXB0IHRoZSByZWFkIHJlcGxpY2EgaW4gdGhhdCBBV1MgUmVnaW9uLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbWFzdGVyIHVzZXIgZm9yIHRoZSBEQiBjbHVzdGVyLlxuICogICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBTb3VyY2VEQkNsdXN0ZXJJZGVudGlmaWVyYGAsIGBgU25hcHNob3RJZGVudGlmaWVyYGAsIG9yIGBgR2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBUaGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHNvdXJjZSBEQiBjbHVzdGVyLCB0aGUgc25hcHNob3QsIG9yIHRoZSBwcmltYXJ5IERCIGNsdXN0ZXIgZm9yIHRoZSBnbG9iYWwgZGF0YWJhc2UgY2x1c3RlciwgcmVzcGVjdGl2ZWx5LlxuICogICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuTWFzdGVyVXNlcm5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG1hc3RlciBwYXNzd29yZCBmb3IgdGhlIERCIGluc3RhbmNlLlxuICogICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBTb3VyY2VEQkNsdXN0ZXJJZGVudGlmaWVyYGAsIGBgU25hcHNob3RJZGVudGlmaWVyYGAsIG9yIGBgR2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBUaGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHNvdXJjZSBEQiBjbHVzdGVyLCB0aGUgc25hcHNob3QsIG9yIHRoZSBwcmltYXJ5IERCIGNsdXN0ZXIgZm9yIHRoZSBnbG9iYWwgZGF0YWJhc2UgY2x1c3RlciwgcmVzcGVjdGl2ZWx5LlxuICogICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuTWFzdGVyVXNlclBhc3N3b3JkPzogc3RyaW5nXG5NYXN0ZXJVc2VyU2VjcmV0PzogTWFzdGVyVXNlclNlY3JldFxuLyoqXG4gKiBUaGUgaW50ZXJ2YWwsIGluIHNlY29uZHMsIGJldHdlZW4gcG9pbnRzIHdoZW4gRW5oYW5jZWQgTW9uaXRvcmluZyBtZXRyaWNzIGFyZSBjb2xsZWN0ZWQgZm9yIHRoZSBEQiBjbHVzdGVyLiBUbyB0dXJuIG9mZiBjb2xsZWN0aW5nIEVuaGFuY2VkIE1vbml0b3JpbmcgbWV0cmljcywgc3BlY2lmeSBgYDBgYC5cbiAqICBJZiBgYE1vbml0b3JpbmdSb2xlQXJuYGAgaXMgc3BlY2lmaWVkLCBhbHNvIHNldCBgYE1vbml0b3JpbmdJbnRlcnZhbGBgIHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgYDBgYC5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBNdWx0aS1BWiBEQiBjbHVzdGVycyBvbmx5XG4gKiAgVmFsaWQgVmFsdWVzOiBgYDAgfCAxIHwgNSB8IDEwIHwgMTUgfCAzMCB8IDYwYGAgXG4gKiAgRGVmYXVsdDogYGAwYGBcbiAqL1xuTW9uaXRvcmluZ0ludGVydmFsPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIElBTSByb2xlIHRoYXQgcGVybWl0cyBSRFMgdG8gc2VuZCBFbmhhbmNlZCBNb25pdG9yaW5nIG1ldHJpY3MgdG8gQW1hem9uIENsb3VkV2F0Y2ggTG9ncy4gQW4gZXhhbXBsZSBpcyBgYGFybjphd3M6aWFtOjEyMzQ1Njc4OTAxMjpyb2xlL2VtYWNjZXNzYGAuIEZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhIG1vbml0b3Jpbmcgcm9sZSwgc2VlIFtTZXR0aW5nIHVwIGFuZCBlbmFibGluZyBFbmhhbmNlZCBNb25pdG9yaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvVVNFUl9Nb25pdG9yaW5nLk9TLmh0bWwjVVNFUl9Nb25pdG9yaW5nLk9TLkVuYWJsaW5nKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgSWYgYGBNb25pdG9yaW5nSW50ZXJ2YWxgYCBpcyBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIGBgMGBgLCBzdXBwbHkgYSBgYE1vbml0b3JpbmdSb2xlQXJuYGAgdmFsdWUuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICovXG5Nb25pdG9yaW5nUm9sZUFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmV0d29yayB0eXBlIG9mIHRoZSBEQiBjbHVzdGVyLlxuICogIFZhbGlkIHZhbHVlczpcbiAqICAgKyAgIGBgSVBWNGBgIFxuICogICArICAgYGBEVUFMYGAgXG4gKiAgIFxuICogIFRoZSBuZXR3b3JrIHR5cGUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYGBEQlN1Ym5ldEdyb3VwYGAgc3BlY2lmaWVkIGZvciB0aGUgREIgY2x1c3Rlci4gQSBgYERCU3VibmV0R3JvdXBgYCBjYW4gc3VwcG9ydCBvbmx5IHRoZSBJUHY0IHByb3RvY29sIG9yIHRoZSBJUHY0IGFuZCBJUHY2IHByb3RvY29scyAoYGBEVUFMYGApLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1dvcmtpbmcgd2l0aCBhIERCIGluc3RhbmNlIGluIGEgVlBDXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9WUEMuV29ya2luZ1dpdGhSRFNJbnN0YW5jZWluYVZQQy5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZS4qIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuTmV0d29ya1R5cGU/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gdHVybiBvbiBQZXJmb3JtYW5jZSBJbnNpZ2h0cyBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNpbmcgQW1hem9uIFBlcmZvcm1hbmNlIEluc2lnaHRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvVVNFUl9QZXJmSW5zaWdodHMuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuUGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBBV1MgS01TIGtleSBpZGVudGlmaWVyIGZvciBlbmNyeXB0aW9uIG9mIFBlcmZvcm1hbmNlIEluc2lnaHRzIGRhdGEuXG4gKiAgVGhlIEFXUyBLTVMga2V5IGlkZW50aWZpZXIgaXMgdGhlIGtleSBBUk4sIGtleSBJRCwgYWxpYXMgQVJOLCBvciBhbGlhcyBuYW1lIGZvciB0aGUgS01TIGtleS5cbiAqICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBgYFBlcmZvcm1hbmNlSW5zaWdodHNLTVNLZXlJZGBgLCB0aGVuIEFtYXpvbiBSRFMgdXNlcyB5b3VyIGRlZmF1bHQgS01TIGtleS4gVGhlcmUgaXMgYSBkZWZhdWx0IEtNUyBrZXkgZm9yIHlvdXIgQVdTLWFjY291bnQuIFlvdXIgQVdTLWFjY291bnQgaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQgS01TIGtleSBmb3IgZWFjaCBBV1MtUmVnaW9uLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuUGVyZm9ybWFuY2VJbnNpZ2h0c0ttc0tleUlkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgZGF5cyB0byByZXRhaW4gUGVyZm9ybWFuY2UgSW5zaWdodHMgZGF0YS5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBNdWx0aS1BWiBEQiBjbHVzdGVycyBvbmx5XG4gKiAgVmFsaWQgVmFsdWVzOlxuICogICArICAgYGA3YGAgXG4gKiAgICsgICAqbW9udGgqICogMzEsIHdoZXJlICptb250aCogaXMgYSBudW1iZXIgb2YgbW9udGhzIGZyb20gMS0yMy4gRXhhbXBsZXM6IGBgOTNgYCAoMyBtb250aHMgKiAzMSksIGBgMzQxYGAgKDExIG1vbnRocyAqIDMxKSwgYGA1ODlgYCAoMTkgbW9udGhzICogMzEpXG4gKiAgICsgICBgYDczMWBgIFxuICogICBcbiAqICBEZWZhdWx0OiBgYDdgYCBkYXlzXG4gKiAgSWYgeW91IHNwZWNpZnkgYSByZXRlbnRpb24gcGVyaW9kIHRoYXQgaXNuJ3QgdmFsaWQsIHN1Y2ggYXMgYGA5NGBgLCBBbWF6b24gUkRTIGlzc3VlcyBhbiBlcnJvci5cbiAqL1xuUGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblBlcmlvZD86IG51bWJlclxuLyoqXG4gKiBUaGUgcG9ydCBudW1iZXIgb24gd2hpY2ggdGhlIERCIGluc3RhbmNlcyBpbiB0aGUgREIgY2x1c3RlciBhY2NlcHQgY29ubmVjdGlvbnMuXG4gKiAgRGVmYXVsdDpcbiAqICAgKyAgV2hlbiBgYEVuZ2luZU1vZGVgYCBpcyBgYHByb3Zpc2lvbmVkYGAsIGBgMzMwNmBgIChmb3IgYm90aCBBdXJvcmEgTXlTUUwgYW5kIEF1cm9yYSBQb3N0Z3JlU1FMKVxuICogICArICBXaGVuIGBgRW5naW5lTW9kZWBgIGlzIGBgc2VydmVybGVzc2BgOlxuICogICArICAgYGAzMzA2YGAgd2hlbiBgYEVuZ2luZWBgIGlzIGBgYXVyb3JhYGAgb3IgYGBhdXJvcmEtbXlzcWxgYCBcbiAqICAgKyAgIGBgNTQzMmBgIHdoZW4gYGBFbmdpbmVgYCBpcyBgYGF1cm9yYS1wb3N0Z3Jlc3FsYGAgXG4gKiAgIFxuICogICBcbiAqICAgVGhlIGBgTm8gaW50ZXJydXB0aW9uYGAgb24gdXBkYXRlIGJlaGF2aW9yIG9ubHkgYXBwbGllcyB0byBEQiBjbHVzdGVycy4gSWYgeW91IGFyZSB1cGRhdGluZyBhIERCIGluc3RhbmNlLCBzZWUgW1BvcnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXJkcy1kYXRhYmFzZS1pbnN0YW5jZS5odG1sI2Nmbi1yZHMtZGJpbnN0YW5jZS1wb3J0KSBmb3IgdGhlIEFXUzo6UkRTOjpEQkluc3RhbmNlIHJlc291cmNlLlxuICogICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUG9ydD86IG51bWJlclxuLyoqXG4gKiBUaGUgZGFpbHkgdGltZSByYW5nZSBkdXJpbmcgd2hpY2ggYXV0b21hdGVkIGJhY2t1cHMgYXJlIGNyZWF0ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0JhY2t1cCBXaW5kb3ddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmEuTWFuYWdpbmcuQmFja3Vwcy5odG1sI0F1cm9yYS5NYW5hZ2luZy5CYWNrdXBzLkJhY2t1cFdpbmRvdykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBiZSBpbiB0aGUgZm9ybWF0IGBgaGgyNDptaS1oaDI0Om1pYGAuXG4gKiAgICsgIE11c3QgYmUgaW4gVW5pdmVyc2FsIENvb3JkaW5hdGVkIFRpbWUgKFVUQykuXG4gKiAgICsgIE11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIHByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKiAgICsgIE11c3QgYmUgYXQgbGVhc3QgMzAgbWludXRlcy5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblByZWZlcnJlZEJhY2t1cFdpbmRvdz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgd2Vla2x5IHRpbWUgcmFuZ2UgZHVyaW5nIHdoaWNoIHN5c3RlbSBtYWludGVuYW5jZSBjYW4gb2NjdXIsIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpLlxuICogIEZvcm1hdDogYGBkZGQ6aGgyNDptaS1kZGQ6aGgyNDptaWBgIFxuICogIFRoZSBkZWZhdWx0IGlzIGEgMzAtbWludXRlIHdpbmRvdyBzZWxlY3RlZCBhdCByYW5kb20gZnJvbSBhbiA4LWhvdXIgYmxvY2sgb2YgdGltZSBmb3IgZWFjaCBBV1MgUmVnaW9uLCBvY2N1cnJpbmcgb24gYSByYW5kb20gZGF5IG9mIHRoZSB3ZWVrLiBUbyBzZWUgdGhlIHRpbWUgYmxvY2tzIGF2YWlsYWJsZSwgc2VlIFtBZGp1c3RpbmcgdGhlIFByZWZlcnJlZCBEQiBDbHVzdGVyIE1haW50ZW5hbmNlIFdpbmRvd10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL1VTRVJfVXBncmFkZURCSW5zdGFuY2UuTWFpbnRlbmFuY2UuaHRtbCNBZGp1c3RpbmdUaGVNYWludGVuYW5jZVdpbmRvdy5BdXJvcmEpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLiogXG4gKiAgVmFsaWQgRGF5czogTW9uLCBUdWUsIFdlZCwgVGh1LCBGcmksIFNhdCwgU3VuLlxuICogIENvbnN0cmFpbnRzOiBNaW5pbXVtIDMwLW1pbnV0ZSB3aW5kb3cuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBEQiBjbHVzdGVyIGlzIHB1YmxpY2x5IGFjY2Vzc2libGUuXG4gKiAgV2hlbiB0aGUgREIgY2x1c3RlciBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlIGFuZCB5b3UgY29ubmVjdCBmcm9tIG91dHNpZGUgb2YgdGhlIERCIGNsdXN0ZXIncyB2aXJ0dWFsIHByaXZhdGUgY2xvdWQgKFZQQyksIGl0cyBEb21haW4gTmFtZSBTeXN0ZW0gKEROUykgZW5kcG9pbnQgcmVzb2x2ZXMgdG8gdGhlIHB1YmxpYyBJUCBhZGRyZXNzLiBXaGVuIHlvdSBjb25uZWN0IGZyb20gd2l0aGluIHRoZSBzYW1lIFZQQyBhcyB0aGUgREIgY2x1c3RlciwgdGhlIGVuZHBvaW50IHJlc29sdmVzIHRvIHRoZSBwcml2YXRlIElQIGFkZHJlc3MuIEFjY2VzcyB0byB0aGUgREIgY2x1c3RlciBpcyB1bHRpbWF0ZWx5IGNvbnRyb2xsZWQgYnkgdGhlIHNlY3VyaXR5IGdyb3VwIGl0IHVzZXMuIFRoYXQgcHVibGljIGFjY2VzcyBpc24ndCBwZXJtaXR0ZWQgaWYgdGhlIHNlY3VyaXR5IGdyb3VwIGFzc2lnbmVkIHRvIHRoZSBEQiBjbHVzdGVyIGRvZXNuJ3QgcGVybWl0IGl0LlxuICogIFdoZW4gdGhlIERCIGNsdXN0ZXIgaXNuJ3QgcHVibGljbHkgYWNjZXNzaWJsZSwgaXQgaXMgYW4gaW50ZXJuYWwgREIgY2x1c3RlciB3aXRoIGEgRE5TIG5hbWUgdGhhdCByZXNvbHZlcyB0byBhIHByaXZhdGUgSVAgYWRkcmVzcy5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBNdWx0aS1BWiBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogVGhlIGRlZmF1bHQgYmVoYXZpb3IgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGBgREJTdWJuZXRHcm91cE5hbWVgYCBpcyBzcGVjaWZpZWQuXG4gKiAgSWYgYGBEQlN1Ym5ldEdyb3VwTmFtZWBgIGlzbid0IHNwZWNpZmllZCwgYW5kIGBgUHVibGljbHlBY2Nlc3NpYmxlYGAgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgZm9sbG93aW5nIGFwcGxpZXM6XG4gKiAgICsgIElmIHRoZSBkZWZhdWx0IFZQQyBpbiB0aGUgdGFyZ2V0IFJlZ2lvbiBkb2VzbuKAmXQgaGF2ZSBhbiBpbnRlcm5ldCBnYXRld2F5IGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgY2x1c3RlciBpcyBwcml2YXRlLlxuICogICArICBJZiB0aGUgZGVmYXVsdCBWUEMgaW4gdGhlIHRhcmdldCBSZWdpb24gaGFzIGFuIGludGVybmV0IGdhdGV3YXkgYXR0YWNoZWQgdG8gaXQsIHRoZSBEQiBjbHVzdGVyIGlzIHB1YmxpYy5cbiAqICAgXG4gKiAgSWYgYGBEQlN1Ym5ldEdyb3VwTmFtZWBgIGlzIHNwZWNpZmllZCwgYW5kIGBgUHVibGljbHlBY2Nlc3NpYmxlYGAgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgZm9sbG93aW5nIGFwcGxpZXM6XG4gKiAgICsgIElmIHRoZSBzdWJuZXRzIGFyZSBwYXJ0IG9mIGEgVlBDIHRoYXQgZG9lc27igJl0IGhhdmUgYW4gaW50ZXJuZXQgZ2F0ZXdheSBhdHRhY2hlZCB0byBpdCwgdGhlIERCIGNsdXN0ZXIgaXMgcHJpdmF0ZS5cbiAqICAgKyAgSWYgdGhlIHN1Ym5ldHMgYXJlIHBhcnQgb2YgYSBWUEMgdGhhdCBoYXMgYW4gaW50ZXJuZXQgZ2F0ZXdheSBhdHRhY2hlZCB0byBpdCwgdGhlIERCIGNsdXN0ZXIgaXMgcHVibGljLlxuICovXG5QdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgc291cmNlIERCIGluc3RhbmNlIG9yIERCIGNsdXN0ZXIgaWYgdGhpcyBEQiBjbHVzdGVyIGlzIGNyZWF0ZWQgYXMgYSByZWFkIHJlcGxpY2EuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5SZXBsaWNhdGlvblNvdXJjZUlkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIGRhdGUgYW5kIHRpbWUgdG8gcmVzdG9yZSB0aGUgREIgY2x1c3RlciB0by5cbiAqICBWYWxpZCBWYWx1ZXM6IFZhbHVlIG11c3QgYmUgYSB0aW1lIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpIGZvcm1hdFxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IGJlIGJlZm9yZSB0aGUgbGF0ZXN0IHJlc3RvcmFibGUgdGltZSBmb3IgdGhlIERCIGluc3RhbmNlXG4gKiAgICsgIE11c3QgYmUgc3BlY2lmaWVkIGlmIGBgVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWVgYCBwYXJhbWV0ZXIgaXNuJ3QgcHJvdmlkZWRcbiAqICAgKyAgQ2FuJ3QgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYFVzZUxhdGVzdFJlc3RvcmFibGVUaW1lYGAgcGFyYW1ldGVyIGlzIGVuYWJsZWRcbiAqICAgKyAgQ2FuJ3QgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYFJlc3RvcmVUeXBlYGAgcGFyYW1ldGVyIGlzIGBgY29weS1vbi13cml0ZWBgIFxuICogICBcbiAqICBUaGlzIHByb3BlcnR5IG11c3QgYmUgdXNlZCB3aXRoIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LiBUaGUgcmVzdWx0aW5nIGNsdXN0ZXIgd2lsbCBoYXZlIHRoZSBpZGVudGlmaWVyIHRoYXQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGBgREJjbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LlxuICogIEV4YW1wbGU6IGBgMjAxNS0wMy0wN1QyMzo0NTowMFpgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUmVzdG9yZVRvVGltZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdHlwZSBvZiByZXN0b3JlIHRvIGJlIHBlcmZvcm1lZC4gWW91IGNhbiBzcGVjaWZ5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAqICAgKyAgIGBgZnVsbC1jb3B5YGAgLSBUaGUgbmV3IERCIGNsdXN0ZXIgaXMgcmVzdG9yZWQgYXMgYSBmdWxsIGNvcHkgb2YgdGhlIHNvdXJjZSBEQiBjbHVzdGVyLlxuICogICArICAgYGBjb3B5LW9uLXdyaXRlYGAgLSBUaGUgbmV3IERCIGNsdXN0ZXIgaXMgcmVzdG9yZWQgYXMgYSBjbG9uZSBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIuXG4gKiAgIFxuICogIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgYGBSZXN0b3JlVHlwZWBgIHZhbHVlLCB0aGVuIHRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGZ1bGwgY29weSBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblJlc3RvcmVUeXBlPzogc3RyaW5nXG5TZXJ2ZXJsZXNzVjJTY2FsaW5nQ29uZmlndXJhdGlvbj86IFNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uXG5TY2FsaW5nQ29uZmlndXJhdGlvbj86IFNjYWxpbmdDb25maWd1cmF0aW9uXG4vKipcbiAqIFRoZSBpZGVudGlmaWVyIGZvciB0aGUgREIgc25hcHNob3Qgb3IgREIgY2x1c3RlciBzbmFwc2hvdCB0byByZXN0b3JlIGZyb20uXG4gKiAgWW91IGNhbiB1c2UgZWl0aGVyIHRoZSBuYW1lIG9yIHRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSB0byBzcGVjaWZ5IGEgREIgY2x1c3RlciBzbmFwc2hvdC4gSG93ZXZlciwgeW91IGNhbiB1c2Ugb25seSB0aGUgQVJOIHRvIHNwZWNpZnkgYSBEQiBzbmFwc2hvdC5cbiAqICBBZnRlciB5b3UgcmVzdG9yZSBhIERCIGNsdXN0ZXIgd2l0aCBhIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHksIHlvdSBtdXN0IHNwZWNpZnkgdGhlIHNhbWUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSBmb3IgYW55IGZ1dHVyZSB1cGRhdGVzIHRvIHRoZSBEQiBjbHVzdGVyLiBXaGVuIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHkgZm9yIGFuIHVwZGF0ZSwgdGhlIERCIGNsdXN0ZXIgaXMgbm90IHJlc3RvcmVkIGZyb20gdGhlIHNuYXBzaG90IGFnYWluLCBhbmQgdGhlIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGlzIG5vdCBjaGFuZ2VkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgYW4gZW1wdHkgREIgY2x1c3RlciBpcyBjcmVhdGVkLCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC4gSWYgeW91IHNwZWNpZnkgYSBwcm9wZXJ0eSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBzbmFwc2hvdCByZXN0b3JlIHByb3BlcnR5LCBhIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGZyb20gdGhlIHNwZWNpZmllZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSB0byByZXN0b3JlIGEgREIgY2x1c3RlciAoYXMgb3Bwb3NlZCB0byBzcGVjaWZ5aW5nIGl0IGZvciBEQiBjbHVzdGVyIHVwZGF0ZXMpLCB0aGVuIGRvbid0IHNwZWNpZnkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICogICArICAgYGBHbG9iYWxDbHVzdGVySWRlbnRpZmllcmBgIFxuICogICArICAgYGBNYXN0ZXJVc2VybmFtZWBgIFxuICogICArICAgYGBNYXN0ZXJVc2VyUGFzc3dvcmRgYCBcbiAqICAgKyAgIGBgUmVwbGljYXRpb25Tb3VyY2VJZGVudGlmaWVyYGAgXG4gKiAgICsgICBgYFJlc3RvcmVUeXBlYGAgXG4gKiAgICsgICBgYFNvdXJjZURCQ2x1c3RlcklkZW50aWZpZXJgYCBcbiAqICAgKyAgIGBgU291cmNlUmVnaW9uYGAgXG4gKiAgICsgICBgYFN0b3JhZ2VFbmNyeXB0ZWRgYCAoZm9yIGFuIGVuY3J5cHRlZCBzbmFwc2hvdClcbiAqICAgKyAgIGBgVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWVgYCBcbiAqICAgXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgbWF0Y2ggdGhlIGlkZW50aWZpZXIgb2YgYW4gZXhpc3RpbmcgU25hcHNob3QuXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5TbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogV2hlbiByZXN0b3JpbmcgYSBEQiBjbHVzdGVyIHRvIGEgcG9pbnQgaW4gdGltZSwgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHNvdXJjZSBEQiBjbHVzdGVyIGZyb20gd2hpY2ggdG8gcmVzdG9yZS5cbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiBhbiBleGlzdGluZyBEQkNsdXN0ZXIuXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Tb3VyY2VEQkNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBV1MgUmVnaW9uIHdoaWNoIGNvbnRhaW5zIHRoZSBzb3VyY2UgREIgY2x1c3RlciB3aGVuIHJlcGxpY2F0aW5nIGEgREIgY2x1c3Rlci4gRm9yIGV4YW1wbGUsIGBgdXMtZWFzdC0xYGAuIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuU291cmNlUmVnaW9uPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBEQiBjbHVzdGVyIGlzIGVuY3J5cHRlZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBLbXNLZXlJZGBgIHByb3BlcnR5LCB0aGVuIHlvdSBtdXN0IGVuYWJsZSBlbmNyeXB0aW9uLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNvdXJjZURCQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBUaGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHNvdXJjZSBEQiBjbHVzdGVyLCBhbmQgaWYgdGhlIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLCB0aGUgc3BlY2lmaWVkIGBgS21zS2V5SWRgYCBwcm9wZXJ0eSBpcyB1c2VkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIGFuZCB0aGUgc3BlY2lmaWVkIHNuYXBzaG90IGlzIGVuY3J5cHRlZCwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBUaGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHNuYXBzaG90LCBhbmQgdGhlIHNwZWNpZmllZCBgYEttc0tleUlkYGAgcHJvcGVydHkgaXMgdXNlZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBhbmQgdGhlIHNwZWNpZmllZCBzbmFwc2hvdCBpc24ndCBlbmNyeXB0ZWQsIHlvdSBjYW4gdXNlIHRoaXMgcHJvcGVydHkgdG8gc3BlY2lmeSB0aGF0IHRoZSByZXN0b3JlZCBEQiBjbHVzdGVyIGlzIGVuY3J5cHRlZC4gU3BlY2lmeSB0aGUgYGBLbXNLZXlJZGBgIHByb3BlcnR5IGZvciB0aGUgS01TIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpb24uIElmIHlvdSBkb24ndCB3YW50IHRoZSByZXN0b3JlZCBEQiBjbHVzdGVyIHRvIGJlIGVuY3J5cHRlZCwgdGhlbiBkb24ndCBzZXQgdGhpcyBwcm9wZXJ0eSBvciBzZXQgaXQgdG8gYGBmYWxzZWBgLlxuICogICBJZiB5b3Ugc3BlY2lmeSBib3RoIHRoZSBgYFN0b3JhZ2VFbmNyeXB0ZWRgYCBhbmQgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0aWVzIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgYGBLbXNLZXlJZGBgIHByb3BlcnR5LCB0aGVuIHRoZSByZXN0b3JlZCBEQiBjbHVzdGVyIGluaGVyaXRzIHRoZSBlbmNyeXB0aW9uIHNldHRpbmdzIGZyb20gdGhlIERCIHNuYXBzaG90IHRoYXQgcHJvdmlkZS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblN0b3JhZ2VFbmNyeXB0ZWQ/OiBib29sZWFuXG5TdG9yYWdlVGhyb3VnaHB1dD86IG51bWJlclxuLyoqXG4gKiBUaGUgc3RvcmFnZSB0eXBlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBEQiBjbHVzdGVyLlxuICogIEZvciBpbmZvcm1hdGlvbiBvbiBzdG9yYWdlIHR5cGVzIGZvciBBdXJvcmEgREIgY2x1c3RlcnMsIHNlZSBbU3RvcmFnZSBjb25maWd1cmF0aW9ucyBmb3IgQW1hem9uIEF1cm9yYSBEQiBjbHVzdGVyc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0F1cm9yYS5PdmVydmlldy5TdG9yYWdlUmVsaWFiaWxpdHkuaHRtbCNhdXJvcmEtc3RvcmFnZS10eXBlKS4gRm9yIGluZm9ybWF0aW9uIG9uIHN0b3JhZ2UgdHlwZXMgZm9yIE11bHRpLUFaIERCIGNsdXN0ZXJzLCBzZWUgW1NldHRpbmdzIGZvciBjcmVhdGluZyBNdWx0aS1BWiBEQiBjbHVzdGVyc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL2NyZWF0ZS1tdWx0aS1hei1kYi1jbHVzdGVyLmh0bWwjY3JlYXRlLW11bHRpLWF6LWRiLWNsdXN0ZXItc2V0dGluZ3MpLlxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIFdoZW4gc3BlY2lmaWVkIGZvciBhIE11bHRpLUFaIERCIGNsdXN0ZXIsIGEgdmFsdWUgZm9yIHRoZSBgYElvcHNgYCBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgQXVyb3JhIERCIGNsdXN0ZXJzIC0gYGBhdXJvcmEgfCBhdXJvcmEtaW9wdDFgYCBcbiAqICAgKyAgTXVsdGktQVogREIgY2x1c3RlcnMgLSBgYGlvMSB8IGlvMiB8IGdwM2BgIFxuICogICBcbiAqICBEZWZhdWx0OlxuICogICArICBBdXJvcmEgREIgY2x1c3RlcnMgLSBgYGF1cm9yYWBgIFxuICogICArICBNdWx0aS1BWiBEQiBjbHVzdGVycyAtIGBgaW8xYGAgXG4gKiAgIFxuICogICBXaGVuIHlvdSBjcmVhdGUgYW4gQXVyb3JhIERCIGNsdXN0ZXIgd2l0aCB0aGUgc3RvcmFnZSB0eXBlIHNldCB0byBgYGF1cm9yYS1pb3B0MWBgLCB0aGUgc3RvcmFnZSB0eXBlIGlzIHJldHVybmVkIGluIHRoZSByZXNwb25zZS4gVGhlIHN0b3JhZ2UgdHlwZSBpc24ndCByZXR1cm5lZCB3aGVuIHlvdSBzZXQgaXQgdG8gYGBhdXJvcmFgYC5cbiAqL1xuU3RvcmFnZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGFncyB0byBhc3NpZ24gdG8gdGhlIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0byByZXN0b3JlIHRoZSBEQiBjbHVzdGVyIHRvIHRoZSBsYXRlc3QgcmVzdG9yYWJsZSBiYWNrdXAgdGltZS4gQnkgZGVmYXVsdCwgdGhlIERCIGNsdXN0ZXIgaXMgbm90IHJlc3RvcmVkIHRvIHRoZSBsYXRlc3QgcmVzdG9yYWJsZSBiYWNrdXAgdGltZS4gXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblVzZUxhdGVzdFJlc3RvcmFibGVUaW1lPzogYm9vbGVhblxuLyoqXG4gKiBBIGxpc3Qgb2YgRUMyIFZQQyBzZWN1cml0eSBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLlxuICogIElmIHlvdSBwbGFuIHRvIHVwZGF0ZSB0aGUgcmVzb3VyY2UsIGRvbid0IHNwZWNpZnkgVlBDIHNlY3VyaXR5IGdyb3VwcyBpbiBhIHNoYXJlZCBWUEMuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblZwY1NlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludCB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29ubmVjdGlvbiBlbmRwb2ludCBmb3IgdGhlIHByaW1hcnkgaW5zdGFuY2Ugb2YgdGhlIERCIGNsdXN0ZXIuXG4gKi9cbkFkZHJlc3M/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwb3J0IHRoYXQgdGhlIGRhdGFiYXNlIGVuZ2luZSBpcyBsaXN0ZW5pbmcgb24uXG4gKi9cblBvcnQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhpcyBkYXRhIHR5cGUgcmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gY29ubmVjdCB0byBhbiBBbWF6b24gUkRTIERCIGluc3RhbmNlLiBUaGlzIGRhdGEgdHlwZSBpcyB1c2VkIGFzIGEgcmVzcG9uc2UgZWxlbWVudCBpbiB0aGUgZm9sbG93aW5nIGFjdGlvbnM6XG4gKiAgICsgICBgYENyZWF0ZURCSW5zdGFuY2VgYCBcbiAqICAgKyAgIGBgRGVzY3JpYmVEQkluc3RhbmNlc2BgIFxuICogICArICAgYGBEZWxldGVEQkluc3RhbmNlYGAgXG4gKiAgIFxuICogIEZvciB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIEFtYXpvbiBBdXJvcmEgREIgY2x1c3RlciBlbmRwb2ludHMsIHNlZSBgYERCQ2x1c3RlckVuZHBvaW50YGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZEVuZHBvaW50IHtcbi8qKlxuICogVGhlIGhvc3QgYWRkcmVzcyBvZiB0aGUgcmVhZGVyIGVuZHBvaW50LlxuICovXG5BZGRyZXNzPzogc3RyaW5nXG59XG4vKipcbiAqIERlc2NyaWJlcyBhbiBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJvbGUgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggYSBEQiBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERCQ2x1c3RlclJvbGUge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZmVhdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIEFXUyBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgcm9sZS4gSUFNIHJvbGVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIERCIGNsdXN0ZXIgZ3JhbnQgcGVybWlzc2lvbiBmb3IgdGhlIERCIGNsdXN0ZXIgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcyBvbiB5b3VyIGJlaGFsZi4gRm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBmZWF0dXJlIG5hbWVzLCBzZWUgdGhlIGBgU3VwcG9ydGVkRmVhdHVyZU5hbWVzYGAgZGVzY3JpcHRpb24gaW4gW0RCRW5naW5lVmVyc2lvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EQkVuZ2luZVZlcnNpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIEFQSSBSZWZlcmVuY2UqLlxuICovXG5GZWF0dXJlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIElBTSByb2xlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBEQiBjbHVzdGVyLlxuICovXG5Sb2xlQXJuOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHNlY3JldCBtYW5hZ2VkIGJ5IFJEUyBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciB0aGUgbWFzdGVyIHVzZXIgcGFzc3dvcmQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIGFuZCBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RlclVzZXJTZWNyZXQge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHNlY3JldC4gVGhpcyBwYXJhbWV0ZXIgaXMgYSByZXR1cm4gdmFsdWUgdGhhdCB5b3UgY2FuIHJldHJpZXZlIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBpbnRyaW5zaWMgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1JldHVybiB2YWx1ZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yZHMtZGJjbHVzdGVyLmh0bWwjYXdzLXJlc291cmNlLXJkcy1kYmNsdXN0ZXItcmV0dXJuLXZhbHVlcykuXG4gKi9cblNlY3JldEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVdTIEtNUyBrZXkgaWRlbnRpZmllciB0aGF0IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgc2VjcmV0LlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgc2NhbGluZyBjb25maWd1cmF0aW9uIG9mIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIFYyIERCIGNsdXN0ZXIuIFxuICogIFRoaXMgcHJvcGVydHkgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyLiBGb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjEsIFVzZSB0aGUgYGBTY2FsaW5nQ29uZmlndXJhdGlvbmBgIHByb3BlcnR5LlxuICogIFZhbGlkIGZvcjogQXVyb3JhIFNlcnZlcmxlc3MgdjIgREIgY2x1c3RlcnMgb25seVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyAoQUNVcykgZm9yIGEgREIgaW5zdGFuY2UgaW4gYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2x1c3Rlci4gWW91IGNhbiBzcGVjaWZ5IEFDVSB2YWx1ZXMgaW4gaGFsZi1zdGVwIGluY3JlbWVudHMsIHN1Y2ggYXMgOCwgOC41LCA5LCBhbmQgc28gb24uIFRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHlvdSBjYW4gdXNlIGlzIDAuNS5cbiAqL1xuTWluQ2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyAoQUNVcykgZm9yIGEgREIgaW5zdGFuY2UgaW4gYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2x1c3Rlci4gWW91IGNhbiBzcGVjaWZ5IEFDVSB2YWx1ZXMgaW4gaGFsZi1zdGVwIGluY3JlbWVudHMsIHN1Y2ggYXMgNDAsIDQwLjUsIDQxLCBhbmQgc28gb24uIFRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgeW91IGNhbiB1c2UgaXMgMTI4LlxuICogIFRoZSBtYXhpbXVtIGNhcGFjaXR5IG11c3QgYmUgaGlnaGVyIHRoYW4gMC41IEFDVXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Nob29zaW5nIHRoZSBtYXhpbXVtIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNhcGFjaXR5IHNldHRpbmcgZm9yIGEgY2x1c3Rlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLXYyLnNldHRpbmctY2FwYWNpdHkuaHRtbCNhdXJvcmEtc2VydmVybGVzcy12Mi5tYXhfY2FwYWNpdHlfY29uc2lkZXJhdGlvbnMpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBBdXJvcmEgYXV0b21hdGljYWxseSBzZXRzIGNlcnRhaW4gcGFyYW1ldGVycyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgVjIgREIgaW5zdGFuY2VzIHRvIHZhbHVlcyB0aGF0IGRlcGVuZCBvbiB0aGUgbWF4aW11bSBBQ1UgdmFsdWUgaW4gdGhlIGNhcGFjaXR5IHJhbmdlLiBXaGVuIHlvdSB1cGRhdGUgdGhlIG1heGltdW0gY2FwYWNpdHkgdmFsdWUsIHRoZSBgYFBhcmFtZXRlckFwcGx5U3RhdHVzYGAgdmFsdWUgZm9yIHRoZSBEQiBpbnN0YW5jZSBjaGFuZ2VzIHRvIGBgcGVuZGluZy1yZWJvb3RgYC4gWW91IGNhbiB1cGRhdGUgdGhlIHBhcmFtZXRlciB2YWx1ZXMgYnkgcmVib290aW5nIHRoZSBEQiBpbnN0YW5jZSBhZnRlciBjaGFuZ2luZyB0aGUgY2FwYWNpdHkgcmFuZ2UuXG4gKi9cbk1heENhcGFjaXR5PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBzY2FsaW5nIGNvbmZpZ3VyYXRpb24gb2YgYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjEgREIgY2x1c3Rlci5cbiAqICBUaGlzIHByb3BlcnR5IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBdXJvcmEgU2VydmVybGVzcyB2MS4gRm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyLCBVc2UgdGhlIGBgU2VydmVybGVzc1YyU2NhbGluZ0NvbmZpZ3VyYXRpb25gYCBwcm9wZXJ0eS5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2FsaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGFsbG93IG9yIGRpc2FsbG93IGF1dG9tYXRpYyBwYXVzZSBmb3IgYW4gQXVyb3JhIERCIGNsdXN0ZXIgaW4gYGBzZXJ2ZXJsZXNzYGAgREIgZW5naW5lIG1vZGUuIEEgREIgY2x1c3RlciBjYW4gYmUgcGF1c2VkIG9ubHkgd2hlbiBpdCdzIGlkbGUgKGl0IGhhcyBubyBjb25uZWN0aW9ucykuXG4gKiAgIElmIGEgREIgY2x1c3RlciBpcyBwYXVzZWQgZm9yIG1vcmUgdGhhbiBzZXZlbiBkYXlzLCB0aGUgREIgY2x1c3RlciBtaWdodCBiZSBiYWNrZWQgdXAgd2l0aCBhIHNuYXBzaG90LiBJbiB0aGlzIGNhc2UsIHRoZSBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIHdoZW4gdGhlcmUgaXMgYSByZXF1ZXN0IHRvIGNvbm5lY3QgdG8gaXQuXG4gKi9cbkF1dG9QYXVzZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIG1heGltdW0gY2FwYWNpdHkgZm9yIGFuIEF1cm9yYSBEQiBjbHVzdGVyIGluIGBgc2VydmVybGVzc2BgIERCIGVuZ2luZSBtb2RlLlxuICogIEZvciBBdXJvcmEgTXlTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAxYGAsIGBgMmBgLCBgYDRgYCwgYGA4YGAsIGBgMTZgYCwgYGAzMmBgLCBgYDY0YGAsIGBgMTI4YGAsIGFuZCBgYDI1NmBgLlxuICogIEZvciBBdXJvcmEgUG9zdGdyZVNRTCwgdmFsaWQgY2FwYWNpdHkgdmFsdWVzIGFyZSBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDE5MmBgLCBhbmQgYGAzODRgYC5cbiAqICBUaGUgbWF4aW11bSBjYXBhY2l0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSBjYXBhY2l0eS5cbiAqL1xuTWF4Q2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIG1pbmltdW0gY2FwYWNpdHkgZm9yIGFuIEF1cm9yYSBEQiBjbHVzdGVyIGluIGBgc2VydmVybGVzc2BgIERCIGVuZ2luZSBtb2RlLlxuICogIEZvciBBdXJvcmEgTXlTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAxYGAsIGBgMmBgLCBgYDRgYCwgYGA4YGAsIGBgMTZgYCwgYGAzMmBgLCBgYDY0YGAsIGBgMTI4YGAsIGFuZCBgYDI1NmBgLlxuICogIEZvciBBdXJvcmEgUG9zdGdyZVNRTCwgdmFsaWQgY2FwYWNpdHkgdmFsdWVzIGFyZSBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDE5MmBgLCBhbmQgYGAzODRgYC5cbiAqICBUaGUgbWluaW11bSBjYXBhY2l0eSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbWF4aW11bSBjYXBhY2l0eS5cbiAqL1xuTWluQ2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIHRyaWVzIHRvIGZpbmQgYSBzY2FsaW5nIHBvaW50IHRvIHBlcmZvcm0gc2VhbWxlc3Mgc2NhbGluZyBiZWZvcmUgZW5mb3JjaW5nIHRoZSB0aW1lb3V0IGFjdGlvbi4gVGhlIGRlZmF1bHQgaXMgMzAwLlxuICogIFNwZWNpZnkgYSB2YWx1ZSBiZXR3ZWVuIDYwIGFuZCA2MDAgc2Vjb25kcy5cbiAqL1xuU2Vjb25kc0JlZm9yZVRpbWVvdXQ/OiBudW1iZXJcbi8qKlxuICogVGhlIHRpbWUsIGluIHNlY29uZHMsIGJlZm9yZSBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBtb2RlIGlzIHBhdXNlZC5cbiAqICBTcGVjaWZ5IGEgdmFsdWUgYmV0d2VlbiAzMDAgYW5kIDg2LDQwMCBzZWNvbmRzLlxuICovXG5TZWNvbmRzVW50aWxBdXRvUGF1c2U/OiBudW1iZXJcbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIHdoZW4gdGhlIHRpbWVvdXQgaXMgcmVhY2hlZCwgZWl0aGVyIGBgRm9yY2VBcHBseUNhcGFjaXR5Q2hhbmdlYGAgb3IgYGBSb2xsYmFja0NhcGFjaXR5Q2hhbmdlYGAuXG4gKiAgIGBgRm9yY2VBcHBseUNhcGFjaXR5Q2hhbmdlYGAgc2V0cyB0aGUgY2FwYWNpdHkgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZSBhcyBzb29uIGFzIHBvc3NpYmxlLlxuICogICBgYFJvbGxiYWNrQ2FwYWNpdHlDaGFuZ2VgYCwgdGhlIGRlZmF1bHQsIGlnbm9yZXMgdGhlIGNhcGFjaXR5IGNoYW5nZSBpZiBhIHNjYWxpbmcgcG9pbnQgaXNuJ3QgZm91bmQgaW4gdGhlIHRpbWVvdXQgcGVyaW9kLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEZvcmNlQXBwbHlDYXBhY2l0eUNoYW5nZWBgLCBjb25uZWN0aW9ucyB0aGF0IHByZXZlbnQgQXVyb3JhIFNlcnZlcmxlc3MgdjEgZnJvbSBmaW5kaW5nIGEgc2NhbGluZyBwb2ludCBtaWdodCBiZSBkcm9wcGVkLlxuICogICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBdXRvc2NhbGluZyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtc2VydmVybGVzcy5ob3ctaXQtd29ya3MuaHRtbCNhdXJvcmEtc2VydmVybGVzcy5ob3ctaXQtd29ya3MuYXV0by1zY2FsaW5nKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKi9cblRpbWVvdXRBY3Rpb24/OiBzdHJpbmdcbn1cbi8qKlxuICogTWV0YWRhdGEgYXNzaWduZWQgdG8gYW4gQW1hem9uIFJEUyByZXNvdXJjZSBjb25zaXN0aW5nIG9mIGEga2V5LXZhbHVlIHBhaXIuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnZ2luZyBBbWF6b24gUkRTIHJlc291cmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfVGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSogb3IgW1RhZ2dpbmcgQW1hem9uIEF1cm9yYSBhbmQgQW1hem9uIFJEUyByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX1RhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIEEga2V5IGlzIHRoZSByZXF1aXJlZCBuYW1lIG9mIHRoZSB0YWcuIFRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGZyb20gMSB0byAxMjggVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2FuJ3QgYmUgcHJlZml4ZWQgd2l0aCBgYGF3czpgYCBvciBgYHJkczpgYC4gVGhlIHN0cmluZyBjYW4gb25seSBjb250YWluIG9ubHkgdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGUtc3BhY2UsICdfJywgJy4nLCAnOicsICcvJywgJz0nLCAnKycsICctJywgJ0AnIChKYXZhIHJlZ2V4OiBcIl4oW1xcXFxwe0x9XFxcXHB7Wn1cXFxccHtOfV8uOi89K1xcXFwtQF0qKSRcIikuXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgaXMgdGhlIG9wdGlvbmFsIHZhbHVlIG9mIHRoZSB0YWcuIFRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGZyb20gMSB0byAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2FuJ3QgYmUgcHJlZml4ZWQgd2l0aCBgYGF3czpgYCBvciBgYHJkczpgYC4gVGhlIHN0cmluZyBjYW4gb25seSBjb250YWluIG9ubHkgdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGUtc3BhY2UsICdfJywgJy4nLCAnOicsICcvJywgJz0nLCAnKycsICctJywgJ0AnIChKYXZhIHJlZ2V4OiBcIl4oW1xcXFxwe0x9XFxcXHB7Wn1cXFxccHtOfV8uOi89K1xcXFwtQF0qKSRcIikuXG4gKi9cblZhbHVlPzogc3RyaW5nXG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXJkcy1kYmNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtcmRzLWRiY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXIgb3IgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyBhbiBBdXJvcmEgREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmEuQ3JlYXRlSW5zdGFuY2UuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGEgTXVsdGktQVogREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhIE11bHRpLUFaIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9jcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgIFlvdSBjYW4gb25seSBjcmVhdGUgdGhpcyByZXNvdXJjZSBpbiBBV1MgUmVnaW9ucyB3aGVyZSBBbWF6b24gQXVyb3JhIG9yIE11bHRpLUFaIERCIGNsdXN0ZXJzIGFyZSBzdXBwb3J0ZWQuXG4gKiAgICAqVXBkYXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFdoZW4gcHJvcGVydGllcyBsYWJlbGVkIFwiKlVwZGF0ZSByZXF1aXJlczoqIFtSZXBsYWNlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXJlcGxhY2VtZW50KVwiIGFyZSB1cGRhdGVkLCBBV1MgQ2xvdWRGb3JtYXRpb24gZmlyc3QgY3JlYXRlcyBhIHJlcGxhY2VtZW50IERCIGNsdXN0ZXIsIHRoZW4gY2hhbmdlcyByZWZlcmVuY2VzIGZyb20gb3RoZXIgZGVwZW5kZW50IHJlc291cmNlcyB0byBwb2ludCB0byB0aGUgcmVwbGFjZW1lbnQgREIgY2x1c3RlciwgYW5kIGZpbmFsbHkgZGVsZXRlcyB0aGUgb2xkIERCIGNsdXN0ZXIuXG4gKiAgIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBkYXRhYmFzZSBiZWZvcmUgdXBkYXRpbmcgdGhlIHN0YWNrLiBJZiB5b3UgZG9uJ3QsIHlvdSBsb3NlIHRoZSBkYXRhIHdoZW4gQVdTIENsb3VkRm9ybWF0aW9uIHJlcGxhY2VzIHlvdXIgREIgY2x1c3Rlci4gVG8gcHJlc2VydmUgeW91ciBkYXRhLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOlxuICogICAxLiAgRGVhY3RpdmF0ZSBhbnkgYXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHRoZSBEQiBjbHVzdGVyIHNvIHRoYXQgdGhlcmUncyBubyBhY3Rpdml0eSBvbiB0aGUgREIgaW5zdGFuY2UuXG4gKiAgIDEuICBDcmVhdGUgYSBzbmFwc2hvdCBvZiB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ3JlYXRpbmcgYSBEQiBjbHVzdGVyIHNuYXBzaG90XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9DcmVhdGVTbmFwc2hvdENsdXN0ZXIuaHRtbCkuXG4gKiAgIDEuICBJZiB5b3Ugd2FudCB0byByZXN0b3JlIHlvdXIgREIgY2x1c3RlciB1c2luZyBhIERCIGNsdXN0ZXIgc25hcHNob3QsIG1vZGlmeSB0aGUgdXBkYXRlZCB0ZW1wbGF0ZSB3aXRoIHlvdXIgREIgY2x1c3RlciBjaGFuZ2VzIGFuZCBhZGQgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgd2l0aCB0aGUgSUQgb2YgdGhlIERCIGNsdXN0ZXIgc25hcHNob3QgdGhhdCB5b3Ugd2FudCB0byB1c2UuXG4gKiAgQWZ0ZXIgeW91IHJlc3RvcmUgYSBEQiBjbHVzdGVyIHdpdGggYSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBzYW1lIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgZm9yIGFueSBmdXR1cmUgdXBkYXRlcyB0byB0aGUgREIgY2x1c3Rlci4gV2hlbiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5IGZvciBhbiB1cGRhdGUsIHRoZSBEQiBjbHVzdGVyIGlzIG5vdCByZXN0b3JlZCBmcm9tIHRoZSBEQiBjbHVzdGVyIHNuYXBzaG90IGFnYWluLCBhbmQgdGhlIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGlzIG5vdCBjaGFuZ2VkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgYW4gZW1wdHkgREIgY2x1c3RlciBpcyBjcmVhdGVkLCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC4gSWYgeW91IHNwZWNpZnkgYSBwcm9wZXJ0eSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBzbmFwc2hvdCByZXN0b3JlIHByb3BlcnR5LCBhIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGZyb20gdGhlIHNwZWNpZmllZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC5cbiAqICAgMS4gIFVwZGF0ZSB0aGUgc3RhY2suXG4gKiAgIFxuICogICBDdXJyZW50bHksIHdoZW4geW91IGFyZSB1cGRhdGluZyB0aGUgc3RhY2sgZm9yIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIERCIGNsdXN0ZXIsIHlvdSBjYW4ndCBpbmNsdWRlIGNoYW5nZXMgdG8gYW55IG90aGVyIHByb3BlcnRpZXMgd2hlbiB5b3Ugc3BlY2lmeSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYFByZWZlcnJlZEJhY2t1cFdpbmRvd2BgLCBgYFByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93YGAsIGFuZCBgYFBvcnRgYC4gVGhpcyBsaW1pdGF0aW9uIGRvZXNuJ3QgYXBwbHkgdG8gcHJvdmlzaW9uZWQgREIgY2x1c3RlcnMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgb3RoZXIgcHJvcGVydGllcyBvZiB0aGlzIHJlc291cmNlLCBzZWUgYGBNb2RpZnlEQkNsdXN0ZXJgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgc3RhY2tzLCBzZWUgW0Nsb3VkRm9ybWF0aW9uIFN0YWNrcyBVcGRhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1jZm4tdXBkYXRpbmctc3RhY2tzLmh0bWwpLlxuICogICAqRGVsZXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFRoZSBkZWZhdWx0IGBgRGVsZXRpb25Qb2xpY3lgYCBmb3IgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2VzIGlzIGBgU25hcHNob3RgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHJlc291cmNlcywgc2VlIFtEZWxldGlvblBvbGljeSBBdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtZGVsZXRpb25wb2xpY3kuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19SRFNfREJDTFVTVEVSIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHksIHRoZW4geW91IG11c3QgZW5hYmxlIGVuY3J5cHRpb24uXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc291cmNlIERCIGNsdXN0ZXIsIGFuZCBpZiB0aGUgREIgY2x1c3RlciBpcyBlbmNyeXB0ZWQsIHRoZSBzcGVjaWZpZWQgYGBLbXNLZXlJZGBgIHByb3BlcnR5IGlzIHVzZWQuXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgYW5kIHRoZSBzcGVjaWZpZWQgc25hcHNob3QgaXMgZW5jcnlwdGVkLCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc25hcHNob3QsIGFuZCB0aGUgc3BlY2lmaWVkIGBgS21zS2V5SWRgYCBwcm9wZXJ0eSBpcyB1c2VkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIGFuZCB0aGUgc3BlY2lmaWVkIHNuYXBzaG90IGlzbid0IGVuY3J5cHRlZCwgeW91IGNhbiB1c2UgdGhpcyBwcm9wZXJ0eSB0byBzcGVjaWZ5IHRoYXQgdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLiBTcGVjaWZ5IHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHkgZm9yIHRoZSBLTVMga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4gSWYgeW91IGRvbid0IHdhbnQgdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgdG8gYmUgZW5jcnlwdGVkLCB0aGVuIGRvbid0IHNldCB0aGlzIHByb3BlcnR5IG9yIHNldCBpdCB0byBgYGZhbHNlYGAuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGJvdGggdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIGFuZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnRpZXMgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHksIHRoZW4gdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgaW5oZXJpdHMgdGhlIGVuY3J5cHRpb24gc2V0dGluZ3MgZnJvbSB0aGUgREIgc25hcHNob3QgdGhhdCBwcm92aWRlLlxuICogICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuU3RvcmFnZUVuY3J5cHRlZD86IGJvb2xlYW5cbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cbkRCU3lzdGVtSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGRhdGUgYW5kIHRpbWUgdG8gcmVzdG9yZSB0aGUgREIgY2x1c3RlciB0by5cbiAqICBWYWxpZCBWYWx1ZXM6IFZhbHVlIG11c3QgYmUgYSB0aW1lIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpIGZvcm1hdFxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IGJlIGJlZm9yZSB0aGUgbGF0ZXN0IHJlc3RvcmFibGUgdGltZSBmb3IgdGhlIERCIGluc3RhbmNlXG4gKiAgICsgIE11c3QgYmUgc3BlY2lmaWVkIGlmIGBgVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWVgYCBwYXJhbWV0ZXIgaXNuJ3QgcHJvdmlkZWRcbiAqICAgKyAgQ2FuJ3QgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYFVzZUxhdGVzdFJlc3RvcmFibGVUaW1lYGAgcGFyYW1ldGVyIGlzIGVuYWJsZWRcbiAqICAgKyAgQ2FuJ3QgYmUgc3BlY2lmaWVkIGlmIHRoZSBgYFJlc3RvcmVUeXBlYGAgcGFyYW1ldGVyIGlzIGBgY29weS1vbi13cml0ZWBgIFxuICogICBcbiAqICBUaGlzIHByb3BlcnR5IG11c3QgYmUgdXNlZCB3aXRoIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LiBUaGUgcmVzdWx0aW5nIGNsdXN0ZXIgd2lsbCBoYXZlIHRoZSBpZGVudGlmaWVyIHRoYXQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGBgREJjbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LlxuICogIEV4YW1wbGU6IGBgMjAxNS0wMy0wN1QyMzo0NTowMFpgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUmVzdG9yZVRvVGltZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgREIgZW5naW5lIG1vZGUgb2YgdGhlIERCIGNsdXN0ZXIsIGVpdGhlciBgYHByb3Zpc2lvbmVkYGAgb3IgYGBzZXJ2ZXJsZXNzYGAuXG4gKiAgVGhlIGBgc2VydmVybGVzc2BgIGVuZ2luZSBtb2RlIG9ubHkgYXBwbGllcyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjEgREIgY2x1c3RlcnMuIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIERCIGNsdXN0ZXJzIHVzZSB0aGUgYGBwcm92aXNpb25lZGBgIGVuZ2luZSBtb2RlLlxuICogIEZvciBpbmZvcm1hdGlvbiBhYm91dCBsaW1pdGF0aW9ucyBhbmQgcmVxdWlyZW1lbnRzIGZvciBTZXJ2ZXJsZXNzIERCIGNsdXN0ZXJzLCBzZWUgdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSo6XG4gKiAgICsgICBbTGltaXRhdGlvbnMgb2YgQXVyb3JhIFNlcnZlcmxlc3MgdjFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtc2VydmVybGVzcy5odG1sI2F1cm9yYS1zZXJ2ZXJsZXNzLmxpbWl0YXRpb25zKSBcbiAqICAgKyAgIFtSZXF1aXJlbWVudHMgZm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvYXVyb3JhLXNlcnZlcmxlc3MtdjIucmVxdWlyZW1lbnRzLmh0bWwpIFxuICogICBcbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5FbmdpbmVNb2RlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0aGUgREIgaW5zdGFuY2VzIGluIHRoZSBEQiBjbHVzdGVyIGFjY2VwdCBjb25uZWN0aW9ucy5cbiAqICBEZWZhdWx0OlxuICogICArICBXaGVuIGBgRW5naW5lTW9kZWBgIGlzIGBgcHJvdmlzaW9uZWRgYCwgYGAzMzA2YGAgKGZvciBib3RoIEF1cm9yYSBNeVNRTCBhbmQgQXVyb3JhIFBvc3RncmVTUUwpXG4gKiAgICsgIFdoZW4gYGBFbmdpbmVNb2RlYGAgaXMgYGBzZXJ2ZXJsZXNzYGA6XG4gKiAgICsgICBgYDMzMDZgYCB3aGVuIGBgRW5naW5lYGAgaXMgYGBhdXJvcmFgYCBvciBgYGF1cm9yYS1teXNxbGBgIFxuICogICArICAgYGA1NDMyYGAgd2hlbiBgYEVuZ2luZWBgIGlzIGBgYXVyb3JhLXBvc3RncmVzcWxgYCBcbiAqICAgXG4gKiAgIFxuICogICBUaGUgYGBObyBpbnRlcnJ1cHRpb25gYCBvbiB1cGRhdGUgYmVoYXZpb3Igb25seSBhcHBsaWVzIHRvIERCIGNsdXN0ZXJzLiBJZiB5b3UgYXJlIHVwZGF0aW5nIGEgREIgaW5zdGFuY2UsIHNlZSBbUG9ydF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtcmRzLWRhdGFiYXNlLWluc3RhbmNlLmh0bWwjY2ZuLXJkcy1kYmluc3RhbmNlLXBvcnQpIGZvciB0aGUgQVdTOjpSRFM6OkRCSW5zdGFuY2UgcmVzb3VyY2UuXG4gKiAgIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Qb3J0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBEQiBjbHVzdGVyIGlkZW50aWZpZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHN0b3JlZCBhcyBhIGxvd2VyY2FzZSBzdHJpbmcuXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgY29udGFpbiBmcm9tIDEgdG8gNjMgbGV0dGVycywgbnVtYmVycywgb3IgaHlwaGVucy5cbiAqICAgKyAgRmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYSBsZXR0ZXIuXG4gKiAgICsgIENhbid0IGVuZCB3aXRoIGEgaHlwaGVuIG9yIGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnMuXG4gKiAgIFxuICogIEV4YW1wbGU6IGBgbXktY2x1c3RlcjFgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZ1xuU3RvcmFnZVRocm91Z2hwdXQ/OiBudW1iZXJcbi8qKlxuICogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHBvaW50cyB3aGVuIEVuaGFuY2VkIE1vbml0b3JpbmcgbWV0cmljcyBhcmUgY29sbGVjdGVkIGZvciB0aGUgREIgY2x1c3Rlci4gVG8gdHVybiBvZmYgY29sbGVjdGluZyBFbmhhbmNlZCBNb25pdG9yaW5nIG1ldHJpY3MsIHNwZWNpZnkgYGAwYGAuXG4gKiAgSWYgYGBNb25pdG9yaW5nUm9sZUFybmBgIGlzIHNwZWNpZmllZCwgYWxzbyBzZXQgYGBNb25pdG9yaW5nSW50ZXJ2YWxgYCB0byBhIHZhbHVlIG90aGVyIHRoYW4gYGAwYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIFZhbGlkIFZhbHVlczogYGAwIHwgMSB8IDUgfCAxMCB8IDE1IHwgMzAgfCA2MGBgIFxuICogIERlZmF1bHQ6IGBgMGBgXG4gKi9cbk1vbml0b3JpbmdJbnRlcnZhbD86IG51bWJlclxuRW5kcG9pbnQ/OiBFbmRwb2ludFxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHNvdXJjZSBEQiBpbnN0YW5jZSBvciBEQiBjbHVzdGVyIGlmIHRoaXMgREIgY2x1c3RlciBpcyBjcmVhdGVkIGFzIGEgcmVhZCByZXBsaWNhLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuUmVwbGljYXRpb25Tb3VyY2VJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBlbmdpbmUgdG8gYmUgdXNlZCBmb3IgdGhpcyBEQiBjbHVzdGVyLlxuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgIGBgYXVyb3JhLW15c3FsYGAgXG4gKiAgICsgICBgYGF1cm9yYS1wb3N0Z3Jlc3FsYGAgXG4gKiAgICsgICBgYG15c3FsYGAgXG4gKiAgICsgICBgYHBvc3RncmVzYGAgXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5FbmdpbmU/OiBzdHJpbmdcbi8qKlxuICogVGFncyB0byBhc3NpZ24gdG8gdGhlIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZGF0YWJhc2UgZW5naW5lIHRvIHVzZS5cbiAqICBUbyBsaXN0IGFsbCBvZiB0aGUgYXZhaWxhYmxlIGVuZ2luZSB2ZXJzaW9ucyBmb3IgQXVyb3JhIE15U1FMIHZlcnNpb24gMiAoNS43LWNvbXBhdGlibGUpIGFuZCB2ZXJzaW9uIDMgKDguMC1jb21wYXRpYmxlKSwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAqICAgYGBhd3MgcmRzIGRlc2NyaWJlLWRiLWVuZ2luZS12ZXJzaW9ucyAtLWVuZ2luZSBhdXJvcmEtbXlzcWwgLS1xdWVyeSBcIkRCRW5naW5lVmVyc2lvbnNbXS5FbmdpbmVWZXJzaW9uXCJgYCBcbiAqICBZb3UgY2FuIHN1cHBseSBlaXRoZXIgYGA1LjdgYCBvciBgYDguMGBgIHRvIHVzZSB0aGUgZGVmYXVsdCBlbmdpbmUgdmVyc2lvbiBmb3IgQXVyb3JhIE15U1FMIHZlcnNpb24gMiBvciB2ZXJzaW9uIDMsIHJlc3BlY3RpdmVseS5cbiAqICBUbyBsaXN0IGFsbCBvZiB0aGUgYXZhaWxhYmxlIGVuZ2luZSB2ZXJzaW9ucyBmb3IgQXVyb3JhIFBvc3RncmVTUUwsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1lbmdpbmUtdmVyc2lvbnMgLS1lbmdpbmUgYXVyb3JhLXBvc3RncmVzcWwgLS1xdWVyeSBcIkRCRW5naW5lVmVyc2lvbnNbXS5FbmdpbmVWZXJzaW9uXCJgYCBcbiAqICBUbyBsaXN0IGFsbCBvZiB0aGUgYXZhaWxhYmxlIGVuZ2luZSB2ZXJzaW9ucyBmb3IgUkRTIGZvciBNeVNRTCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAqICAgYGBhd3MgcmRzIGRlc2NyaWJlLWRiLWVuZ2luZS12ZXJzaW9ucyAtLWVuZ2luZSBteXNxbCAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBSRFMgZm9yIFBvc3RncmVTUUwsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1lbmdpbmUtdmVyc2lvbnMgLS1lbmdpbmUgcG9zdGdyZXMgLS1xdWVyeSBcIkRCRW5naW5lVmVyc2lvbnNbXS5FbmdpbmVWZXJzaW9uXCJgYCBcbiAqICAgKkF1cm9yYSBNeVNRTCogXG4gKiAgRm9yIGluZm9ybWF0aW9uLCBzZWUgW0RhdGFiYXNlIGVuZ2luZSB1cGRhdGVzIGZvciBBbWF6b24gQXVyb3JhIE15U1FMXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhTXlTUUwuVXBkYXRlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgICpBdXJvcmEgUG9zdGdyZVNRTCogXG4gKiAgRm9yIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBBdXJvcmEgUG9zdGdyZVNRTCByZWxlYXNlcyBhbmQgZW5naW5lIHZlcnNpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhUG9zdGdyZVNRTC5VcGRhdGVzLjIwMTgwMzA1Lmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICAgKk15U1FMKiBcbiAqICBGb3IgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIFJEUyBmb3IgTXlTUUxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9DSEFQX015U1FMLmh0bWwjTXlTUUwuQ29uY2VwdHMuVmVyc2lvbk1nbXQpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKi5cbiAqICAgKlBvc3RncmVTUUwqIFxuICogIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUkRTIGZvciBQb3N0Z3JlU1FMXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ0hBUF9Qb3N0Z3JlU1FMLmh0bWwjUG9zdGdyZVNRTC5Db25jZXB0cykgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5FbmdpbmVWZXJzaW9uPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzdG9yYWdlIHR5cGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIGluZm9ybWF0aW9uIG9uIHN0b3JhZ2UgdHlwZXMgZm9yIEF1cm9yYSBEQiBjbHVzdGVycywgc2VlIFtTdG9yYWdlIGNvbmZpZ3VyYXRpb25zIGZvciBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhLk92ZXJ2aWV3LlN0b3JhZ2VSZWxpYWJpbGl0eS5odG1sI2F1cm9yYS1zdG9yYWdlLXR5cGUpLiBGb3IgaW5mb3JtYXRpb24gb24gc3RvcmFnZSB0eXBlcyBmb3IgTXVsdGktQVogREIgY2x1c3RlcnMsIHNlZSBbU2V0dGluZ3MgZm9yIGNyZWF0aW5nIE11bHRpLUFaIERCIGNsdXN0ZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvY3JlYXRlLW11bHRpLWF6LWRiLWNsdXN0ZXIuaHRtbCNjcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci1zZXR0aW5ncykuXG4gKiAgVGhpcyBzZXR0aW5nIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgV2hlbiBzcGVjaWZpZWQgZm9yIGEgTXVsdGktQVogREIgY2x1c3RlciwgYSB2YWx1ZSBmb3IgdGhlIGBgSW9wc2BgIHBhcmFtZXRlciBpcyByZXF1aXJlZC5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiAgVmFsaWQgVmFsdWVzOlxuICogICArICBBdXJvcmEgREIgY2x1c3RlcnMgLSBgYGF1cm9yYSB8IGF1cm9yYS1pb3B0MWBgIFxuICogICArICBNdWx0aS1BWiBEQiBjbHVzdGVycyAtIGBgaW8xIHwgaW8yIHwgZ3AzYGAgXG4gKiAgIFxuICogIERlZmF1bHQ6XG4gKiAgICsgIEF1cm9yYSBEQiBjbHVzdGVycyAtIGBgYXVyb3JhYGAgXG4gKiAgICsgIE11bHRpLUFaIERCIGNsdXN0ZXJzIC0gYGBpbzFgYCBcbiAqICAgXG4gKiAgIFdoZW4geW91IGNyZWF0ZSBhbiBBdXJvcmEgREIgY2x1c3RlciB3aXRoIHRoZSBzdG9yYWdlIHR5cGUgc2V0IHRvIGBgYXVyb3JhLWlvcHQxYGAsIHRoZSBzdG9yYWdlIHR5cGUgaXMgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlLiBUaGUgc3RvcmFnZSB0eXBlIGlzbid0IHJldHVybmVkIHdoZW4geW91IHNldCBpdCB0byBgYGF1cm9yYWBgLlxuICovXG5TdG9yYWdlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFXUyBLTVMga2V5IHRoYXQgaXMgdXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhYmFzZSBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIsIHN1Y2ggYXMgYGBhcm46YXdzOmttczp1cy1lYXN0LTE6MDEyMzQ1Njc4OTEwOmtleS9hYmNkMTIzNC1hMTIzLTQ1NmEtYTEyYi1hMTIzYjRjZDU2ZWZgYC4gSWYgeW91IGVuYWJsZSB0aGUgYGBTdG9yYWdlRW5jcnlwdGVkYGAgcHJvcGVydHkgYnV0IGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgdGhlIGRlZmF1bHQgS01TIGtleSBpcyB1c2VkLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzZXQgdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIHByb3BlcnR5IHRvIGBgdHJ1ZWBgLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCB0aGUgYGBTdG9yYWdlRW5jcnlwdGVkYGAgcHJvcGVydHkgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHNuYXBzaG90LCBhbmQgaWYgdGhlIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLCB0aGUgc3BlY2lmaWVkIGBgS21zS2V5SWRgYCBwcm9wZXJ0eSBpcyB1c2VkLlxuICogIElmIHlvdSBjcmVhdGUgYSByZWFkIHJlcGxpY2Egb2YgYW4gZW5jcnlwdGVkIERCIGNsdXN0ZXIgaW4gYW5vdGhlciBBV1MgUmVnaW9uLCBtYWtlIHN1cmUgdG8gc2V0IGBgS21zS2V5SWRgYCB0byBhIEtNUyBrZXkgaWRlbnRpZmllciB0aGF0IGlzIHZhbGlkIGluIHRoZSBkZXN0aW5hdGlvbiBBV1MgUmVnaW9uLiBUaGlzIEtNUyBrZXkgaXMgdXNlZCB0byBlbmNyeXB0IHRoZSByZWFkIHJlcGxpY2EgaW4gdGhhdCBBV1MgUmVnaW9uLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuU2VydmVybGVzc1YyU2NhbGluZ0NvbmZpZ3VyYXRpb24/OiBTZXJ2ZXJsZXNzVjJTY2FsaW5nQ29uZmlndXJhdGlvblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgdG8gcmV0YWluIFBlcmZvcm1hbmNlIEluc2lnaHRzIGRhdGEuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgIGBgN2BgIFxuICogICArICAgKm1vbnRoKiAqIDMxLCB3aGVyZSAqbW9udGgqIGlzIGEgbnVtYmVyIG9mIG1vbnRocyBmcm9tIDEtMjMuIEV4YW1wbGVzOiBgYDkzYGAgKDMgbW9udGhzICogMzEpLCBgYDM0MWBgICgxMSBtb250aHMgKiAzMSksIGBgNTg5YGAgKDE5IG1vbnRocyAqIDMxKVxuICogICArICAgYGA3MzFgYCBcbiAqICAgXG4gKiAgRGVmYXVsdDogYGA3YGAgZGF5c1xuICogIElmIHlvdSBzcGVjaWZ5IGEgcmV0ZW50aW9uIHBlcmlvZCB0aGF0IGlzbid0IHZhbGlkLCBzdWNoIGFzIGBgOTRgYCwgQW1hem9uIFJEUyBpc3N1ZXMgYW4gZXJyb3IuXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogVGhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZS4gSWYgeW91IGRvbid0IHByb3ZpZGUgYSBuYW1lLCB0aGVuIEFtYXpvbiBSRFMgd29uJ3QgY3JlYXRlIGEgZGF0YWJhc2UgaW4gdGhpcyBEQiBjbHVzdGVyLiBGb3IgbmFtaW5nIGNvbnN0cmFpbnRzLCBzZWUgW05hbWluZyBDb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5Db25zdHJhaW50cykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGF0YWJhc2VOYW1lPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHJlYWQgcmVwbGljYXMgY2FuIGZvcndhcmQgd3JpdGUgb3BlcmF0aW9ucyB0byB0aGUgd3JpdGVyIERCIGluc3RhbmNlIGluIHRoZSBEQiBjbHVzdGVyLiBCeSBkZWZhdWx0LCB3cml0ZSBvcGVyYXRpb25zIGFyZW4ndCBhbGxvd2VkIG9uIHJlYWRlciBEQiBpbnN0YW5jZXMuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5FbmFibGVMb2NhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW5cbkRCQ2x1c3RlclJlc291cmNlSWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgbWlub3IgZW5naW5lIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gdGhlIERCIGNsdXN0ZXIgZHVyaW5nIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuIEJ5IGRlZmF1bHQsIG1pbm9yIGVuZ2luZSB1cGdyYWRlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuQXV0b01pbm9yVmVyc2lvblVwZ3JhZGU/OiBib29sZWFuXG4vKipcbiAqIEEgREIgc3VibmV0IGdyb3VwIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLiBcbiAqICBJZiB5b3UgYXJlIHJlc3RvcmluZyBhIERCIGNsdXN0ZXIgdG8gYSBwb2ludCBpbiB0aW1lIHdpdGggYGBSZXN0b3JlVHlwZWBgIHNldCB0byBgYGNvcHktb24td3JpdGVgYCwgYW5kIGRvbid0IHNwZWNpZnkgYSBEQiBzdWJuZXQgZ3JvdXAgbmFtZSwgdGhlbiB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aXRoIGEgZGVmYXVsdCBEQiBzdWJuZXQgZ3JvdXAuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkRCU3VibmV0R3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgREIgY2x1c3RlciBoYXMgZGVsZXRpb24gcHJvdGVjdGlvbiBlbmFibGVkLiBUaGUgZGF0YWJhc2UgY2FuJ3QgYmUgZGVsZXRlZCB3aGVuIGRlbGV0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZC4gQnkgZGVmYXVsdCwgZGVsZXRpb24gcHJvdGVjdGlvbiBpcyBkaXNhYmxlZC5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzIChHaUIpIHRvIGFsbG9jYXRlIHRvIGVhY2ggREIgaW5zdGFuY2UgaW4gdGhlIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICovXG5BbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXN0ZXIgcGFzc3dvcmQgZm9yIHRoZSBEQiBpbnN0YW5jZS5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgLCBgYFNuYXBzaG90SWRlbnRpZmllcmBgLCBvciBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gVGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzb3VyY2UgREIgY2x1c3RlciwgdGhlIHNuYXBzaG90LCBvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIGZvciB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIsIHJlc3BlY3RpdmVseS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbk1hc3RlclVzZXJQYXNzd29yZD86IHN0cmluZ1xuTWFzdGVyVXNlclNlY3JldD86IE1hc3RlclVzZXJTZWNyZXRcbi8qKlxuICogV2hlbiByZXN0b3JpbmcgYSBEQiBjbHVzdGVyIHRvIGEgcG9pbnQgaW4gdGltZSwgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHNvdXJjZSBEQiBjbHVzdGVyIGZyb20gd2hpY2ggdG8gcmVzdG9yZS5cbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiBhbiBleGlzdGluZyBEQkNsdXN0ZXIuXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Tb3VyY2VEQkNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBtYXN0ZXIgdXNlciBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNvdXJjZURCQ2x1c3RlcklkZW50aWZpZXJgYCwgYGBTbmFwc2hvdElkZW50aWZpZXJgYCwgb3IgYGBHbG9iYWxDbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc291cmNlIERCIGNsdXN0ZXIsIHRoZSBzbmFwc2hvdCwgb3IgdGhlIHByaW1hcnkgREIgY2x1c3RlciBmb3IgdGhlIGdsb2JhbCBkYXRhYmFzZSBjbHVzdGVyLCByZXNwZWN0aXZlbHkuXG4gKiAgIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5NYXN0ZXJVc2VybmFtZT86IHN0cmluZ1xuU2NhbGluZ0NvbmZpZ3VyYXRpb24/OiBTY2FsaW5nQ29uZmlndXJhdGlvblxuUmVhZEVuZHBvaW50PzogUmVhZEVuZHBvaW50XG4vKipcbiAqIFRoZSBBV1MgS01TIGtleSBpZGVudGlmaWVyIGZvciBlbmNyeXB0aW9uIG9mIFBlcmZvcm1hbmNlIEluc2lnaHRzIGRhdGEuXG4gKiAgVGhlIEFXUyBLTVMga2V5IGlkZW50aWZpZXIgaXMgdGhlIGtleSBBUk4sIGtleSBJRCwgYWxpYXMgQVJOLCBvciBhbGlhcyBuYW1lIGZvciB0aGUgS01TIGtleS5cbiAqICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBgYFBlcmZvcm1hbmNlSW5zaWdodHNLTVNLZXlJZGBgLCB0aGVuIEFtYXpvbiBSRFMgdXNlcyB5b3VyIGRlZmF1bHQgS01TIGtleS4gVGhlcmUgaXMgYSBkZWZhdWx0IEtNUyBrZXkgZm9yIHlvdXIgQVdTLWFjY291bnQuIFlvdXIgQVdTLWFjY291bnQgaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQgS01TIGtleSBmb3IgZWFjaCBBV1MtUmVnaW9uLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuUGVyZm9ybWFuY2VJbnNpZ2h0c0ttc0tleUlkPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBEQiBjbHVzdGVyIGlzIHB1YmxpY2x5IGFjY2Vzc2libGUuXG4gKiAgV2hlbiB0aGUgREIgY2x1c3RlciBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlIGFuZCB5b3UgY29ubmVjdCBmcm9tIG91dHNpZGUgb2YgdGhlIERCIGNsdXN0ZXIncyB2aXJ0dWFsIHByaXZhdGUgY2xvdWQgKFZQQyksIGl0cyBEb21haW4gTmFtZSBTeXN0ZW0gKEROUykgZW5kcG9pbnQgcmVzb2x2ZXMgdG8gdGhlIHB1YmxpYyBJUCBhZGRyZXNzLiBXaGVuIHlvdSBjb25uZWN0IGZyb20gd2l0aGluIHRoZSBzYW1lIFZQQyBhcyB0aGUgREIgY2x1c3RlciwgdGhlIGVuZHBvaW50IHJlc29sdmVzIHRvIHRoZSBwcml2YXRlIElQIGFkZHJlc3MuIEFjY2VzcyB0byB0aGUgREIgY2x1c3RlciBpcyB1bHRpbWF0ZWx5IGNvbnRyb2xsZWQgYnkgdGhlIHNlY3VyaXR5IGdyb3VwIGl0IHVzZXMuIFRoYXQgcHVibGljIGFjY2VzcyBpc24ndCBwZXJtaXR0ZWQgaWYgdGhlIHNlY3VyaXR5IGdyb3VwIGFzc2lnbmVkIHRvIHRoZSBEQiBjbHVzdGVyIGRvZXNuJ3QgcGVybWl0IGl0LlxuICogIFdoZW4gdGhlIERCIGNsdXN0ZXIgaXNuJ3QgcHVibGljbHkgYWNjZXNzaWJsZSwgaXQgaXMgYW4gaW50ZXJuYWwgREIgY2x1c3RlciB3aXRoIGEgRE5TIG5hbWUgdGhhdCByZXNvbHZlcyB0byBhIHByaXZhdGUgSVAgYWRkcmVzcy5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBNdWx0aS1BWiBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogVGhlIGRlZmF1bHQgYmVoYXZpb3IgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGBgREJTdWJuZXRHcm91cE5hbWVgYCBpcyBzcGVjaWZpZWQuXG4gKiAgSWYgYGBEQlN1Ym5ldEdyb3VwTmFtZWBgIGlzbid0IHNwZWNpZmllZCwgYW5kIGBgUHVibGljbHlBY2Nlc3NpYmxlYGAgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgZm9sbG93aW5nIGFwcGxpZXM6XG4gKiAgICsgIElmIHRoZSBkZWZhdWx0IFZQQyBpbiB0aGUgdGFyZ2V0IFJlZ2lvbiBkb2VzbuKAmXQgaGF2ZSBhbiBpbnRlcm5ldCBnYXRld2F5IGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgY2x1c3RlciBpcyBwcml2YXRlLlxuICogICArICBJZiB0aGUgZGVmYXVsdCBWUEMgaW4gdGhlIHRhcmdldCBSZWdpb24gaGFzIGFuIGludGVybmV0IGdhdGV3YXkgYXR0YWNoZWQgdG8gaXQsIHRoZSBEQiBjbHVzdGVyIGlzIHB1YmxpYy5cbiAqICAgXG4gKiAgSWYgYGBEQlN1Ym5ldEdyb3VwTmFtZWBgIGlzIHNwZWNpZmllZCwgYW5kIGBgUHVibGljbHlBY2Nlc3NpYmxlYGAgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgZm9sbG93aW5nIGFwcGxpZXM6XG4gKiAgICsgIElmIHRoZSBzdWJuZXRzIGFyZSBwYXJ0IG9mIGEgVlBDIHRoYXQgZG9lc27igJl0IGhhdmUgYW4gaW50ZXJuZXQgZ2F0ZXdheSBhdHRhY2hlZCB0byBpdCwgdGhlIERCIGNsdXN0ZXIgaXMgcHJpdmF0ZS5cbiAqICAgKyAgSWYgdGhlIHN1Ym5ldHMgYXJlIHBhcnQgb2YgYSBWUEMgdGhhdCBoYXMgYW4gaW50ZXJuZXQgZ2F0ZXdheSBhdHRhY2hlZCB0byBpdCwgdGhlIERCIGNsdXN0ZXIgaXMgcHVibGljLlxuICovXG5QdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuXG4vKipcbiAqIEluZGljYXRlcyB0aGUgZGlyZWN0b3J5IElEIG9mIHRoZSBBY3RpdmUgRGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgREIgY2x1c3Rlci5cbiAqICBGb3IgQW1hem9uIEF1cm9yYSBEQiBjbHVzdGVycywgQW1hem9uIFJEUyBjYW4gdXNlIEtlcmJlcm9zIGF1dGhlbnRpY2F0aW9uIHRvIGF1dGhlbnRpY2F0ZSB1c2VycyB0aGF0IGNvbm5lY3QgdG8gdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbS2VyYmVyb3MgYXV0aGVudGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9rZXJiZXJvcy1hdXRoZW50aWNhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5Eb21haW4/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRhcmdldCBiYWNrdHJhY2sgd2luZG93LCBpbiBzZWNvbmRzLiBUbyBkaXNhYmxlIGJhY2t0cmFja2luZywgc2V0IHRoaXMgdmFsdWUgdG8gYGAwYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIE15U1FMIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBEZWZhdWx0OiBgYDBgYCBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgSWYgc3BlY2lmaWVkLCB0aGlzIHZhbHVlIG11c3QgYmUgc2V0IHRvIGEgbnVtYmVyIGZyb20gMCB0byAyNTksMjAwICg3MiBob3VycykuXG4gKi9cbkJhY2t0cmFja1dpbmRvdz86IG51bWJlclxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgcGFyYW1ldGVyIGdyb3VwIHRvIGFwcGx5IHRvIGFsbCBpbnN0YW5jZXMgb2YgdGhlIERCIGNsdXN0ZXIuXG4gKiAgIFdoZW4geW91IGFwcGx5IGEgcGFyYW1ldGVyIGdyb3VwIHVzaW5nIHRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIsIHRoZSBEQiBjbHVzdGVyIGlzbid0IHJlYm9vdGVkIGF1dG9tYXRpY2FsbHkuIEFsc28sIHBhcmFtZXRlciBjaGFuZ2VzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHJhdGhlciB0aGFuIGR1cmluZyB0aGUgbmV4dCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKiAgIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogVGhlIGV4aXN0aW5nIG5hbWUgc2V0dGluZ1xuICogIENvbnN0cmFpbnRzOlxuICogICArICBUaGUgREIgcGFyYW1ldGVyIGdyb3VwIG11c3QgYmUgaW4gdGhlIHNhbWUgREIgcGFyYW1ldGVyIGdyb3VwIGZhbWlseSBhcyB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgICsgIFRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIgaXMgdmFsaWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGBBbGxvd01ham9yVmVyc2lvblVwZ3JhZGVgYCBwYXJhbWV0ZXIgZm9yIGEgbWFqb3IgdmVyc2lvbiB1cGdyYWRlIG9ubHkuXG4gKi9cbkRCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWU/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoaXMgREIgY2x1c3RlciB0byBmb3J3YXJkIHdyaXRlIG9wZXJhdGlvbnMgdG8gdGhlIHByaW1hcnkgY2x1c3RlciBvZiBhIGdsb2JhbCBjbHVzdGVyIChBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlKS4gQnkgZGVmYXVsdCwgd3JpdGUgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgb24gQXVyb3JhIERCIGNsdXN0ZXJzIHRoYXQgYXJlIHNlY29uZGFyeSBjbHVzdGVycyBpbiBhbiBBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlLlxuICogIFlvdSBjYW4gc2V0IHRoaXMgdmFsdWUgb25seSBvbiBBdXJvcmEgREIgY2x1c3RlcnMgdGhhdCBhcmUgbWVtYmVycyBvZiBhbiBBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlLiBXaXRoIHRoaXMgcGFyYW1ldGVyIGVuYWJsZWQsIGEgc2Vjb25kYXJ5IGNsdXN0ZXIgY2FuIGZvcndhcmQgd3JpdGVzIHRvIHRoZSBjdXJyZW50IHByaW1hcnkgY2x1c3RlciwgYW5kIHRoZSByZXN1bHRpbmcgY2hhbmdlcyBhcmUgcmVwbGljYXRlZCBiYWNrIHRvIHRoaXMgY2x1c3Rlci4gRm9yIHRoZSBwcmltYXJ5IERCIGNsdXN0ZXIgb2YgYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZSwgdGhpcyB2YWx1ZSBpcyB1c2VkIGltbWVkaWF0ZWx5IGlmIHRoZSBwcmltYXJ5IGlzIGRlbW90ZWQgYnkgYSBnbG9iYWwgY2x1c3RlciBBUEkgb3BlcmF0aW9uLCBidXQgaXQgZG9lcyBub3RoaW5nIHVudGlsIHRoZW4uXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBJQU0gcm9sZSB0aGF0IHBlcm1pdHMgUkRTIHRvIHNlbmQgRW5oYW5jZWQgTW9uaXRvcmluZyBtZXRyaWNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MuIEFuIGV4YW1wbGUgaXMgYGBhcm46YXdzOmlhbToxMjM0NTY3ODkwMTI6cm9sZS9lbWFjY2Vzc2BgLiBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYSBtb25pdG9yaW5nIHJvbGUsIHNlZSBbU2V0dGluZyB1cCBhbmQgZW5hYmxpbmcgRW5oYW5jZWQgTW9uaXRvcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfTW9uaXRvcmluZy5PUy5odG1sI1VTRVJfTW9uaXRvcmluZy5PUy5FbmFibGluZykgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIElmIGBgTW9uaXRvcmluZ0ludGVydmFsYGAgaXMgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgYDBgYCwgc3VwcGx5IGEgYGBNb25pdG9yaW5nUm9sZUFybmBgIHZhbHVlLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuTW9uaXRvcmluZ1JvbGVBcm4/OiBzdHJpbmdcbi8qKlxuICogUHJvdmlkZXMgYSBsaXN0IG9mIHRoZSBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJvbGVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgREIgY2x1c3Rlci4gSUFNIHJvbGVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIERCIGNsdXN0ZXIgZ3JhbnQgcGVybWlzc2lvbiBmb3IgdGhlIERCIGNsdXN0ZXIgdG8gYWNjZXNzIG90aGVyIEFtYXpvbiBXZWIgU2VydmljZXMgb24geW91ciBiZWhhbGYuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkFzc29jaWF0ZWRSb2xlcz86IERCQ2x1c3RlclJvbGVbXVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgdGhlIEhUVFAgZW5kcG9pbnQgZm9yIHRoZSBEQiBjbHVzdGVyLiBCeSBkZWZhdWx0LCB0aGUgSFRUUCBlbmRwb2ludCBpc24ndCBlbmFibGVkLlxuICogIFdoZW4gZW5hYmxlZCwgdGhlIEhUVFAgZW5kcG9pbnQgcHJvdmlkZXMgYSBjb25uZWN0aW9ubGVzcyB3ZWIgc2VydmljZSBBUEkgKFJEUyBEYXRhIEFQSSkgZm9yIHJ1bm5pbmcgU1FMIHF1ZXJpZXMgb24gdGhlIERCIGNsdXN0ZXIuIFlvdSBjYW4gYWxzbyBxdWVyeSB5b3VyIGRhdGFiYXNlIGZyb20gaW5zaWRlIHRoZSBSRFMgY29uc29sZSB3aXRoIHRoZSBSRFMgcXVlcnkgZWRpdG9yLlxuICogIFJEUyBEYXRhIEFQSSBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIERCIGNsdXN0ZXJzOlxuICogICArICBBdXJvcmEgUG9zdGdyZVNRTCBTZXJ2ZXJsZXNzIHYyIGFuZCBwcm92aXNpb25lZFxuICogICArICBBdXJvcmEgUG9zdGdyZVNRTCBhbmQgQXVyb3JhIE15U1FMIFNlcnZlcmxlc3MgdjFcbiAqICAgXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNpbmcgUkRTIERhdGEgQVBJXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvZGF0YS1hcGkuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuYWJsZUh0dHBFbmRwb2ludD86IGJvb2xlYW5cbi8qKlxuICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBEQiBzbmFwc2hvdCBvciBEQiBjbHVzdGVyIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbS5cbiAqICBZb3UgY2FuIHVzZSBlaXRoZXIgdGhlIG5hbWUgb3IgdGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIHRvIHNwZWNpZnkgYSBEQiBjbHVzdGVyIHNuYXBzaG90LiBIb3dldmVyLCB5b3UgY2FuIHVzZSBvbmx5IHRoZSBBUk4gdG8gc3BlY2lmeSBhIERCIHNuYXBzaG90LlxuICogIEFmdGVyIHlvdSByZXN0b3JlIGEgREIgY2x1c3RlciB3aXRoIGEgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgc2FtZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5IGZvciBhbnkgZnV0dXJlIHVwZGF0ZXMgdG8gdGhlIERCIGNsdXN0ZXIuIFdoZW4geW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSBmb3IgYW4gdXBkYXRlLCB0aGUgREIgY2x1c3RlciBpcyBub3QgcmVzdG9yZWQgZnJvbSB0aGUgc25hcHNob3QgYWdhaW4sIGFuZCB0aGUgZGF0YSBpbiB0aGUgZGF0YWJhc2UgaXMgbm90IGNoYW5nZWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbiBlbXB0eSBEQiBjbHVzdGVyIGlzIGNyZWF0ZWQsIGFuZCB0aGUgb3JpZ2luYWwgREIgY2x1c3RlciBpcyBkZWxldGVkLiBJZiB5b3Ugc3BlY2lmeSBhIHByb3BlcnR5IHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNuYXBzaG90IHJlc3RvcmUgcHJvcGVydHksIGEgbmV3IERCIGNsdXN0ZXIgaXMgcmVzdG9yZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHksIGFuZCB0aGUgb3JpZ2luYWwgREIgY2x1c3RlciBpcyBkZWxldGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5IHRvIHJlc3RvcmUgYSBEQiBjbHVzdGVyIChhcyBvcHBvc2VkIHRvIHNwZWNpZnlpbmcgaXQgZm9yIERCIGNsdXN0ZXIgdXBkYXRlcyksIHRoZW4gZG9uJ3Qgc3BlY2lmeSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAgICsgICBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgXG4gKiAgICsgICBgYE1hc3RlclVzZXJuYW1lYGAgXG4gKiAgICsgICBgYE1hc3RlclVzZXJQYXNzd29yZGBgIFxuICogICArICAgYGBSZXBsaWNhdGlvblNvdXJjZUlkZW50aWZpZXJgYCBcbiAqICAgKyAgIGBgUmVzdG9yZVR5cGVgYCBcbiAqICAgKyAgIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIFxuICogICArICAgYGBTb3VyY2VSZWdpb25gYCBcbiAqICAgKyAgIGBgU3RvcmFnZUVuY3J5cHRlZGBgIChmb3IgYW4gZW5jcnlwdGVkIHNuYXBzaG90KVxuICogICArICAgYGBVc2VMYXRlc3RSZXN0b3JhYmxlVGltZWBgIFxuICogICBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiBhbiBleGlzdGluZyBTbmFwc2hvdC5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGFpbHkgdGltZSByYW5nZSBkdXJpbmcgd2hpY2ggYXV0b21hdGVkIGJhY2t1cHMgYXJlIGNyZWF0ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0JhY2t1cCBXaW5kb3ddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmEuTWFuYWdpbmcuQmFja3Vwcy5odG1sI0F1cm9yYS5NYW5hZ2luZy5CYWNrdXBzLkJhY2t1cFdpbmRvdykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBiZSBpbiB0aGUgZm9ybWF0IGBgaGgyNDptaS1oaDI0Om1pYGAuXG4gKiAgICsgIE11c3QgYmUgaW4gVW5pdmVyc2FsIENvb3JkaW5hdGVkIFRpbWUgKFVUQykuXG4gKiAgICsgIE11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIHByZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKiAgICsgIE11c3QgYmUgYXQgbGVhc3QgMzAgbWludXRlcy5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblByZWZlcnJlZEJhY2t1cFdpbmRvdz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmV0d29yayB0eXBlIG9mIHRoZSBEQiBjbHVzdGVyLlxuICogIFZhbGlkIHZhbHVlczpcbiAqICAgKyAgIGBgSVBWNGBgIFxuICogICArICAgYGBEVUFMYGAgXG4gKiAgIFxuICogIFRoZSBuZXR3b3JrIHR5cGUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYGBEQlN1Ym5ldEdyb3VwYGAgc3BlY2lmaWVkIGZvciB0aGUgREIgY2x1c3Rlci4gQSBgYERCU3VibmV0R3JvdXBgYCBjYW4gc3VwcG9ydCBvbmx5IHRoZSBJUHY0IHByb3RvY29sIG9yIHRoZSBJUHY0IGFuZCBJUHY2IHByb3RvY29scyAoYGBEVUFMYGApLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1dvcmtpbmcgd2l0aCBhIERCIGluc3RhbmNlIGluIGEgVlBDXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9WUEMuV29ya2luZ1dpdGhSRFNJbnN0YW5jZWluYVZQQy5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZS4qIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuTmV0d29ya1R5cGU/OiBzdHJpbmdcbi8qKlxuICogQSBsaXN0IG9mIEVDMiBWUEMgc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgREIgY2x1c3Rlci5cbiAqICBJZiB5b3UgcGxhbiB0byB1cGRhdGUgdGhlIHJlc291cmNlLCBkb24ndCBzcGVjaWZ5IFZQQyBzZWN1cml0eSBncm91cHMgaW4gYSBzaGFyZWQgVlBDLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5WcGNTZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW11cbi8qKlxuICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIGNvcHkgYWxsIHRhZ3MgZnJvbSB0aGUgREIgY2x1c3RlciB0byBzbmFwc2hvdHMgb2YgdGhlIERCIGNsdXN0ZXIuIFRoZSBkZWZhdWx0IGlzIG5vdCB0byBjb3B5IHRoZW0uXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkNvcHlUYWdzVG9TbmFwc2hvdD86IGJvb2xlYW5cbi8qKlxuICogSWYgeW91IGFyZSBjb25maWd1cmluZyBhbiBBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIgYW5kIHdhbnQgeW91ciBBdXJvcmEgREIgY2x1c3RlciB0byBiZSBhIHNlY29uZGFyeSBtZW1iZXIgaW4gdGhlIGdsb2JhbCBkYXRhYmFzZSBjbHVzdGVyLCBzcGVjaWZ5IHRoZSBnbG9iYWwgY2x1c3RlciBJRCBvZiB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIuIFRvIGRlZmluZSB0aGUgcHJpbWFyeSBkYXRhYmFzZSBjbHVzdGVyIG9mIHRoZSBnbG9iYWwgY2x1c3RlciwgdXNlIHRoZSBbQVdTOjpSRFM6Okdsb2JhbENsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yZHMtZ2xvYmFsY2x1c3Rlci5odG1sKSByZXNvdXJjZS4gXG4gKiAgIElmIHlvdSBhcmVuJ3QgY29uZmlndXJpbmcgYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3RlciwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBcbiAqICAgVG8gcmVtb3ZlIHRoZSBEQiBjbHVzdGVyIGZyb20gYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3Rlciwgc3BlY2lmeSBhbiBlbXB0eSB2YWx1ZSBmb3IgdGhlIGBgR2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eS5cbiAqICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEF1cm9yYSBnbG9iYWwgZGF0YWJhc2VzLCBzZWUgW1dvcmtpbmcgd2l0aCBBbWF6b24gQXVyb3JhIEdsb2JhbCBEYXRhYmFzZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtZ2xvYmFsLWRhdGFiYXNlLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc3RvcmUgdG8gYmUgcGVyZm9ybWVkLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICogICArICAgYGBmdWxsLWNvcHlgYCAtIFRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGZ1bGwgY29weSBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIuXG4gKiAgICsgICBgYGNvcHktb24td3JpdGVgYCAtIFRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGNsb25lIG9mIHRoZSBzb3VyY2UgREIgY2x1c3Rlci5cbiAqICAgXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBgYFJlc3RvcmVUeXBlYGAgdmFsdWUsIHRoZW4gdGhlIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGFzIGEgZnVsbCBjb3B5IG9mIHRoZSBzb3VyY2UgREIgY2x1c3Rlci5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUmVzdG9yZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBJQU0gcm9sZSB0byB1c2Ugd2hlbiBtYWtpbmcgQVBJIGNhbGxzIHRvIHRoZSBEaXJlY3RvcnkgU2VydmljZS5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkRvbWFpbklBTVJvbGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBsaWZlIGN5Y2xlIHR5cGUgZm9yIHRoaXMgREIgY2x1c3Rlci5cbiAqICAgQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBzZXQgdG8gYGBvcGVuLXNvdXJjZS1yZHMtZXh0ZW5kZWQtc3VwcG9ydGBgLCB3aGljaCBlbnJvbGxzIHlvdXIgREIgY2x1c3RlciBpbnRvIEFtYXpvbiBSRFMgRXh0ZW5kZWQgU3VwcG9ydC4gQXQgdGhlIGVuZCBvZiBzdGFuZGFyZCBzdXBwb3J0LCB5b3UgY2FuIGF2b2lkIGNoYXJnZXMgZm9yIEV4dGVuZGVkIFN1cHBvcnQgYnkgc2V0dGluZyB0aGUgdmFsdWUgdG8gYGBvcGVuLXNvdXJjZS1yZHMtZXh0ZW5kZWQtc3VwcG9ydC1kaXNhYmxlZGBgLiBJbiB0aGlzIGNhc2UsIGNyZWF0aW5nIHRoZSBEQiBjbHVzdGVyIHdpbGwgZmFpbCBpZiB0aGUgREIgbWFqb3IgdmVyc2lvbiBpcyBwYXN0IGl0cyBlbmQgb2Ygc3RhbmRhcmQgc3VwcG9ydCBkYXRlLlxuICogICBZb3UgY2FuIHVzZSB0aGlzIHNldHRpbmcgdG8gZW5yb2xsIHlvdXIgREIgY2x1c3RlciBpbnRvIEFtYXpvbiBSRFMgRXh0ZW5kZWQgU3VwcG9ydC4gV2l0aCBSRFMgRXh0ZW5kZWQgU3VwcG9ydCwgeW91IGNhbiBydW4gdGhlIHNlbGVjdGVkIG1ham9yIGVuZ2luZSB2ZXJzaW9uIG9uIHlvdXIgREIgY2x1c3RlciBwYXN0IHRoZSBlbmQgb2Ygc3RhbmRhcmQgc3VwcG9ydCBmb3IgdGhhdCBlbmdpbmUgdmVyc2lvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOlxuICogICArICBBbWF6b24gQXVyb3JhIChQb3N0Z3JlU1FMIG9ubHkpIC0gW1VzaW5nIEFtYXpvbiBSRFMgRXh0ZW5kZWQgU3VwcG9ydF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2V4dGVuZGVkLXN1cHBvcnQuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqIFxuICogICArICBBbWF6b24gUkRTIC0gW1VzaW5nIEFtYXpvbiBSRFMgRXh0ZW5kZWQgU3VwcG9ydF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL2V4dGVuZGVkLXN1cHBvcnQuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIFxuICogICBcbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiAgVmFsaWQgVmFsdWVzOiBgYG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0IHwgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnQtZGlzYWJsZWRgYCBcbiAqICBEZWZhdWx0OiBgYG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0YGBcbiAqL1xuRW5naW5lTGlmZWN5Y2xlU3VwcG9ydD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgY29tcHV0ZSBhbmQgbWVtb3J5IGNhcGFjaXR5IG9mIGVhY2ggREIgaW5zdGFuY2UgaW4gdGhlIE11bHRpLUFaIERCIGNsdXN0ZXIsIGZvciBleGFtcGxlIGBgZGIubTZnZC54bGFyZ2VgYC4gTm90IGFsbCBEQiBpbnN0YW5jZSBjbGFzc2VzIGFyZSBhdmFpbGFibGUgaW4gYWxsIEFXUy1SZWdpb25zLCBvciBmb3IgYWxsIGRhdGFiYXNlIGVuZ2luZXMuXG4gKiAgRm9yIHRoZSBmdWxsIGxpc3Qgb2YgREIgaW5zdGFuY2UgY2xhc3NlcyBhbmQgYXZhaWxhYmlsaXR5IGZvciB5b3VyIGVuZ2luZSwgc2VlIFtEQiBpbnN0YW5jZSBjbGFzc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NvbmNlcHRzLkRCSW5zdGFuY2VDbGFzcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgVGhpcyBzZXR0aW5nIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICovXG5EQkNsdXN0ZXJJbnN0YW5jZUNsYXNzPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBBdmFpbGFiaWxpdHkgWm9uZXMgKEFacykgd2hlcmUgaW5zdGFuY2VzIGluIHRoZSBEQiBjbHVzdGVyIGNhbiBiZSBjcmVhdGVkLiBGb3IgaW5mb3JtYXRpb24gb24gQVdTIFJlZ2lvbnMgYW5kIEF2YWlsYWJpbGl0eSBab25lcywgc2VlIFtDaG9vc2luZyB0aGUgUmVnaW9ucyBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQ29uY2VwdHMuUmVnaW9uc0FuZEF2YWlsYWJpbGl0eVpvbmVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi4gXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5BdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdXG5EQkNsdXN0ZXJBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIHdlZWtseSB0aW1lIHJhbmdlIGR1cmluZyB3aGljaCBzeXN0ZW0gbWFpbnRlbmFuY2UgY2FuIG9jY3VyLCBpbiBVbml2ZXJzYWwgQ29vcmRpbmF0ZWQgVGltZSAoVVRDKS5cbiAqICBGb3JtYXQ6IGBgZGRkOmhoMjQ6bWktZGRkOmhoMjQ6bWlgYCBcbiAqICBUaGUgZGVmYXVsdCBpcyBhIDMwLW1pbnV0ZSB3aW5kb3cgc2VsZWN0ZWQgYXQgcmFuZG9tIGZyb20gYW4gOC1ob3VyIGJsb2NrIG9mIHRpbWUgZm9yIGVhY2ggQVdTIFJlZ2lvbiwgb2NjdXJyaW5nIG9uIGEgcmFuZG9tIGRheSBvZiB0aGUgd2Vlay4gVG8gc2VlIHRoZSB0aW1lIGJsb2NrcyBhdmFpbGFibGUsIHNlZSBbQWRqdXN0aW5nIHRoZSBQcmVmZXJyZWQgREIgQ2x1c3RlciBNYWludGVuYW5jZSBXaW5kb3ddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX1VwZ3JhZGVEQkluc3RhbmNlLk1haW50ZW5hbmNlLmh0bWwjQWRqdXN0aW5nVGhlTWFpbnRlbmFuY2VXaW5kb3cuQXVyb3JhKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZS4qIFxuICogIFZhbGlkIERheXM6IE1vbiwgVHVlLCBXZWQsIFRodSwgRnJpLCBTYXQsIFN1bi5cbiAqICBDb25zdHJhaW50czogTWluaW11bSAzMC1taW51dGUgd2luZG93LlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5QcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYW1vdW50IG9mIFByb3Zpc2lvbmVkIElPUFMgKGlucHV0L291dHB1dCBvcGVyYXRpb25zIHBlciBzZWNvbmQpIHRvIGJlIGluaXRpYWxseSBhbGxvY2F0ZWQgZm9yIGVhY2ggREIgaW5zdGFuY2UgaW4gdGhlIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHZhbGlkIElPUFMgdmFsdWVzLCBzZWUgW1Byb3Zpc2lvbmVkIElPUFMgc3RvcmFnZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfU3RvcmFnZS5odG1sI1VTRVJfUElPUFMpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKi5cbiAqICBUaGlzIHNldHRpbmcgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBNdWx0aS1BWiBEQiBjbHVzdGVycyBvbmx5XG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgYSBtdWx0aXBsZSBiZXR3ZWVuIC41IGFuZCA1MCBvZiB0aGUgc3RvcmFnZSBhbW91bnQgZm9yIHRoZSBEQiBjbHVzdGVyLlxuICovXG5Jb3BzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBV1MgUmVnaW9uIHdoaWNoIGNvbnRhaW5zIHRoZSBzb3VyY2UgREIgY2x1c3RlciB3aGVuIHJlcGxpY2F0aW5nIGEgREIgY2x1c3Rlci4gRm9yIGV4YW1wbGUsIGBgdXMtZWFzdC0xYGAuIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuU291cmNlUmVnaW9uPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0byByZXN0b3JlIHRoZSBEQiBjbHVzdGVyIHRvIHRoZSBsYXRlc3QgcmVzdG9yYWJsZSBiYWNrdXAgdGltZS4gQnkgZGVmYXVsdCwgdGhlIERCIGNsdXN0ZXIgaXMgbm90IHJlc3RvcmVkIHRvIHRoZSBsYXRlc3QgcmVzdG9yYWJsZSBiYWNrdXAgdGltZS4gXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblVzZUxhdGVzdFJlc3RvcmFibGVUaW1lPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0byBtYW5hZ2UgdGhlIG1hc3RlciB1c2VyIHBhc3N3b3JkIHdpdGggQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQYXNzd29yZCBtYW5hZ2VtZW50IHdpdGggU2VjcmV0cyBNYW5hZ2VyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvcmRzLXNlY3JldHMtbWFuYWdlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSogYW5kIFtQYXNzd29yZCBtYW5hZ2VtZW50IHdpdGggU2VjcmV0cyBNYW5hZ2VyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvcmRzLXNlY3JldHMtbWFuYWdlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZS4qIFxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgQ2FuJ3QgbWFuYWdlIHRoZSBtYXN0ZXIgdXNlciBwYXNzd29yZCB3aXRoIEFXUyBTZWNyZXRzIE1hbmFnZXIgaWYgYGBNYXN0ZXJVc2VyUGFzc3dvcmRgYCBpcyBzcGVjaWZpZWQuXG4gKi9cbk1hbmFnZU1hc3RlclVzZXJQYXNzd29yZD86IGJvb2xlYW5cbi8qKlxuICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSBtYXBwaW5nIG9mIEFXUyBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgYWNjb3VudHMgdG8gZGF0YWJhc2UgYWNjb3VudHMuIEJ5IGRlZmF1bHQsIG1hcHBpbmcgaXMgZGlzYWJsZWQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSUFNIERhdGFiYXNlIEF1dGhlbnRpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVXNpbmdXaXRoUkRTLklBTURCQXV0aC5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZS4qIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5hYmxlSUFNRGF0YWJhc2VBdXRoZW50aWNhdGlvbj86IGJvb2xlYW5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIERCIGNsdXN0ZXIgcGFyYW1ldGVyIGdyb3VwIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgREIgY2x1c3Rlci5cbiAqICAgSWYgeW91IGFwcGx5IGEgcGFyYW1ldGVyIGdyb3VwIHRvIGFuIGV4aXN0aW5nIERCIGNsdXN0ZXIsIHRoZW4gaXRzIERCIGluc3RhbmNlcyBtaWdodCBuZWVkIHRvIHJlYm9vdC4gVGhpcyBjYW4gcmVzdWx0IGluIGFuIG91dGFnZSB3aGlsZSB0aGUgREIgaW5zdGFuY2VzIGFyZSByZWJvb3RpbmcuXG4gKiAgSWYgeW91IGFwcGx5IGEgY2hhbmdlIHRvIHBhcmFtZXRlciBncm91cCBhc3NvY2lhdGVkIHdpdGggYSBzdG9wcGVkIERCIGNsdXN0ZXIsIHRoZW4gdGhlIHVwZGF0ZSBzdGFjayB3YWl0cyB1bnRpbCB0aGUgREIgY2x1c3RlciBpcyBzdGFydGVkLlxuICogICBUbyBsaXN0IGFsbCBvZiB0aGUgYXZhaWxhYmxlIERCIGNsdXN0ZXIgcGFyYW1ldGVyIGdyb3VwIG5hbWVzLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItY2x1c3Rlci1wYXJhbWV0ZXItZ3JvdXBzIC0tcXVlcnkgXCJEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cHNbXS5EQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cE5hbWVcIiAtLW91dHB1dCB0ZXh0YGAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkRCQ2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0byB0dXJuIG9uIFBlcmZvcm1hbmNlIEluc2lnaHRzIGZvciB0aGUgREIgY2x1c3Rlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2luZyBBbWF6b24gUGVyZm9ybWFuY2UgSW5zaWdodHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9VU0VSX1BlcmZJbnNpZ2h0cy5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICovXG5QZXJmb3JtYW5jZUluc2lnaHRzRW5hYmxlZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIGZvciB3aGljaCBhdXRvbWF0ZWQgYmFja3VwcyBhcmUgcmV0YWluZWQuXG4gKiAgRGVmYXVsdDogMVxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IGJlIGEgdmFsdWUgZnJvbSAxIHRvIDM1XG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5CYWNrdXBSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogVGhlIGxpc3Qgb2YgbG9nIHR5cGVzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciBleHBvcnRpbmcgdG8gQ2xvdWRXYXRjaCBMb2dzLiBUaGUgdmFsdWVzIGluIHRoZSBsaXN0IGRlcGVuZCBvbiB0aGUgREIgZW5naW5lIGJlaW5nIHVzZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1B1Ymxpc2hpbmcgRGF0YWJhc2UgTG9ncyB0byBBbWF6b24gQ2xvdWRXYXRjaCBMb2dzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9Mb2dBY2Nlc3MuaHRtbCNVU0VSX0xvZ0FjY2Vzcy5Qcm9jZWR1cmFsLlVwbG9hZHRvQ2xvdWRXYXRjaCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogICAqQXVyb3JhIE15U1FMKiBcbiAqICBWYWxpZCB2YWx1ZXM6IGBgYXVkaXRgYCwgYGBlcnJvcmBgLCBgYGdlbmVyYWxgYCwgYGBzbG93cXVlcnlgYCBcbiAqICAgKkF1cm9yYSBQb3N0Z3JlU1FMKiBcbiAqICBWYWxpZCB2YWx1ZXM6IGBgcG9zdGdyZXNxbGBgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5FbmFibGVDbG91ZHdhdGNoTG9nc0V4cG9ydHM/OiBzdHJpbmdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludCB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29ubmVjdGlvbiBlbmRwb2ludCBmb3IgdGhlIHByaW1hcnkgaW5zdGFuY2Ugb2YgdGhlIERCIGNsdXN0ZXIuXG4gKi9cbkFkZHJlc3M/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwb3J0IHRoYXQgdGhlIGRhdGFiYXNlIGVuZ2luZSBpcyBsaXN0ZW5pbmcgb24uXG4gKi9cblBvcnQ/OiBzdHJpbmdcbn1cbi8qKlxuICogTWV0YWRhdGEgYXNzaWduZWQgdG8gYW4gQW1hem9uIFJEUyByZXNvdXJjZSBjb25zaXN0aW5nIG9mIGEga2V5LXZhbHVlIHBhaXIuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnZ2luZyBBbWF6b24gUkRTIHJlc291cmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfVGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSogb3IgW1RhZ2dpbmcgQW1hem9uIEF1cm9yYSBhbmQgQW1hem9uIFJEUyByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX1RhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIEEgdmFsdWUgaXMgdGhlIG9wdGlvbmFsIHZhbHVlIG9mIHRoZSB0YWcuIFRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGZyb20gMSB0byAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2FuJ3QgYmUgcHJlZml4ZWQgd2l0aCBgYGF3czpgYCBvciBgYHJkczpgYC4gVGhlIHN0cmluZyBjYW4gb25seSBjb250YWluIG9ubHkgdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGUtc3BhY2UsICdfJywgJy4nLCAnOicsICcvJywgJz0nLCAnKycsICctJywgJ0AnIChKYXZhIHJlZ2V4OiBcIl4oW1xcXFxwe0x9XFxcXHB7Wn1cXFxccHtOfV8uOi89K1xcXFwtQF0qKSRcIikuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIEEga2V5IGlzIHRoZSByZXF1aXJlZCBuYW1lIG9mIHRoZSB0YWcuIFRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGZyb20gMSB0byAxMjggVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2FuJ3QgYmUgcHJlZml4ZWQgd2l0aCBgYGF3czpgYCBvciBgYHJkczpgYC4gVGhlIHN0cmluZyBjYW4gb25seSBjb250YWluIG9ubHkgdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGUtc3BhY2UsICdfJywgJy4nLCAnOicsICcvJywgJz0nLCAnKycsICctJywgJ0AnIChKYXZhIHJlZ2V4OiBcIl4oW1xcXFxwe0x9XFxcXHB7Wn1cXFxccHtOfV8uOi89K1xcXFwtQF0qKSRcIikuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBzY2FsaW5nIGNvbmZpZ3VyYXRpb24gb2YgYW4gQXVyb3JhIFNlcnZlcmxlc3MgVjIgREIgY2x1c3Rlci4gXG4gKiAgVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjIuIEZvciBBdXJvcmEgU2VydmVybGVzcyB2MSwgVXNlIHRoZSBgYFNjYWxpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgU2VydmVybGVzcyB2MiBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVybGVzc1YyU2NhbGluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQXVyb3JhIGNhcGFjaXR5IHVuaXRzIChBQ1VzKSBmb3IgYSBEQiBpbnN0YW5jZSBpbiBhbiBBdXJvcmEgU2VydmVybGVzcyB2MiBjbHVzdGVyLiBZb3UgY2FuIHNwZWNpZnkgQUNVIHZhbHVlcyBpbiBoYWxmLXN0ZXAgaW5jcmVtZW50cywgc3VjaCBhcyA4LCA4LjUsIDksIGFuZCBzbyBvbi4gVGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgeW91IGNhbiB1c2UgaXMgMC41LlxuICovXG5NaW5DYXBhY2l0eT86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgQXVyb3JhIGNhcGFjaXR5IHVuaXRzIChBQ1VzKSBmb3IgYSBEQiBpbnN0YW5jZSBpbiBhbiBBdXJvcmEgU2VydmVybGVzcyB2MiBjbHVzdGVyLiBZb3UgY2FuIHNwZWNpZnkgQUNVIHZhbHVlcyBpbiBoYWxmLXN0ZXAgaW5jcmVtZW50cywgc3VjaCBhcyA0MCwgNDAuNSwgNDEsIGFuZCBzbyBvbi4gVGhlIGxhcmdlc3QgdmFsdWUgdGhhdCB5b3UgY2FuIHVzZSBpcyAxMjguXG4gKiAgVGhlIG1heGltdW0gY2FwYWNpdHkgbXVzdCBiZSBoaWdoZXIgdGhhbiAwLjUgQUNVcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ2hvb3NpbmcgdGhlIG1heGltdW0gQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2FwYWNpdHkgc2V0dGluZyBmb3IgYSBjbHVzdGVyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvYXVyb3JhLXNlcnZlcmxlc3MtdjIuc2V0dGluZy1jYXBhY2l0eS5odG1sI2F1cm9yYS1zZXJ2ZXJsZXNzLXYyLm1heF9jYXBhY2l0eV9jb25zaWRlcmF0aW9ucykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIEF1cm9yYSBhdXRvbWF0aWNhbGx5IHNldHMgY2VydGFpbiBwYXJhbWV0ZXJzIGZvciBBdXJvcmEgU2VydmVybGVzcyBWMiBEQiBpbnN0YW5jZXMgdG8gdmFsdWVzIHRoYXQgZGVwZW5kIG9uIHRoZSBtYXhpbXVtIEFDVSB2YWx1ZSBpbiB0aGUgY2FwYWNpdHkgcmFuZ2UuIFdoZW4geW91IHVwZGF0ZSB0aGUgbWF4aW11bSBjYXBhY2l0eSB2YWx1ZSwgdGhlIGBgUGFyYW1ldGVyQXBwbHlTdGF0dXNgYCB2YWx1ZSBmb3IgdGhlIERCIGluc3RhbmNlIGNoYW5nZXMgdG8gYGBwZW5kaW5nLXJlYm9vdGBgLiBZb3UgY2FuIHVwZGF0ZSB0aGUgcGFyYW1ldGVyIHZhbHVlcyBieSByZWJvb3RpbmcgdGhlIERCIGluc3RhbmNlIGFmdGVyIGNoYW5naW5nIHRoZSBjYXBhY2l0eSByYW5nZS5cbiAqL1xuTWF4Q2FwYWNpdHk/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIHNlY3JldCBtYW5hZ2VkIGJ5IFJEUyBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciB0aGUgbWFzdGVyIHVzZXIgcGFzc3dvcmQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIGFuZCBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RlclVzZXJTZWNyZXQge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHNlY3JldC4gVGhpcyBwYXJhbWV0ZXIgaXMgYSByZXR1cm4gdmFsdWUgdGhhdCB5b3UgY2FuIHJldHJpZXZlIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBpbnRyaW5zaWMgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1JldHVybiB2YWx1ZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yZHMtZGJjbHVzdGVyLmh0bWwjYXdzLXJlc291cmNlLXJkcy1kYmNsdXN0ZXItcmV0dXJuLXZhbHVlcykuXG4gKi9cblNlY3JldEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVdTIEtNUyBrZXkgaWRlbnRpZmllciB0aGF0IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgc2VjcmV0LlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgc2NhbGluZyBjb25maWd1cmF0aW9uIG9mIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIERCIGNsdXN0ZXIuXG4gKiAgVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjEuIEZvciBBdXJvcmEgU2VydmVybGVzcyB2MiwgVXNlIHRoZSBgYFNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgU2VydmVybGVzcyB2MSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHRha2Ugd2hlbiB0aGUgdGltZW91dCBpcyByZWFjaGVkLCBlaXRoZXIgYGBGb3JjZUFwcGx5Q2FwYWNpdHlDaGFuZ2VgYCBvciBgYFJvbGxiYWNrQ2FwYWNpdHlDaGFuZ2VgYC5cbiAqICAgYGBGb3JjZUFwcGx5Q2FwYWNpdHlDaGFuZ2VgYCBzZXRzIHRoZSBjYXBhY2l0eSB0byB0aGUgc3BlY2lmaWVkIHZhbHVlIGFzIHNvb24gYXMgcG9zc2libGUuXG4gKiAgIGBgUm9sbGJhY2tDYXBhY2l0eUNoYW5nZWBgLCB0aGUgZGVmYXVsdCwgaWdub3JlcyB0aGUgY2FwYWNpdHkgY2hhbmdlIGlmIGEgc2NhbGluZyBwb2ludCBpc24ndCBmb3VuZCBpbiB0aGUgdGltZW91dCBwZXJpb2QuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgRm9yY2VBcHBseUNhcGFjaXR5Q2hhbmdlYGAsIGNvbm5lY3Rpb25zIHRoYXQgcHJldmVudCBBdXJvcmEgU2VydmVybGVzcyB2MSBmcm9tIGZpbmRpbmcgYSBzY2FsaW5nIHBvaW50IG1pZ2h0IGJlIGRyb3BwZWQuXG4gKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0F1dG9zY2FsaW5nIGZvciBBdXJvcmEgU2VydmVybGVzcyB2MV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLmhvdy1pdC13b3Jrcy5odG1sI2F1cm9yYS1zZXJ2ZXJsZXNzLmhvdy1pdC13b3Jrcy5hdXRvLXNjYWxpbmcpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqL1xuVGltZW91dEFjdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgQXVyb3JhIFNlcnZlcmxlc3MgdjEgdHJpZXMgdG8gZmluZCBhIHNjYWxpbmcgcG9pbnQgdG8gcGVyZm9ybSBzZWFtbGVzcyBzY2FsaW5nIGJlZm9yZSBlbmZvcmNpbmcgdGhlIHRpbWVvdXQgYWN0aW9uLiBUaGUgZGVmYXVsdCBpcyAzMDAuXG4gKiAgU3BlY2lmeSBhIHZhbHVlIGJldHdlZW4gNjAgYW5kIDYwMCBzZWNvbmRzLlxuICovXG5TZWNvbmRzQmVmb3JlVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaGUgdGltZSwgaW4gc2Vjb25kcywgYmVmb3JlIGFuIEF1cm9yYSBEQiBjbHVzdGVyIGluIGBgc2VydmVybGVzc2BgIG1vZGUgaXMgcGF1c2VkLlxuICogIFNwZWNpZnkgYSB2YWx1ZSBiZXR3ZWVuIDMwMCBhbmQgODYsNDAwIHNlY29uZHMuXG4gKi9cblNlY29uZHNVbnRpbEF1dG9QYXVzZT86IG51bWJlclxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBvciBkaXNhbGxvdyBhdXRvbWF0aWMgcGF1c2UgZm9yIGFuIEF1cm9yYSBEQiBjbHVzdGVyIGluIGBgc2VydmVybGVzc2BgIERCIGVuZ2luZSBtb2RlLiBBIERCIGNsdXN0ZXIgY2FuIGJlIHBhdXNlZCBvbmx5IHdoZW4gaXQncyBpZGxlIChpdCBoYXMgbm8gY29ubmVjdGlvbnMpLlxuICogICBJZiBhIERCIGNsdXN0ZXIgaXMgcGF1c2VkIGZvciBtb3JlIHRoYW4gc2V2ZW4gZGF5cywgdGhlIERCIGNsdXN0ZXIgbWlnaHQgYmUgYmFja2VkIHVwIHdpdGggYSBzbmFwc2hvdC4gSW4gdGhpcyBjYXNlLCB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aGVuIHRoZXJlIGlzIGEgcmVxdWVzdCB0byBjb25uZWN0IHRvIGl0LlxuICovXG5BdXRvUGF1c2U/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtaW5pbXVtIGNhcGFjaXR5IGZvciBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBEQiBlbmdpbmUgbW9kZS5cbiAqICBGb3IgQXVyb3JhIE15U1FMLCB2YWxpZCBjYXBhY2l0eSB2YWx1ZXMgYXJlIGBgMWBgLCBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDEyOGBgLCBhbmQgYGAyNTZgYC5cbiAqICBGb3IgQXVyb3JhIFBvc3RncmVTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAyYGAsIGBgNGBgLCBgYDhgYCwgYGAxNmBgLCBgYDMyYGAsIGBgNjRgYCwgYGAxOTJgYCwgYW5kIGBgMzg0YGAuXG4gKiAgVGhlIG1pbmltdW0gY2FwYWNpdHkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gY2FwYWNpdHkuXG4gKi9cbk1pbkNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBEQiBlbmdpbmUgbW9kZS5cbiAqICBGb3IgQXVyb3JhIE15U1FMLCB2YWxpZCBjYXBhY2l0eSB2YWx1ZXMgYXJlIGBgMWBgLCBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDEyOGBgLCBhbmQgYGAyNTZgYC5cbiAqICBGb3IgQXVyb3JhIFBvc3RncmVTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAyYGAsIGBgNGBgLCBgYDhgYCwgYGAxNmBgLCBgYDMyYGAsIGBgNjRgYCwgYGAxOTJgYCwgYW5kIGBgMzg0YGAuXG4gKiAgVGhlIG1heGltdW0gY2FwYWNpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gY2FwYWNpdHkuXG4gKi9cbk1heENhcGFjaXR5PzogbnVtYmVyXG59XG4vKipcbiAqIFRoaXMgZGF0YSB0eXBlIHJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGNvbm5lY3QgdG8gYW4gQW1hem9uIFJEUyBEQiBpbnN0YW5jZS4gVGhpcyBkYXRhIHR5cGUgaXMgdXNlZCBhcyBhIHJlc3BvbnNlIGVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBhY3Rpb25zOlxuICogICArICAgYGBDcmVhdGVEQkluc3RhbmNlYGAgXG4gKiAgICsgICBgYERlc2NyaWJlREJJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgRGVsZXRlREJJbnN0YW5jZWBgIFxuICogICBcbiAqICBGb3IgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXIgZW5kcG9pbnRzLCBzZWUgYGBEQkNsdXN0ZXJFbmRwb2ludGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWRFbmRwb2ludCB7XG4vKipcbiAqIFRoZSBob3N0IGFkZHJlc3Mgb2YgdGhlIHJlYWRlciBlbmRwb2ludC5cbiAqL1xuQWRkcmVzcz86IHN0cmluZ1xufVxuLyoqXG4gKiBEZXNjcmliZXMgYW4gQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgREIgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEQkNsdXN0ZXJSb2xlIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBJQU0gcm9sZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgREIgY2x1c3Rlci5cbiAqL1xuUm9sZUFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBmZWF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlLiBJQU0gcm9sZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgREIgY2x1c3RlciBncmFudCBwZXJtaXNzaW9uIGZvciB0aGUgREIgY2x1c3RlciB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiBGb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGZlYXR1cmUgbmFtZXMsIHNlZSB0aGUgYGBTdXBwb3J0ZWRGZWF0dXJlTmFtZXNgYCBkZXNjcmlwdGlvbiBpbiBbREJFbmdpbmVWZXJzaW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RCRW5naW5lVmVyc2lvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbkZlYXR1cmVOYW1lPzogc3RyaW5nXG59XG4iXX0=
|
|
@@ -268,16 +268,13 @@ export interface _AWS_RDS_DBINSTANCE {
|
|
|
268
268
|
* + ``CharacterSetName``
|
|
269
269
|
* + ``DBClusterIdentifier``
|
|
270
270
|
* + ``DBName``
|
|
271
|
-
* + ``DeleteAutomatedBackups``
|
|
272
271
|
* + ``KmsKeyId``
|
|
273
272
|
* + ``MasterUsername``
|
|
274
273
|
* + ``MasterUserPassword``
|
|
275
|
-
* + ``PerformanceInsightsKMSKeyId``
|
|
276
|
-
* + ``PerformanceInsightsRetentionPeriod``
|
|
277
274
|
* + ``PromotionTier``
|
|
278
275
|
* + ``SourceDBInstanceIdentifier``
|
|
279
276
|
* + ``SourceRegion``
|
|
280
|
-
* + ``StorageEncrypted`` (for an
|
|
277
|
+
* + ``StorageEncrypted`` (for an unencrypted snapshot)
|
|
281
278
|
* + ``Timezone``
|
|
282
279
|
*
|
|
283
280
|
* *Amazon Aurora*
|