@horietakehiro/aws-cdk-utul 0.41.74 → 0.41.75
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/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.d.ts +3 -0
- package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-cases-field.d.ts +16 -0
- package/lib/types/cfn-resource-types/aws-cases-field.js +1 -1
- package/lib/types/cfn-resource-types/aws-computeoptimizer-automationrule.d.ts +135 -0
- package/lib/types/cfn-resource-types/aws-computeoptimizer-automationrule.js +3 -0
- package/lib/types/cfn-resource-types/aws-customerprofiles-integration.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-customerprofiles-integration.js +1 -1
- package/lib/types/cfn-resource-types/aws-customerprofiles-objecttype.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-customerprofiles-objecttype.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-volume.d.ts +3 -2
- package/lib/types/cfn-resource-types/aws-ec2-volume.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticache-replicationgroup.d.ts +35 -247
- package/lib/types/cfn-resource-types/aws-elasticache-replicationgroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-lambda-capacityprovider.d.ts +23 -34
- package/lib/types/cfn-resource-types/aws-lambda-capacityprovider.js +1 -1
- package/lib/types/cfn-resource-types/aws-opensearchserverless-collectiongroup.d.ts +61 -0
- package/lib/types/cfn-resource-types/aws-opensearchserverless-collectiongroup.js +3 -0
- package/lib/types/cfn-resource-types/aws-opensearchservice-application.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-opensearchservice-application.js +1 -1
- package/lib/types/cfn-resource-types/aws-pcaconnectorscep-connector.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-pcaconnectorscep-connector.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.d.ts +2 -1
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.d.ts +8 -1
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.js +1 -1
- package/lib/types/cfn-resource-types/aws-servicecatalog-launchroleconstraint.d.ts +26 -3
- package/lib/types/cfn-resource-types/aws-servicecatalog-launchroleconstraint.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +4 -0
- package/lib/types/cfn-resource-types.js +31 -27
- package/package.json +1 -1
|
@@ -111,6 +111,9 @@ export interface _AWS_AUTOSCALING_AUTOSCALINGGROUP {
|
|
|
111
111
|
* Enables the monitoring of group metrics of an Auto Scaling group. By default, these metrics are disabled.
|
|
112
112
|
*/
|
|
113
113
|
MetricsCollection?: MetricsCollection[];
|
|
114
|
+
/**
|
|
115
|
+
* The deletion protection setting for the Auto Scaling group.
|
|
116
|
+
*/
|
|
114
117
|
DeletionProtection?: string;
|
|
115
118
|
InstanceMaintenancePolicy?: InstanceMaintenancePolicy;
|
|
116
119
|
/**
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTcGVjaWZ5IGFuIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLiBBbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIHdpbGwgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgQ1BVIHBlcmZvcm1hbmNlIG9mIHRoZSByZWZlcmVuY2VkIGluc3RhbmNlIGZhbWlseSwgcmVnYXJkbGVzcyBvZiBDUFUgbWFudWZhY3R1cmVyIG9yIGFyY2hpdGVjdHVyZSBkaWZmZXJlbmNlcy4gXG4gKiAgIEN1cnJlbnRseSBvbmx5IG9uZSBpbnN0YW5jZSBmYW1pbHkgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgbGlzdC5cbiAqL1xuZXhwb3J0IHR5cGUgUGVyZm9ybWFuY2VGYWN0b3JSZWZlcmVuY2VTZXRSZXF1ZXN0ID0gUGVyZm9ybWFuY2VGYWN0b3JSZWZlcmVuY2VSZXF1ZXN0W11cbi8qKlxuICogVGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIElEcyB0byBsYXVuY2ggaW5zdGFuY2VzIGludG8uXG4gKi9cbmV4cG9ydCB0eXBlIENhcGFjaXR5UmVzZXJ2YXRpb25JZHMgPSBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgZ3JvdXAgQVJOcyBvZiB0aGUgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gdG8gbGF1bmNoIGluc3RhbmNlcyBpbnRvLlxuICovXG5leHBvcnQgdHlwZSBDYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybnMgPSBzdHJpbmdbXVxuXG4vKipcbiAqIFRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZSBkZWZpbmVzIGFuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwLCB3aGljaCBpcyBhIGNvbGxlY3Rpb24gb2YgQW1hem9uIEVDMiBpbnN0YW5jZXMgdGhhdCBhcmUgdHJlYXRlZCBhcyBhIGxvZ2ljYWwgZ3JvdXBpbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiBhdXRvbWF0aWMgc2NhbGluZyBhbmQgbWFuYWdlbWVudC4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcsIHNlZSB0aGUgW0FtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL3doYXQtaXMtYW1hem9uLWVjMi1hdXRvLXNjYWxpbmcuaHRtbCkuIFxuICogICBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBjb25maWd1cmVzIGluc3RhbmNlcyBsYXVuY2hlZCBhcyBwYXJ0IG9mIGFuIEF1dG8gU2NhbGluZyBncm91cCB1c2luZyBlaXRoZXIgYSBbbGF1bmNoIHRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLWxhdW5jaHRlbXBsYXRlLmh0bWwpIG9yIGEgbGF1bmNoIGNvbmZpZ3VyYXRpb24uIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBkbyBub3QgdXNlIGxhdW5jaCBjb25maWd1cmF0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTGF1bmNoIGNvbmZpZ3VyYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9sYXVuY2gtY29uZmlndXJhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBGb3IgaGVscCBtaWdyYXRpbmcgZnJvbSBsYXVuY2ggY29uZmlndXJhdGlvbnMgdG8gbGF1bmNoIHRlbXBsYXRlcywgc2VlIFtNaWdyYXRlIENsb3VkRm9ybWF0aW9uIHN0YWNrcyBmcm9tIGxhdW5jaCBjb25maWd1cmF0aW9ucyB0byBsYXVuY2ggdGVtcGxhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9taWdyYXRlLWxhdW5jaC1jb25maWd1cmF0aW9ucy13aXRoLWNsb3VkZm9ybWF0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BVVRPU0NBTElOR19BVVRPU0NBTElOR0dST1VQIHtcbi8qKlxuICogT25lIG9yIG1vcmUgbGlmZWN5Y2xlIGhvb2tzIHRvIGFkZCB0byB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGJlZm9yZSBpbnN0YW5jZXMgYXJlIGxhdW5jaGVkLlxuICovXG5MaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbkxpc3Q/OiBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbltdXG4vKipcbiAqIEEgbGlzdCBvZiBDbGFzc2ljIExvYWQgQmFsYW5jZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEF1dG8gU2NhbGluZyBncm91cC4gRm9yIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJzLCBOZXR3b3JrIExvYWQgQmFsYW5jZXJzLCBhbmQgR2F0ZXdheSBMb2FkIEJhbGFuY2Vycywgc3BlY2lmeSB0aGUgYGBUYXJnZXRHcm91cEFSTnNgYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICovXG5Mb2FkQmFsYW5jZXJOYW1lcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggY29uZmlndXJhdGlvbiB0byB1c2UgdG8gbGF1bmNoIGluc3RhbmNlcy5cbiAqICBSZXF1aXJlZCBvbmx5IGlmIHlvdSBkb24ndCBzcGVjaWZ5IGBgTGF1bmNoVGVtcGxhdGVgYCwgYGBNaXhlZEluc3RhbmNlc1BvbGljeWBgLCBvciBgYEluc3RhbmNlSWRgYC5cbiAqL1xuTGF1bmNoQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzZXJ2aWNlLWxpbmtlZCByb2xlIHRoYXQgdGhlIEF1dG8gU2NhbGluZyBncm91cCB1c2VzIHRvIGNhbGwgb3RoZXIgQVdTIHNlcnZpY2Ugb24geW91ciBiZWhhbGYuIEJ5IGRlZmF1bHQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHVzZXMgYSBzZXJ2aWNlLWxpbmtlZCByb2xlIG5hbWVkIGBgQVdTU2VydmljZVJvbGVGb3JBdXRvU2NhbGluZ2BgLCB3aGljaCBpdCBjcmVhdGVzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXJ2aWNlLWxpbmtlZCByb2xlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXV0b3NjYWxpbmctc2VydmljZS1saW5rZWQtcm9sZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5TZXJ2aWNlTGlua2VkUm9sZUFSTj86IHN0cmluZ1xuQXZhaWxhYmlsaXR5Wm9uZUltcGFpcm1lbnRQb2xpY3k/OiBBdmFpbGFiaWxpdHlab25lSW1wYWlybWVudFBvbGljeVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWVzIChBUk4pIG9mIHRoZSBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRhcmdldCBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhlIEF1dG8gU2NhbGluZyBncm91cC4gSW5zdGFuY2VzIGFyZSByZWdpc3RlcmVkIGFzIHRhcmdldHMgd2l0aCB0aGUgdGFyZ2V0IGdyb3Vwcy4gVGhlIHRhcmdldCBncm91cHMgcmVjZWl2ZSBpbmNvbWluZyB0cmFmZmljIGFuZCByb3V0ZSByZXF1ZXN0cyB0byBvbmUgb3IgbW9yZSByZWdpc3RlcmVkIHRhcmdldHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzZSBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRvIGRpc3RyaWJ1dGUgdHJhZmZpYyBhY3Jvc3MgdGhlIGluc3RhbmNlcyBpbiB5b3VyIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXV0b3NjYWxpbmctbG9hZC1iYWxhbmNlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5UYXJnZXRHcm91cEFSTnM/OiBzdHJpbmdbXVxuLyoqXG4gKiAqT25seSBuZWVkZWQgaWYgeW91IHVzZSBzaW1wbGUgc2NhbGluZyBwb2xpY2llcy4qIFxuICogIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgYmV0d2VlbiBvbmUgc2NhbGluZyBhY3Rpdml0eSBlbmRpbmcgYW5kIGFub3RoZXIgb25lIHN0YXJ0aW5nIGR1ZSB0byBzaW1wbGUgc2NhbGluZyBwb2xpY2llcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2NhbGluZyBjb29sZG93bnMgZm9yIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLXNjYWxpbmctY29vbGRvd25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogYGAzMDBgYCBzZWNvbmRzXG4gKi9cbkNvb2xkb3duPzogc3RyaW5nXG4vKipcbiAqIENvbmZpZ3VyZXMgYW4gQXV0byBTY2FsaW5nIGdyb3VwIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB3aGVuIHNwZWNpZmllZCBldmVudHMgdGFrZSBwbGFjZS5cbiAqL1xuTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbnM/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIGRlc2lyZWQgY2FwYWNpdHkgaXMgdGhlIGluaXRpYWwgY2FwYWNpdHkgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cCBhdCB0aGUgdGltZSBvZiBpdHMgY3JlYXRpb24gYW5kIHRoZSBjYXBhY2l0eSBpdCBhdHRlbXB0cyB0byBtYWludGFpbi4gSXQgY2FuIHNjYWxlIGJleW9uZCB0aGlzIGNhcGFjaXR5IGlmIHlvdSBjb25maWd1cmUgYXV0b21hdGljIHNjYWxpbmcuXG4gKiAgVGhlIG51bWJlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSBzaXplIG9mIHRoZSBncm91cCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGdyb3VwLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBkZXNpcmVkIGNhcGFjaXR5IHdoZW4gY3JlYXRpbmcgdGhlIHN0YWNrLCB0aGUgZGVmYXVsdCBpcyB0aGUgbWluaW11bSBzaXplIG9mIHRoZSBncm91cC5cbiAqICBDbG91ZEZvcm1hdGlvbiBtYXJrcyB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGFzIHN1Y2Nlc3NmdWwgKGJ5IHNldHRpbmcgaXRzIHN0YXR1cyB0byBDUkVBVEVfQ09NUExFVEUpIHdoZW4gdGhlIGRlc2lyZWQgY2FwYWNpdHkgaXMgcmVhY2hlZC4gSG93ZXZlciwgaWYgYSBtYXhpbXVtIFNwb3QgcHJpY2UgaXMgc2V0IGluIHRoZSBsYXVuY2ggdGVtcGxhdGUgb3IgbGF1bmNoIGNvbmZpZ3VyYXRpb24gdGhhdCB5b3Ugc3BlY2lmaWVkLCB0aGVuIGRlc2lyZWQgY2FwYWNpdHkgaXMgbm90IHVzZWQgYXMgYSBjcml0ZXJpYSBmb3Igc3VjY2Vzcy4gV2hldGhlciB5b3VyIHJlcXVlc3QgaXMgZnVsZmlsbGVkIGRlcGVuZHMgb24gU3BvdCBJbnN0YW5jZSBjYXBhY2l0eSBhbmQgeW91ciBtYXhpbXVtIHByaWNlLlxuICovXG5EZXNpcmVkQ2FwYWNpdHk/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdhaXRzIGJlZm9yZSBjaGVja2luZyB0aGUgaGVhbHRoIHN0YXR1cyBvZiBhbiBFQzIgaW5zdGFuY2UgdGhhdCBoYXMgY29tZSBpbnRvIHNlcnZpY2UgYW5kIG1hcmtpbmcgaXQgdW5oZWFsdGh5IGR1ZSB0byBhIGZhaWxlZCBoZWFsdGggY2hlY2suIFRoaXMgaXMgdXNlZnVsIGlmIHlvdXIgaW5zdGFuY2VzIGRvIG5vdCBpbW1lZGlhdGVseSBwYXNzIHRoZWlyIGhlYWx0aCBjaGVja3MgYWZ0ZXIgdGhleSBlbnRlciB0aGUgYGBJblNlcnZpY2VgYCBzdGF0ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2V0IHRoZSBoZWFsdGggY2hlY2sgZ3JhY2UgcGVyaW9kIGZvciBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2hlYWx0aC1jaGVjay1ncmFjZS1wZXJpb2QuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBEZWZhdWx0OiBgYDBgYCBzZWNvbmRzXG4gKi9cbkhlYWx0aENoZWNrR3JhY2VQZXJpb2Q/OiBudW1iZXJcbkluc3RhbmNlTGlmZWN5Y2xlUG9saWN5PzogSW5zdGFuY2VMaWZlY3ljbGVQb2xpY3lcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB1bnRpbCBhIG5ldyBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmluaXNoZWQgaW5pdGlhbGl6aW5nIGFuZCByZXNvdXJjZSBjb25zdW1wdGlvbiB0byBiZWNvbWUgc3RhYmxlIGFmdGVyIGl0IGVudGVycyB0aGUgYGBJblNlcnZpY2VgYCBzdGF0ZS4gXG4gKiAgRHVyaW5nIGFuIGluc3RhbmNlIHJlZnJlc2gsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdhaXRzIGZvciB0aGUgd2FybS11cCBwZXJpb2QgYWZ0ZXIgaXQgcmVwbGFjZXMgYW4gaW5zdGFuY2UgYmVmb3JlIGl0IG1vdmVzIG9uIHRvIHJlcGxhY2luZyB0aGUgbmV4dCBpbnN0YW5jZS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgYWxzbyB3YWl0cyBmb3IgdGhlIHdhcm0tdXAgcGVyaW9kIGJlZm9yZSBhZ2dyZWdhdGluZyB0aGUgbWV0cmljcyBmb3IgbmV3IGluc3RhbmNlcyB3aXRoIGV4aXN0aW5nIGluc3RhbmNlcyBpbiB0aGUgQW1hem9uIENsb3VkV2F0Y2ggbWV0cmljcyB0aGF0IGFyZSB1c2VkIGZvciBzY2FsaW5nLCByZXN1bHRpbmcgaW4gbW9yZSByZWxpYWJsZSB1c2FnZSBkYXRhLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXQgdGhlIGRlZmF1bHQgaW5zdGFuY2Ugd2FybXVwIGZvciBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctZGVmYXVsdC1pbnN0YW5jZS13YXJtdXAuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICAgVG8gbWFuYWdlIHZhcmlvdXMgd2FybS11cCBzZXR0aW5ncyBhdCB0aGUgZ3JvdXAgbGV2ZWwsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBzZXQgdGhlIGRlZmF1bHQgaW5zdGFuY2Ugd2FybXVwLCAqZXZlbiBpZiBpdCBpcyBzZXQgdG8gMCBzZWNvbmRzKi4gVG8gcmVtb3ZlIGEgdmFsdWUgdGhhdCB5b3UgcHJldmlvdXNseSBzZXQsIGluY2x1ZGUgdGhlIHByb3BlcnR5IGJ1dCBzcGVjaWZ5IGBgLTFgYCBmb3IgdGhlIHZhbHVlLiBIb3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQga2VlcGluZyB0aGUgZGVmYXVsdCBpbnN0YW5jZSB3YXJtdXAgZW5hYmxlZCBieSBzcGVjaWZ5aW5nIGEgdmFsdWUgb2YgYGAwYGAgb3Igb3RoZXIgbm9taW5hbCB2YWx1ZS5cbiAqICAgRGVmYXVsdDogTm9uZVxuICovXG5EZWZhdWx0SW5zdGFuY2VXYXJtdXA/OiBudW1iZXJcblNraXBab25hbFNoaWZ0VmFsaWRhdGlvbj86IGJvb2xlYW5cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgbmV3bHkgbGF1bmNoZWQgaW5zdGFuY2VzIGFyZSBwcm90ZWN0ZWQgZnJvbSB0ZXJtaW5hdGlvbiBieSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aGVuIHNjYWxpbmcgaW4uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHByZXZlbnRpbmcgaW5zdGFuY2VzIGZyb20gdGVybWluYXRpbmcgb24gc2NhbGUgaW4sIHNlZSBbVXNlIGluc3RhbmNlIHNjYWxlLWluIHByb3RlY3Rpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctaW5zdGFuY2UtcHJvdGVjdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5OZXdJbnN0YW5jZXNQcm90ZWN0ZWRGcm9tU2NhbGVJbj86IGJvb2xlYW5cbkxhdW5jaFRlbXBsYXRlPzogTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uXG5NaXhlZEluc3RhbmNlc1BvbGljeT86IE1peGVkSW5zdGFuY2VzUG9saWN5XG4vKipcbiAqIEEgbGlzdCBvZiBzdWJuZXQgSURzIGZvciBhIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKSB3aGVyZSBpbnN0YW5jZXMgaW4gdGhlIEF1dG8gU2NhbGluZyBncm91cCBjYW4gYmUgY3JlYXRlZC5cbiAqICBJZiB0aGlzIHJlc291cmNlIHNwZWNpZmllcyBwdWJsaWMgc3VibmV0cyBhbmQgaXMgYWxzbyBpbiBhIFZQQyB0aGF0IGlzIGRlZmluZWQgaW4gdGhlIHNhbWUgc3RhY2sgdGVtcGxhdGUsIHlvdSBtdXN0IHVzZSB0aGUgW0RlcGVuZHNPbiBhdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtZGVwZW5kc29uLmh0bWwpIHRvIGRlY2xhcmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBbVlBDLWdhdGV3YXkgYXR0YWNobWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cGMtZ2F0ZXdheS1hdHRhY2htZW50Lmh0bWwpLlxuICogICBXaGVuIHlvdSB1cGRhdGUgYGBWUENab25lSWRlbnRpZmllcmBgLCB0aGlzIHJldGFpbnMgdGhlIHNhbWUgQXV0byBTY2FsaW5nIGdyb3VwIGFuZCByZXBsYWNlcyBvbGQgaW5zdGFuY2VzIHdpdGggbmV3IG9uZXMsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHN1Ym5ldHMuIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGhvdyBDbG91ZEZvcm1hdGlvbiBoYW5kbGVzIHRoZXNlIHVwZGF0ZXMgYnkgdXNpbmcgYW4gW1VwZGF0ZVBvbGljeSBhdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtdXBkYXRlcG9saWN5Lmh0bWwpLlxuICogICBSZXF1aXJlZCB0byBsYXVuY2ggaW5zdGFuY2VzIGludG8gYSBub25kZWZhdWx0IFZQQy4gSWYgeW91IHNwZWNpZnkgYGBWUENab25lSWRlbnRpZmllcmBgIHdpdGggYGBBdmFpbGFiaWxpdHlab25lc2BgLCB0aGUgc3VibmV0cyB0aGF0IHlvdSBzcGVjaWZ5IGZvciB0aGlzIHByb3BlcnR5IG11c3QgcmVzaWRlIGluIHRob3NlIEF2YWlsYWJpbGl0eSBab25lcy5cbiAqL1xuVlBDWm9uZUlkZW50aWZpZXI/OiBzdHJpbmdbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSB0YWdzLiBZb3UgY2FuIHRhZyB5b3VyIEF1dG8gU2NhbGluZyBncm91cCBhbmQgcHJvcGFnYXRlIHRoZSB0YWdzIHRvIHRoZSBBbWF6b24gRUMyIGluc3RhbmNlcyBpdCBsYXVuY2hlcy4gVGFncyBhcmUgbm90IHByb3BhZ2F0ZWQgdG8gQW1hem9uIEVCUyB2b2x1bWVzLiBUbyBhZGQgdGFncyB0byBBbWF6b24gRUJTIHZvbHVtZXMsIHNwZWNpZnkgdGhlIHRhZ3MgaW4gYSBsYXVuY2ggdGVtcGxhdGUgYnV0IHVzZSBjYXV0aW9uLiBJZiB0aGUgbGF1bmNoIHRlbXBsYXRlIHNwZWNpZmllcyBhbiBpbnN0YW5jZSB0YWcgd2l0aCBhIGtleSB0aGF0IGlzIGFsc28gc3BlY2lmaWVkIGZvciB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBvdmVycmlkZXMgdGhlIHZhbHVlIG9mIHRoYXQgaW5zdGFuY2UgdGFnIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtUYWcgQXV0byBTY2FsaW5nIGdyb3VwcyBhbmQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLXRhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuVGFncz86IFRhZ1Byb3BlcnR5W11cbi8qKlxuICogUmVzZXJ2ZWQuXG4gKi9cbkNvbnRleHQ/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQ2FwYWNpdHkgUmViYWxhbmNpbmcgaXMgZW5hYmxlZC4gT3RoZXJ3aXNlLCBDYXBhY2l0eSBSZWJhbGFuY2luZyBpcyBkaXNhYmxlZC4gV2hlbiB5b3UgdHVybiBvbiBDYXBhY2l0eSBSZWJhbGFuY2luZywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgYXR0ZW1wdHMgdG8gbGF1bmNoIGEgU3BvdCBJbnN0YW5jZSB3aGVuZXZlciBBbWF6b24gRUMyIG5vdGlmaWVzIHRoYXQgYSBTcG90IEluc3RhbmNlIGlzIGF0IGFuIGVsZXZhdGVkIHJpc2sgb2YgaW50ZXJydXB0aW9uLiBBZnRlciBsYXVuY2hpbmcgYSBuZXcgaW5zdGFuY2UsIGl0IHRoZW4gdGVybWluYXRlcyBhbiBvbGQgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzZSBDYXBhY2l0eSBSZWJhbGFuY2luZyB0byBoYW5kbGUgQW1hem9uIEVDMiBTcG90IEludGVycnVwdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctY2FwYWNpdHktcmViYWxhbmNpbmcuaHRtbCkgaW4gdGhlIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbkNhcGFjaXR5UmViYWxhbmNlPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGluc3RhbmNlIHVzZWQgdG8gYmFzZSB0aGUgbGF1bmNoIGNvbmZpZ3VyYXRpb24gb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZSBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNpbmcgYW4gRUMyIGluc3RhbmNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9jcmVhdGUtYXNnLWZyb20taW5zdGFuY2UuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugc3BlY2lmeSBgYExhdW5jaFRlbXBsYXRlYGAsIGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYCwgb3IgYGBMYXVuY2hDb25maWd1cmF0aW9uTmFtZWBgLCBkb24ndCBzcGVjaWZ5IGBgSW5zdGFuY2VJZGBgLlxuICovXG5JbnN0YW5jZUlkPzogc3RyaW5nXG5BdXRvU2NhbGluZ0dyb3VwQVJOPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBBdmFpbGFiaWxpdHkgWm9uZXMgd2hlcmUgaW5zdGFuY2VzIGluIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgY2FuIGJlIGNyZWF0ZWQuIFVzZWQgZm9yIGxhdW5jaGluZyBpbnRvIHRoZSBkZWZhdWx0IFZQQyBzdWJuZXQgaW4gZWFjaCBBdmFpbGFiaWxpdHkgWm9uZSB3aGVuIG5vdCB1c2luZyB0aGUgYGBWUENab25lSWRlbnRpZmllcmBgIHByb3BlcnR5LCBvciBmb3IgYXR0YWNoaW5nIGEgbmV0d29yayBpbnRlcmZhY2Ugd2hlbiBhbiBleGlzdGluZyBuZXR3b3JrIGludGVyZmFjZSBJRCBpcyBzcGVjaWZpZWQgaW4gYSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW11cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uMVxuQXZhaWxhYmlsaXR5Wm9uZURpc3RyaWJ1dGlvbj86IEF2YWlsYWJpbGl0eVpvbmVEaXN0cmlidXRpb25cbi8qKlxuICogRW5hYmxlcyB0aGUgbW9uaXRvcmluZyBvZiBncm91cCBtZXRyaWNzIG9mIGFuIEF1dG8gU2NhbGluZyBncm91cC4gQnkgZGVmYXVsdCwgdGhlc2UgbWV0cmljcyBhcmUgZGlzYWJsZWQuXG4gKi9cbk1ldHJpY3NDb2xsZWN0aW9uPzogTWV0cmljc0NvbGxlY3Rpb25bXVxuRGVsZXRpb25Qcm90ZWN0aW9uPzogc3RyaW5nXG5JbnN0YW5jZU1haW50ZW5hbmNlUG9saWN5PzogSW5zdGFuY2VNYWludGVuYW5jZVBvbGljeVxuLyoqXG4gKiBUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBncm91cC5cbiAqICAgV2l0aCBhIG1peGVkIGluc3RhbmNlcyBwb2xpY3kgdGhhdCB1c2VzIGluc3RhbmNlIHdlaWdodGluZywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbWF5IG5lZWQgdG8gZ28gYWJvdmUgYGBNYXhTaXplYGAgdG8gbWVldCB5b3VyIGNhcGFjaXR5IHJlcXVpcmVtZW50cy4gSW4gdGhpcyBldmVudCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBuZXZlciBnbyBhYm92ZSBgYE1heFNpemVgYCBieSBtb3JlIHRoYW4geW91ciBsYXJnZXN0IGluc3RhbmNlIHdlaWdodCAod2VpZ2h0cyB0aGF0IGRlZmluZSBob3cgbWFueSB1bml0cyBlYWNoIGluc3RhbmNlIGNvbnRyaWJ1dGVzIHRvIHRoZSBkZXNpcmVkIGNhcGFjaXR5IG9mIHRoZSBncm91cCkuXG4gKi9cbk1heFNpemU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWluaW11bSBzaXplIG9mIHRoZSBncm91cC5cbiAqL1xuTWluU2l6ZTogc3RyaW5nXG4vKipcbiAqIEEgcG9saWN5IG9yIGEgbGlzdCBvZiBwb2xpY2llcyB0aGF0IGFyZSB1c2VkIHRvIHNlbGVjdCB0aGUgaW5zdGFuY2UgdG8gdGVybWluYXRlLiBUaGVzZSBwb2xpY2llcyBhcmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHRoYXQgeW91IGxpc3QgdGhlbS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJlIHRlcm1pbmF0aW9uIHBvbGljaWVzIGZvciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy10ZXJtaW5hdGlvbi1wb2xpY2llcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIHZhbHVlczogYGBEZWZhdWx0YGAgfCBgYEFsbG9jYXRpb25TdHJhdGVneWBgIHwgYGBDbG9zZXN0VG9OZXh0SW5zdGFuY2VIb3VyYGAgfCBgYE5ld2VzdEluc3RhbmNlYGAgfCBgYE9sZGVzdEluc3RhbmNlYGAgfCBgYE9sZGVzdExhdW5jaENvbmZpZ3VyYXRpb25gYCB8IGBgT2xkZXN0TGF1bmNoVGVtcGxhdGVgYCB8IGBgYXJuOmF3czpsYW1iZGE6cmVnaW9uOmFjY291bnQtaWQ6ZnVuY3Rpb246bXktZnVuY3Rpb246bXktYWxpYXNgYFxuICovXG5UZXJtaW5hdGlvblBvbGljaWVzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHBlciBSZWdpb24gcGVyIGFjY291bnQuXG4gKiAgVGhlIG5hbWUgY2FuIGNvbnRhaW4gYW55IEFTQ0lJIGNoYXJhY3RlciAzMyB0byAxMjYgaW5jbHVkaW5nIG1vc3QgcHVuY3R1YXRpb24gY2hhcmFjdGVycywgZGlnaXRzLCBhbmQgdXBwZXIgYW5kIGxvd2VyY2FzZWQgbGV0dGVycy5cbiAqICAgWW91IGNhbm5vdCB1c2UgYSBjb2xvbiAoOikgaW4gdGhlIG5hbWUuXG4gKi9cbkF1dG9TY2FsaW5nR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0cmFmZmljIHNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5UcmFmZmljU291cmNlcz86IFRyYWZmaWNTb3VyY2VJZGVudGlmaWVyW11cbi8qKlxuICogVGhlIHVuaXQgb2YgbWVhc3VyZW1lbnQgZm9yIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIGRlc2lyZWQgY2FwYWNpdHkuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHN1cHBvcnRzIGBgRGVzaXJlZENhcGFjaXR5VHlwZWBgIGZvciBhdHRyaWJ1dGUtYmFzZWQgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gb25seS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ3JlYXRlIGEgbWl4ZWQgaW5zdGFuY2VzIGdyb3VwIHVzaW5nIGF0dHJpYnV0ZS1iYXNlZCBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvY3JlYXRlLW1peGVkLWluc3RhbmNlcy1ncm91cC1hdHRyaWJ1dGUtYmFzZWQtaW5zdGFuY2UtdHlwZS1zZWxlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBCeSBkZWZhdWx0LCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzcGVjaWZpZXMgYGB1bml0c2BgLCB3aGljaCB0cmFuc2xhdGVzIGludG8gbnVtYmVyIG9mIGluc3RhbmNlcy5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgdW5pdHNgYCB8IGBgdmNwdWBgIHwgYGBtZW1vcnktbWliYGBcbiAqL1xuRGVzaXJlZENhcGFjaXR5VHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGxhY2VtZW50IGdyb3VwIGludG8gd2hpY2ggdG8gbGF1bmNoIHlvdXIgaW5zdGFuY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQbGFjZW1lbnQgZ3JvdXBzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvcGxhY2VtZW50LWdyb3Vwcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgIEEgKmNsdXN0ZXIqIHBsYWNlbWVudCBncm91cCBpcyBhIGxvZ2ljYWwgZ3JvdXBpbmcgb2YgaW5zdGFuY2VzIHdpdGhpbiBhIHNpbmdsZSBBdmFpbGFiaWxpdHkgWm9uZS4gWW91IGNhbm5vdCBzcGVjaWZ5IG11bHRpcGxlIEF2YWlsYWJpbGl0eSBab25lcyBhbmQgYSBjbHVzdGVyIHBsYWNlbWVudCBncm91cC5cbiAqL1xuUGxhY2VtZW50R3JvdXA/OiBzdHJpbmdcbkNhcGFjaXR5UmVzZXJ2YXRpb25TcGVjaWZpY2F0aW9uPzogQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb25cbi8qKlxuICogQSBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgc3RyaW5nIG9mIG9uZSBvciBtb3JlIGhlYWx0aCBjaGVjayB0eXBlcy5cbiAqICBUaGUgdmFsaWQgdmFsdWVzIGFyZSBgYEVDMmBgLCBgYEVCU2BgLCBgYEVMQmBgLCBhbmQgYGBWUENfTEFUVElDRWBgLiBgYEVDMmBgIGlzIHRoZSBkZWZhdWx0IGhlYWx0aCBjaGVjayBhbmQgY2Fubm90IGJlIGRpc2FibGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIZWFsdGggY2hlY2tzIGZvciBpbnN0YW5jZXMgaW4gYW4gQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWhlYWx0aC1jaGVja3MuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBPbmx5IHNwZWNpZnkgYGBFQzJgYCBpZiB5b3UgbXVzdCBjbGVhciBhIHZhbHVlIHRoYXQgd2FzIHByZXZpb3VzbHkgc2V0LlxuICovXG5IZWFsdGhDaGVja1R5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgYW4gaW5zdGFuY2UgY2FuIGJlIGluIHNlcnZpY2UuIFRoZSBkZWZhdWx0IGlzIG51bGwuIElmIHNwZWNpZmllZCwgdGhlIHZhbHVlIG11c3QgYmUgZWl0aGVyIDAgb3IgYSBudW1iZXIgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDg2LDQwMCBzZWNvbmRzICgxIGRheSkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1JlcGxhY2UgQXV0byBTY2FsaW5nIGluc3RhbmNlcyBiYXNlZCBvbiBtYXhpbXVtIGluc3RhbmNlIGxpZmV0aW1lXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hc2ctbWF4LWluc3RhbmNlLWxpZmV0aW1lLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbk1heEluc3RhbmNlTGlmZXRpbWU/OiBudW1iZXJcbn1cbi8qKlxuICogYGBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbmBgIHNwZWNpZmllcyBhIGxpZmVjeWNsZSBob29rIGZvciB0aGUgYGBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbkxpc3RgYCBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwpIHJlc291cmNlLiBBIGxpZmVjeWNsZSBob29rIHNwZWNpZmllcyBhY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyBvciB0ZXJtaW5hdGVzIGluc3RhbmNlcy4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGlmZWN5Y2xlIGhvb2tzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9saWZlY3ljbGUtaG9va3MuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi4gWW91IGNhbiBmaW5kIGEgc2FtcGxlIHRlbXBsYXRlIHNuaXBwZXQgaW4gdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWFzLWxpZmVjeWNsZWhvb2suaHRtbCNhd3MtcmVzb3VyY2UtYXMtbGlmZWN5Y2xlaG9vay0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6TGlmZWN5Y2xlSG9va2BgIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUhvb2tTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBob29rLlxuICovXG5MaWZlY3ljbGVIb29rTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSBsaWZlY3ljbGUgdHJhbnNpdGlvbi4gRm9yIEF1dG8gU2NhbGluZyBncm91cHMsIHRoZXJlIGFyZSB0d28gbWFqb3IgbGlmZWN5Y2xlIHRyYW5zaXRpb25zLlxuICogICArICBUbyBjcmVhdGUgYSBsaWZlY3ljbGUgaG9vayBmb3Igc2NhbGUtb3V0IGV2ZW50cywgc3BlY2lmeSBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hJTkdgYC5cbiAqICAgKyAgVG8gY3JlYXRlIGEgbGlmZWN5Y2xlIGhvb2sgZm9yIHNjYWxlLWluIGV2ZW50cywgc3BlY2lmeSBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVElOR2BgLlxuICovXG5MaWZlY3ljbGVUcmFuc2l0aW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIG1heGltdW0gdGltZSwgaW4gc2Vjb25kcywgdGhhdCBjYW4gZWxhcHNlIGJlZm9yZSB0aGUgbGlmZWN5Y2xlIGhvb2sgdGltZXMgb3V0LiBUaGUgcmFuZ2UgaXMgZnJvbSBgYDMwYGAgdG8gYGA3MjAwYGAgc2Vjb25kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAzNjAwYGAgc2Vjb25kcyAoMSBob3VyKS5cbiAqL1xuSGVhcnRiZWF0VGltZW91dD86IG51bWJlclxuLyoqXG4gKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBhbnkgdGltZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIG5vdGlmaWNhdGlvbiB0YXJnZXQuXG4gKi9cbk5vdGlmaWNhdGlvbk1ldGFkYXRhPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhY3Rpb24gdGhlIEF1dG8gU2NhbGluZyBncm91cCB0YWtlcyB3aGVuIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lb3V0IGVsYXBzZXMgb3IgaWYgYW4gdW5leHBlY3RlZCBmYWlsdXJlIG9jY3Vycy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBBQkFORE9OYGAuXG4gKiAgVmFsaWQgdmFsdWVzOiBgYENPTlRJTlVFYGAgfCBgYEFCQU5ET05gYFxuICovXG5EZWZhdWx0UmVzdWx0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgbm90aWZpY2F0aW9uIHRhcmdldCB0aGF0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbmRzIG5vdGlmaWNhdGlvbnMgdG8gd2hlbiBhbiBpbnN0YW5jZSBpcyBpbiBhIHdhaXQgc3RhdGUgZm9yIHRoZSBsaWZlY3ljbGUgaG9vay4gWW91IGNhbiBzcGVjaWZ5IGFuIEFtYXpvbiBTTlMgdG9waWMgb3IgYW4gQW1hem9uIFNRUyBxdWV1ZS5cbiAqL1xuTm90aWZpY2F0aW9uVGFyZ2V0QVJOPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdG8gcHVibGlzaCB0byB0aGUgc3BlY2lmaWVkIG5vdGlmaWNhdGlvbiB0YXJnZXQuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyB0aGlzIHJvbGUsIHNlZSBbUHJlcGFyZSB0byBhZGQgYSBsaWZlY3ljbGUgaG9vayB0byB5b3VyIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvcHJlcGFyZS1mb3ItbGlmZWN5Y2xlLW5vdGlmaWNhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBvbmx5IGlmIHRoZSBub3RpZmljYXRpb24gdGFyZ2V0IGlzIGFuIEFtYXpvbiBTTlMgdG9waWMgb3IgYW4gQW1hem9uIFNRUyBxdWV1ZS5cbiAqL1xuUm9sZUFSTj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgaW1wYWlybWVudCBwb2xpY3kgZm9yIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXZhaWxhYmlsaXR5Wm9uZUltcGFpcm1lbnRQb2xpY3kge1xuLyoqXG4gKiBJZiBgYHRydWVgYCwgZW5hYmxlIHpvbmFsIHNoaWZ0IGZvciB5b3VyIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuWm9uYWxTaGlmdEVuYWJsZWQ6IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBoZWFsdGggY2hlY2sgYmVoYXZpb3IgZm9yIHRoZSBpbXBhaXJlZCBBdmFpbGFiaWxpdHkgWm9uZSBpbiBhbiBhY3RpdmUgem9uYWwgc2hpZnQuIElmIHlvdSBzZWxlY3QgYGBSZXBsYWNlIHVuaGVhbHRoeWBgLCBpbnN0YW5jZXMgdGhhdCBhcHBlYXIgdW5oZWFsdGh5IHdpbGwgYmUgcmVwbGFjZWQgaW4gYWxsIEF2YWlsYWJpbGl0eSBab25lcy4gSWYgeW91IHNlbGVjdCBgYElnbm9yZSB1bmhlYWx0aHlgYCwgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHJlcGxhY2VkIGluIHRoZSBBdmFpbGFiaWxpdHkgWm9uZSB3aXRoIHRoZSBhY3RpdmUgem9uYWwgc2hpZnQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0F1dG8gU2NhbGluZyBncm91cCB6b25hbCBzaGlmdF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy16b25hbC1zaGlmdC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5JbXBhaXJlZFpvbmVIZWFsdGhDaGVja0JlaGF2aW9yOiAoXCJJZ25vcmVVbmhlYWx0aHlcIiB8IFwiUmVwbGFjZVVuaGVhbHRoeVwiKVxufVxuLyoqXG4gKiBBIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyBhbiBBbWF6b24gU05TIG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgYGBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uc2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuXG4gKiAgRm9yIGFuIGV4YW1wbGUgdGVtcGxhdGUgc25pcHBldCwgc2VlIFtDb25maWd1cmUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9xdWlja3JlZi1lYzItYXV0by1zY2FsaW5nLmh0bWwpLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dldCBBbWF6b24gU05TIG5vdGlmaWNhdGlvbnMgd2hlbiB5b3VyIEF1dG8gU2NhbGluZyBncm91cCBzY2FsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL0FTR2V0dGluZ05vdGlmaWNhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU05TIHRvcGljLlxuICovXG5Ub3BpY0FSTjogKHN0cmluZyB8IHN0cmluZ1tdKVxuLyoqXG4gKiBBIGxpc3Qgb2YgZXZlbnQgdHlwZXMgdGhhdCBzZW5kIGEgbm90aWZpY2F0aW9uLiBFdmVudCB0eXBlcyBjYW4gaW5jbHVkZSBhbnkgb2YgdGhlIGZvbGxvd2luZyB0eXBlcy4gXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjpcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSGBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNIX0VSUk9SYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVEVgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFURV9FUlJPUmBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpURVNUX05PVElGSUNBVElPTmBgXG4gKi9cbk5vdGlmaWNhdGlvblR5cGVzPzogc3RyaW5nW11cbn1cbi8qKlxuICogVGhlIGluc3RhbmNlIGxpZmVjeWNsZSBwb2xpY3kgZm9yIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VMaWZlY3ljbGVQb2xpY3kge1xuUmV0ZW50aW9uVHJpZ2dlcnM/OiBSZXRlbnRpb25UcmlnZ2Vyc1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIGluc3RhbmNlIHJldGVudGlvbiBiZWhhdmlvci4gVGhlc2UgdHJpZ2dlcnMgZGV0ZXJtaW5lIHdoZW4gaW5zdGFuY2VzIHNob3VsZCBtb3ZlIHRvIGEgYGBSZXRhaW5lZGBgIHN0YXRlIGluc3RlYWQgb2YgYXV0b21hdGljIHRlcm1pbmF0aW9uLiBUaGlzIGFsbG93cyB5b3UgdG8gbWFpbnRhaW4gY29udHJvbCBvdmVyIGluc3RhbmNlIG1hbmFnZW1lbnQgd2hlbiBsaWZlY3ljbGVzIHRyYW5zaXRpb24gYW5kIG9wZXJhdGlvbnMgZmFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRlbnRpb25UcmlnZ2VycyB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgYWN0aW9uIHdoZW4gYSB0ZXJtaW5hdGlvbiBsaWZlY3ljbGUgaG9vayBpcyBhYmFuZG9uZWQgZHVlIHRvIGZhaWx1cmUsIHRpbWVvdXQsIG9yIGV4cGxpY2l0IGFiYW5kb25tZW50IChjYWxsaW5nIENvbXBsZXRlTGlmZWN5Y2xlQWN0aW9uKS4gXG4gKiAgIFNldCB0byBgYHJldGFpbmBgIHRvIG1vdmUgaW5zdGFuY2VzIHRvIGEgcmV0YWluZWQgc3RhdGUuIFNldCB0byBgYHRlcm1pbmF0ZWBgIGZvciBkZWZhdWx0IHRlcm1pbmF0aW9uIGJlaGF2aW9yLiBcbiAqICAgUmV0YWluZWQgaW5zdGFuY2VzIGRvbid0IGNvdW50IHRvd2FyZCBkZXNpcmVkIGNhcGFjaXR5IGFuZCByZW1haW4gdW50aWwgeW91IGNhbGwgYGBUZXJtaW5hdGVJbnN0YW5jZUluQXV0b1NjYWxpbmdHcm91cGBgLlxuICovXG5UZXJtaW5hdGVIb29rQWJhbmRvbj86IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiB1c2VkIHRvIHNwZWNpZnkgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBhbmQgdmVyc2lvbiB0byB1c2UgdG8gbGF1bmNoIGluc3RhbmNlcy4gWW91IGNhbiBhbHRlcm5hdGl2ZWx5IGFzc29jaWF0ZSBhIGxhdW5jaCB0ZW1wbGF0ZSB0byB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGJ5IHNwZWNpZnlpbmcgYSBgYE1peGVkSW5zdGFuY2VzUG9saWN5YGAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGxhdW5jaCB0ZW1wbGF0ZXMsIHNlZSBbQ3JlYXRlIGEgbGF1bmNoIHRlbXBsYXRlIGZvciBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2NyZWF0ZS1sYXVuY2gtdGVtcGxhdGUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugb21pdCB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYCwgYGBMYXVuY2hDb25maWd1cmF0aW9uTmFtZWBgLCBvciBgYEluc3RhbmNlSWRgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBTcGVjaWZ5aW5nIGBgJExhdGVzdGBgIG9yIGBgJERlZmF1bHRgYCBmb3IgdGhlIHRlbXBsYXRlIHZlcnNpb24gbnVtYmVyIGlzIG5vdCBzdXBwb3J0ZWQuIEhvd2V2ZXIsIHlvdSBjYW4gc3BlY2lmeSBgYExhdGVzdFZlcnNpb25OdW1iZXJgYCBvciBgYERlZmF1bHRWZXJzaW9uTnVtYmVyYGAgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGludHJpbnNpYyBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRm46OkdldEF0dF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvaW50cmluc2ljLWZ1bmN0aW9uLXJlZmVyZW5jZS1nZXRhdHQuaHRtbCkuXG4gKiAgIEZvciBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBmdW5jdGlvbiwgc2VlIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqL1xuVmVyc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogQW4gZW1iZWRkZWQgb2JqZWN0IHRoYXQgc3BlY2lmaWVzIGEgbWl4ZWQgaW5zdGFuY2VzIHBvbGljeS5cbiAqICBUaGUgcG9saWN5IGluY2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBub3Qgb25seSBkZWZpbmUgdGhlIGRpc3RyaWJ1dGlvbiBvZiBPbi1EZW1hbmQgSW5zdGFuY2VzIGFuZCBTcG90IEluc3RhbmNlcywgdGhlIG1heGltdW0gcHJpY2UgdG8gcGF5IGZvciBTcG90IEluc3RhbmNlcyAob3B0aW9uYWwpLCBhbmQgaG93IHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYWxsb2NhdGVzIGluc3RhbmNlIHR5cGVzIHRvIGZ1bGZpbGwgT24tRGVtYW5kIGFuZCBTcG90IGNhcGFjaXRpZXMsIGJ1dCBhbHNvIHRoZSBwcm9wZXJ0aWVzIHRoYXQgc3BlY2lmeSB0aGUgaW5zdGFuY2UgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbuKAlHRoZSBsYXVuY2ggdGVtcGxhdGUgYW5kIGluc3RhbmNlIHR5cGVzLiBUaGUgcG9saWN5IGNhbiBhbHNvIGluY2x1ZGUgYSB3ZWlnaHQgZm9yIGVhY2ggaW5zdGFuY2UgdHlwZSBhbmQgZGlmZmVyZW50IGxhdW5jaCB0ZW1wbGF0ZXMgZm9yIGluZGl2aWR1YWwgaW5zdGFuY2UgdHlwZXMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXV0byBTY2FsaW5nIGdyb3VwcyB3aXRoIG11bHRpcGxlIGluc3RhbmNlIHR5cGVzIGFuZCBwdXJjaGFzZSBvcHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLW1peGVkLWluc3RhbmNlcy1ncm91cHMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaXhlZEluc3RhbmNlc1BvbGljeSB7XG5JbnN0YW5jZXNEaXN0cmlidXRpb24/OiBJbnN0YW5jZXNEaXN0cmlidXRpb25cbkxhdW5jaFRlbXBsYXRlOiBMYXVuY2hUZW1wbGF0ZVxufVxuLyoqXG4gKiBUaGUgaW5zdGFuY2VzIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZXNEaXN0cmlidXRpb24ge1xuLyoqXG4gKiBUaGUgYWxsb2NhdGlvbiBzdHJhdGVneSB0byBhcHBseSB0byB5b3VyIE9uLURlbWFuZCBJbnN0YW5jZXMgd2hlbiB0aGV5IGFyZSBsYXVuY2hlZC4gUG9zc2libGUgaW5zdGFuY2UgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgdGhhdCB5b3Ugc3BlY2lmeS5cbiAqICBUaGUgZm9sbG93aW5nIGxpc3RzIHRoZSB2YWxpZCB2YWx1ZXM6XG4gKiAgICsgbG93ZXN0LXByaWNlIFVzZXMgcHJpY2UgdG8gZGV0ZXJtaW5lIHdoaWNoIGluc3RhbmNlIHR5cGVzIGFyZSB0aGUgaGlnaGVzdCBwcmlvcml0eSwgbGF1bmNoaW5nIHRoZSBsb3dlc3QgcHJpY2VkIGluc3RhbmNlIHR5cGVzIHdpdGhpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSBmaXJzdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgQXV0byBTY2FsaW5nIGdyb3VwcyB0aGF0IHNwZWNpZnkgSW5zdGFuY2VSZXF1aXJlbWVudHMuICsgcHJpb3JpdGl6ZWQgWW91IHNldCB0aGUgb3JkZXIgb2YgaW5zdGFuY2UgdHlwZXMgZm9yIHRoZSBsYXVuY2ggdGVtcGxhdGUgb3ZlcnJpZGVzIGZyb20gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkgKGZyb20gZmlyc3QgdG8gbGFzdCBpbiB0aGUgbGlzdCkuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIHlvdXIgaGlnaGVzdCBwcmlvcml0eSBpbnN0YW5jZSB0eXBlcyBmaXJzdC4gSWYgYWxsIHlvdXIgT24tRGVtYW5kIGNhcGFjaXR5IGNhbm5vdCBiZSBmdWxmaWxsZWQgdXNpbmcgeW91ciBoaWdoZXN0IHByaW9yaXR5IGluc3RhbmNlIHR5cGUsIHRoZW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgdGhlIHJlbWFpbmluZyBjYXBhY2l0eSB1c2luZyB0aGUgc2Vjb25kIHByaW9yaXR5IGluc3RhbmNlIHR5cGUsIGFuZCBzbyBvbi4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgQXV0byBTY2FsaW5nIGdyb3VwcyB0aGF0IGRvbid0IHNwZWNpZnkgSW5zdGFuY2VSZXF1aXJlbWVudHMgYW5kIGNhbm5vdCBiZSB1c2VkIGZvciBncm91cHMgdGhhdCBkby5cbiAqL1xuT25EZW1hbmRBbGxvY2F0aW9uU3RyYXRlZ3k/OiBzdHJpbmdcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAncyBjYXBhY2l0eSB0aGF0IG11c3QgYmUgZnVsZmlsbGVkIGJ5IE9uLURlbWFuZCBJbnN0YW5jZXMuIFRoaXMgYmFzZSBwb3J0aW9uIGlzIGxhdW5jaGVkIGZpcnN0IGFzIHlvdXIgZ3JvdXAgc2NhbGVzLlxuICogIFRoaXMgbnVtYmVyIGhhcyB0aGUgc2FtZSB1bml0IG9mIG1lYXN1cmVtZW50IGFzIHRoZSBncm91cCdzIGRlc2lyZWQgY2FwYWNpdHkuIElmIHlvdSBjaGFuZ2UgdGhlIGRlZmF1bHQgdW5pdCBvZiBtZWFzdXJlbWVudCAobnVtYmVyIG9mIGluc3RhbmNlcykgYnkgc3BlY2lmeWluZyB3ZWlnaHRlZCBjYXBhY2l0eSB2YWx1ZXMgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUgb3ZlcnJpZGVzIGxpc3QsIG9yIGJ5IGNoYW5naW5nIHRoZSBkZWZhdWx0IGRlc2lyZWQgY2FwYWNpdHkgdHlwZSBzZXR0aW5nIG9mIHRoZSBncm91cCwgeW91IG11c3Qgc3BlY2lmeSB0aGlzIG51bWJlciB1c2luZyB0aGUgc2FtZSB1bml0IG9mIG1lYXN1cmVtZW50LlxuICogIERlZmF1bHQ6IDBcbiAqICAgQW4gdXBkYXRlIHRvIHRoaXMgc2V0dGluZyBtZWFucyBhIGdyYWR1YWwgcmVwbGFjZW1lbnQgb2YgaW5zdGFuY2VzIHRvIGFkanVzdCB0aGUgY3VycmVudCBPbi1EZW1hbmQgSW5zdGFuY2UgbGV2ZWxzLiBXaGVuIHJlcGxhY2luZyBpbnN0YW5jZXMsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIG5ldyBpbnN0YW5jZXMgYmVmb3JlIHRlcm1pbmF0aW5nIHRoZSBwcmV2aW91cyBvbmVzLlxuICovXG5PbkRlbWFuZEJhc2VDYXBhY2l0eT86IG51bWJlclxuLyoqXG4gKiBDb250cm9scyB0aGUgcGVyY2VudGFnZXMgb2YgT24tRGVtYW5kIEluc3RhbmNlcyBhbmQgU3BvdCBJbnN0YW5jZXMgZm9yIHlvdXIgYWRkaXRpb25hbCBjYXBhY2l0eSBiZXlvbmQgYGBPbkRlbWFuZEJhc2VDYXBhY2l0eWBgLiBFeHByZXNzZWQgYXMgYSBudW1iZXIgKGZvciBleGFtcGxlLCAyMCBzcGVjaWZpZXMgMjAlIE9uLURlbWFuZCBJbnN0YW5jZXMsIDgwJSBTcG90IEluc3RhbmNlcykuIElmIHNldCB0byAxMDAsIG9ubHkgT24tRGVtYW5kIEluc3RhbmNlcyBhcmUgdXNlZC5cbiAqICBEZWZhdWx0OiAxMDBcbiAqICAgQW4gdXBkYXRlIHRvIHRoaXMgc2V0dGluZyBtZWFucyBhIGdyYWR1YWwgcmVwbGFjZW1lbnQgb2YgaW5zdGFuY2VzIHRvIGFkanVzdCB0aGUgY3VycmVudCBPbi1EZW1hbmQgYW5kIFNwb3QgSW5zdGFuY2UgbGV2ZWxzIGZvciB5b3VyIGFkZGl0aW9uYWwgY2FwYWNpdHkgaGlnaGVyIHRoYW4gdGhlIGJhc2UgY2FwYWNpdHkuIFdoZW4gcmVwbGFjaW5nIGluc3RhbmNlcywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgbmV3IGluc3RhbmNlcyBiZWZvcmUgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIG9uZXMuXG4gKi9cbk9uRGVtYW5kUGVyY2VudGFnZUFib3ZlQmFzZUNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgU3BvdCBJbnN0YW5jZSBwb29scyBhY3Jvc3Mgd2hpY2ggdG8gYWxsb2NhdGUgeW91ciBTcG90IEluc3RhbmNlcy4gVGhlIFNwb3QgcG9vbHMgYXJlIGRldGVybWluZWQgZnJvbSB0aGUgZGlmZmVyZW50IGluc3RhbmNlIHR5cGVzIGluIHRoZSBvdmVycmlkZXMuIFZhbGlkIG9ubHkgd2hlbiB0aGUgYGBTcG90QWxsb2NhdGlvblN0cmF0ZWd5YGAgaXMgYGBsb3dlc3QtcHJpY2VgYC4gVmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgMeKAkzIwLlxuICogIERlZmF1bHQ6IDJcbiAqL1xuU3BvdEluc3RhbmNlUG9vbHM/OiBudW1iZXJcbi8qKlxuICogVGhlIGFsbG9jYXRpb24gc3RyYXRlZ3kgdG8gYXBwbHkgdG8geW91ciBTcG90IEluc3RhbmNlcyB3aGVuIHRoZXkgYXJlIGxhdW5jaGVkLiBQb3NzaWJsZSBpbnN0YW5jZSB0eXBlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbGF1bmNoIHRlbXBsYXRlIG92ZXJyaWRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIHZhbGlkIHZhbHVlczpcbiAqICAgKyBjYXBhY2l0eS1vcHRpbWl6ZWQgUmVxdWVzdHMgU3BvdCBJbnN0YW5jZXMgdXNpbmcgcG9vbHMgdGhhdCBhcmUgb3B0aW1hbGx5IGNob3NlbiBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlIFNwb3QgY2FwYWNpdHkuIFRoaXMgc3RyYXRlZ3kgaGFzIHRoZSBsb3dlc3QgcmlzayBvZiBpbnRlcnJ1cHRpb24uIFRvIGdpdmUgY2VydGFpbiBpbnN0YW5jZSB0eXBlcyBhIGhpZ2hlciBjaGFuY2Ugb2YgbGF1bmNoaW5nIGZpcnN0LCB1c2UgY2FwYWNpdHktb3B0aW1pemVkLXByaW9yaXRpemVkLiArIGNhcGFjaXR5LW9wdGltaXplZC1wcmlvcml0aXplZCBZb3Ugc2V0IHRoZSBvcmRlciBvZiBpbnN0YW5jZSB0eXBlcyBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBwcmlvcml0eSAoZnJvbSBmaXJzdCB0byBsYXN0IGluIHRoZSBsaXN0KS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaG9ub3JzIHRoZSBpbnN0YW5jZSB0eXBlIHByaW9yaXRpZXMgb24gYSBiZXN0IGVmZm9ydCBiYXNpcyBidXQgb3B0aW1pemVzIGZvciBjYXBhY2l0eSBmaXJzdC4gTm90ZSB0aGF0IGlmIHRoZSBPbi1EZW1hbmQgYWxsb2NhdGlvbiBzdHJhdGVneSBpcyBzZXQgdG8gcHJpb3JpdGl6ZWQsIHRoZSBzYW1lIHByaW9yaXR5IGlzIGFwcGxpZWQgd2hlbiBmdWxmaWxsaW5nIE9uLURlbWFuZCBjYXBhY2l0eS4gVGhpcyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgQXV0byBTY2FsaW5nIGdyb3VwcyB0aGF0IHNwZWNpZnkgSW5zdGFuY2VSZXF1aXJlbWVudHMuICsgbG93ZXN0LXByaWNlIFJlcXVlc3RzIFNwb3QgSW5zdGFuY2VzIHVzaW5nIHRoZSBsb3dlc3QgcHJpY2VkIHBvb2xzIHdpdGhpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSwgYWNyb3NzIHRoZSBudW1iZXIgb2YgU3BvdCBwb29scyB0aGF0IHlvdSBzcGVjaWZ5IGZvciB0aGUgU3BvdEluc3RhbmNlUG9vbHMgcHJvcGVydHkuIFRvIGVuc3VyZSB0aGF0IHlvdXIgZGVzaXJlZCBjYXBhY2l0eSBpcyBtZXQsIHlvdSBtaWdodCByZWNlaXZlIFNwb3QgSW5zdGFuY2VzIGZyb20gc2V2ZXJhbCBwb29scy4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSwgYnV0IGl0IG1pZ2h0IGxlYWQgdG8gaGlnaCBpbnRlcnJ1cHRpb24gcmF0ZXMgYmVjYXVzZSB0aGlzIHN0cmF0ZWd5IG9ubHkgY29uc2lkZXJzIGluc3RhbmNlIHByaWNlIGFuZCBub3QgYXZhaWxhYmxlIGNhcGFjaXR5LiArIHByaWNlLWNhcGFjaXR5LW9wdGltaXplZCAocmVjb21tZW5kZWQpIFRoZSBwcmljZSBhbmQgY2FwYWNpdHkgb3B0aW1pemVkIGFsbG9jYXRpb24gc3RyYXRlZ3kgbG9va3MgYXQgYm90aCBwcmljZSBhbmQgY2FwYWNpdHkgdG8gc2VsZWN0IHRoZSBTcG90IEluc3RhbmNlIHBvb2xzIHRoYXQgYXJlIHRoZSBsZWFzdCBsaWtlbHkgdG8gYmUgaW50ZXJydXB0ZWQgYW5kIGhhdmUgdGhlIGxvd2VzdCBwb3NzaWJsZSBwcmljZS5cbiAqL1xuU3BvdEFsbG9jYXRpb25TdHJhdGVneT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBwcmljZSBwZXIgdW5pdCBob3VyIHRoYXQgeW91IGFyZSB3aWxsaW5nIHRvIHBheSBmb3IgYSBTcG90IEluc3RhbmNlLiBJZiB5b3VyIG1heGltdW0gcHJpY2UgaXMgbG93ZXIgdGhhbiB0aGUgU3BvdCBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHR5cGVzIHRoYXQgeW91IHNlbGVjdGVkLCB5b3VyIFNwb3QgSW5zdGFuY2VzIGFyZSBub3QgbGF1bmNoZWQuIFdlIGRvIG5vdCByZWNvbW1lbmQgc3BlY2lmeWluZyBhIG1heGltdW0gcHJpY2UgYmVjYXVzZSBpdCBjYW4gbGVhZCB0byBpbmNyZWFzZWQgaW50ZXJydXB0aW9ucy4gV2hlbiBTcG90IEluc3RhbmNlcyBsYXVuY2gsIHlvdSBwYXkgdGhlIGN1cnJlbnQgU3BvdCBwcmljZS4gVG8gcmVtb3ZlIGEgbWF4aW11bSBwcmljZSB0aGF0IHlvdSBwcmV2aW91c2x5IHNldCwgaW5jbHVkZSB0aGUgcHJvcGVydHkgYnV0IHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBmb3IgdGhlIHZhbHVlLlxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG1heGltdW0gcHJpY2UsIHlvdXIgaW5zdGFuY2VzIHdpbGwgYmUgaW50ZXJydXB0ZWQgbW9yZSBmcmVxdWVudGx5IHRoYW4gaWYgeW91IGRvIG5vdCBzcGVjaWZ5IG9uZS5cbiAqICAgVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMC4wMDFcbiAqL1xuU3BvdE1heFByaWNlPzogc3RyaW5nXG59XG4vKipcbiAqIE9uZSBvciBtb3JlIGxhdW5jaCB0ZW1wbGF0ZXMgYW5kIHRoZSBpbnN0YW5jZSB0eXBlcyAob3ZlcnJpZGVzKSB0aGF0IGFyZSB1c2VkIHRvIGxhdW5jaCBFQzIgaW5zdGFuY2VzIHRvIGZ1bGZpbGwgT24tRGVtYW5kIGFuZCBTcG90IGNhcGFjaXRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGUge1xuTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uOiBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24xXG4vKipcbiAqIEFueSBwcm9wZXJ0aWVzIHRoYXQgeW91IHNwZWNpZnkgb3ZlcnJpZGUgdGhlIHNhbWUgcHJvcGVydGllcyBpbiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5PdmVycmlkZXM/OiBMYXVuY2hUZW1wbGF0ZU92ZXJyaWRlc1tdXG59XG4vKipcbiAqIFRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uMSB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFNwZWNpZnlpbmcgYGAkTGF0ZXN0YGAgb3IgYGAkRGVmYXVsdGBgIGZvciB0aGUgdGVtcGxhdGUgdmVyc2lvbiBudW1iZXIgaXMgbm90IHN1cHBvcnRlZC4gSG93ZXZlciwgeW91IGNhbiBzcGVjaWZ5IGBgTGF0ZXN0VmVyc2lvbk51bWJlcmBgIG9yIGBgRGVmYXVsdFZlcnNpb25OdW1iZXJgYCB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtGbjo6R2V0QXR0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9pbnRyaW5zaWMtZnVuY3Rpb24tcmVmZXJlbmNlLWdldGF0dC5odG1sKS5cbiAqICAgRm9yIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGZ1bmN0aW9uLCBzZWUgdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICovXG5WZXJzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBVc2UgdGhpcyBzdHJ1Y3R1cmUgdG8gbGV0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGRvIHRoZSBmb2xsb3dpbmcgd2hlbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGhhcyBhIG1peGVkIGluc3RhbmNlcyBwb2xpY3k6XG4gKiAgICsgIE92ZXJyaWRlIHRoZSBpbnN0YW5jZSB0eXBlIHRoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgICsgIFVzZSBtdWx0aXBsZSBpbnN0YW5jZSB0eXBlcy5cbiAqICAgXG4gKiAgU3BlY2lmeSB0aGUgaW5zdGFuY2UgdHlwZXMgdGhhdCB5b3Ugd2FudCwgb3IgZGVmaW5lIHlvdXIgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIGluc3RlYWQgYW5kIGxldCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBwcm92aXNpb24gdGhlIGF2YWlsYWJsZSBpbnN0YW5jZSB0eXBlcyB0aGF0IG1lZXQgeW91ciByZXF1aXJlbWVudHMuIFRoaXMgY2FuIHByb3ZpZGUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2l0aCBhIGxhcmdlciBzZWxlY3Rpb24gb2YgaW5zdGFuY2UgdHlwZXMgdG8gY2hvb3NlIGZyb20gd2hlbiBmdWxmaWxsaW5nIFNwb3QgYW5kIE9uLURlbWFuZCBjYXBhY2l0aWVzLiBZb3UgY2FuIHZpZXcgd2hpY2ggaW5zdGFuY2UgdHlwZXMgYXJlIG1hdGNoZWQgYmVmb3JlIHlvdSBhcHBseSB0aGUgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIHRvIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwLlxuICogIEFmdGVyIHlvdSBkZWZpbmUgeW91ciBpbnN0YW5jZSByZXF1aXJlbWVudHMsIHlvdSBkb24ndCBoYXZlIHRvIGtlZXAgdXBkYXRpbmcgdGhlc2Ugc2V0dGluZ3MgdG8gZ2V0IG5ldyBFQzIgaW5zdGFuY2UgdHlwZXMgYXV0b21hdGljYWxseS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgdXNlcyB0aGUgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBuZXcgRUMyIGluc3RhbmNlIHR5cGUgY2FuIGJlIHVzZWQuXG4gKiAgYGBMYXVuY2hUZW1wbGF0ZU92ZXJyaWRlc2BgIGlzIGEgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwIExhdW5jaFRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLWxhdW5jaHRlbXBsYXRlLmh0bWwpIHByb3BlcnR5IHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVPdmVycmlkZXMge1xuTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uPzogTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uMlxuLyoqXG4gKiBJZiB5b3UgcHJvdmlkZSBhIGxpc3Qgb2YgaW5zdGFuY2UgdHlwZXMgdG8gdXNlLCB5b3UgY2FuIHNwZWNpZnkgdGhlIG51bWJlciBvZiBjYXBhY2l0eSB1bml0cyBwcm92aWRlZCBieSBlYWNoIGluc3RhbmNlIHR5cGUgaW4gdGVybXMgb2YgdmlydHVhbCBDUFVzLCBtZW1vcnksIHN0b3JhZ2UsIHRocm91Z2hwdXQsIG9yIG90aGVyIHJlbGF0aXZlIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljLiBXaGVuIGEgU3BvdCBvciBPbi1EZW1hbmQgSW5zdGFuY2UgaXMgbGF1bmNoZWQsIHRoZSBjYXBhY2l0eSB1bml0cyBjb3VudCB0b3dhcmQgdGhlIGRlc2lyZWQgY2FwYWNpdHkuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIGluc3RhbmNlcyB1bnRpbCB0aGUgZGVzaXJlZCBjYXBhY2l0eSBpcyB0b3RhbGx5IGZ1bGZpbGxlZCwgZXZlbiBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gb3ZlcmFnZS4gRm9yIGV4YW1wbGUsIGlmIHRoZXJlIGFyZSB0d28gdW5pdHMgcmVtYWluaW5nIHRvIGZ1bGZpbGwgY2FwYWNpdHksIGFuZCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBjYW4gb25seSBsYXVuY2ggYW4gaW5zdGFuY2Ugd2l0aCBhIGBgV2VpZ2h0ZWRDYXBhY2l0eWBgIG9mIGZpdmUgdW5pdHMsIHRoZSBpbnN0YW5jZSBpcyBsYXVuY2hlZCwgYW5kIHRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIGV4Y2VlZGVkIGJ5IHRocmVlIHVuaXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgaW5zdGFuY2Ugd2VpZ2h0aW5nIGZvciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1taXhlZC1pbnN0YW5jZXMtZ3JvdXBzLWluc3RhbmNlLXdlaWdodGluZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBWYWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAxLTk5OS4gXG4gKiAgSWYgeW91IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYGBXZWlnaHRlZENhcGFjaXR5YGAgZm9yIG9uZSBpbnN0YW5jZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIGBgV2VpZ2h0ZWRDYXBhY2l0eWBgIGZvciBhbGwgb2YgdGhlbS5cbiAqICAgRXZlcnkgQXV0byBTY2FsaW5nIGdyb3VwIGhhcyB0aHJlZSBzaXplIHBhcmFtZXRlcnMgKGBgRGVzaXJlZENhcGFjaXR5YGAsIGBgTWF4U2l6ZWBgLCBhbmQgYGBNaW5TaXplYGApLiBVc3VhbGx5LCB5b3Ugc2V0IHRoZXNlIHNpemVzIGJhc2VkIG9uIGEgc3BlY2lmaWMgbnVtYmVyIG9mIGluc3RhbmNlcy4gSG93ZXZlciwgaWYgeW91IGNvbmZpZ3VyZSBhIG1peGVkIGluc3RhbmNlcyBwb2xpY3kgdGhhdCBkZWZpbmVzIHdlaWdodHMgZm9yIHRoZSBpbnN0YW5jZSB0eXBlcywgeW91IG11c3Qgc3BlY2lmeSB0aGVzZSBzaXplcyB3aXRoIHRoZSBzYW1lIHVuaXRzIHRoYXQgeW91IHVzZSBmb3Igd2VpZ2h0aW5nIGluc3RhbmNlcy5cbiAqL1xuV2VpZ2h0ZWRDYXBhY2l0eT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIHRvIHVzZSBmb3IgaW5zdGFuY2VzIGxhdW5jaGVkIHdpdGggdGhpcyBvdmVycmlkZS4gV2hlbiB1c2luZyBJbnN0YW5jZSBSZWZyZXNoIHdpdGggYGBSZXBsYWNlUm9vdFZvbHVtZWBgIHN0cmF0ZWd5LCB0aGlzIHNwZWNpZmllcyB0aGUgQU1JIGZvciByb290IHZvbHVtZSByZXBsYWNlbWVudCBvcGVyYXRpb25zLiBcbiAqICAgRm9yIGBgUmVwbGFjZVJvb3RWb2x1bWVgYCBvcGVyYXRpb25zOiBcbiAqICAgKyAgQWxsIG92ZXJyaWRlcyBpbiB0aGUgYGBNaXhlZEluc3RhbmNlc1BvbGljeWBgIG11c3Qgc3BlY2lmeSBhbiBJbWFnZUlkXG4gKiAgICsgIFRoZSBBTUkgbXVzdCBjb250YWluIG9ubHkgYSBzaW5nbGUgcm9vdCB2b2x1bWVcbiAqICAgKyAgUm9vdCB2b2x1bWUgcmVwbGFjZW1lbnQgZG9lc24ndCBzdXBwb3J0IG11bHRpLXZvbHVtZSBBTUlzXG4gKi9cbkltYWdlSWQ/OiBzdHJpbmdcbkluc3RhbmNlUmVxdWlyZW1lbnRzPzogSW5zdGFuY2VSZXF1aXJlbWVudHNcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGUsIHN1Y2ggYXMgYGBtMy54bGFyZ2VgYC4gWW91IG11c3Qgc3BlY2lmeSBhbiBpbnN0YW5jZSB0eXBlIHRoYXQgaXMgc3VwcG9ydGVkIGluIHlvdXIgcmVxdWVzdGVkIFJlZ2lvbiBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtJbnN0YW5jZSB0eXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2luc3RhbmNlLXR5cGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBZb3UgY2FuIHNwZWNpZnkgdXAgdG8gNDAgaW5zdGFuY2UgdHlwZXMgcGVyIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuSW5zdGFuY2VUeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIFByb3ZpZGVzIGEgbGF1bmNoIHRlbXBsYXRlIGZvciB0aGUgc3BlY2lmaWVkIGluc3RhbmNlIHR5cGUgb3Igc2V0IG9mIGluc3RhbmNlIHJlcXVpcmVtZW50cy4gRm9yIGV4YW1wbGUsIHNvbWUgaW5zdGFuY2UgdHlwZXMgbWlnaHQgcmVxdWlyZSBhIGxhdW5jaCB0ZW1wbGF0ZSB3aXRoIGEgZGlmZmVyZW50IEFNSS4gSWYgbm90IHByb3ZpZGVkLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB1c2VzIHRoZSBsYXVuY2ggdGVtcGxhdGUgdGhhdCdzIHNwZWNpZmllZCBpbiB0aGUgYGBMYXVuY2hUZW1wbGF0ZWBgIGRlZmluaXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgYSBkaWZmZXJlbnQgbGF1bmNoIHRlbXBsYXRlIGZvciBhbiBpbnN0YW5jZSB0eXBlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLW1peGVkLWluc3RhbmNlcy1ncm91cHMtbGF1bmNoLXRlbXBsYXRlLW92ZXJyaWRlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBcbiAqICBZb3UgY2FuIHNwZWNpZnkgdXAgdG8gMjAgbGF1bmNoIHRlbXBsYXRlcyBwZXIgQXV0byBTY2FsaW5nIGdyb3VwLiBUaGUgbGF1bmNoIHRlbXBsYXRlcyBzcGVjaWZpZWQgaW4gdGhlIG92ZXJyaWRlcyBhbmQgaW4gdGhlIGBgTGF1bmNoVGVtcGxhdGVgYCBkZWZpbml0aW9uIGNvdW50IHRvd2FyZHMgdGhpcyBsaW1pdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24yIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlSURgYCwgYnV0IG5vdCBib3RoLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgU3BlY2lmeWluZyBgYCRMYXRlc3RgYCBvciBgYCREZWZhdWx0YGAgZm9yIHRoZSB0ZW1wbGF0ZSB2ZXJzaW9uIG51bWJlciBpcyBub3Qgc3VwcG9ydGVkLiBIb3dldmVyLCB5b3UgY2FuIHNwZWNpZnkgYGBMYXRlc3RWZXJzaW9uTnVtYmVyYGAgb3IgYGBEZWZhdWx0VmVyc2lvbk51bWJlcmBgIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBpbnRyaW5zaWMgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0ZuOjpHZXRBdHRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2ludHJpbnNpYy1mdW5jdGlvbi1yZWZlcmVuY2UtZ2V0YXR0Lmh0bWwpLlxuICogICBGb3IgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgZnVuY3Rpb24sIHNlZSB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sI2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UuXG4gKi9cblZlcnNpb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBgYExhdW5jaFRlbXBsYXRlSURgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCwgYnV0IG5vdCBib3RoLlxuICovXG5MYXVuY2hUZW1wbGF0ZUlkPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBpbnN0YW5jZSByZXF1aXJlbWVudHMuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHVzZXMgeW91ciBzcGVjaWZpZWQgcmVxdWlyZW1lbnRzIHRvIGlkZW50aWZ5IGluc3RhbmNlIHR5cGVzLiBUaGVuLCBpdCB1c2VzIHlvdXIgT24tRGVtYW5kIGFuZCBTcG90IGFsbG9jYXRpb24gc3RyYXRlZ2llcyB0byBsYXVuY2ggaW5zdGFuY2VzIGZyb20gdGhlc2UgaW5zdGFuY2UgdHlwZXMuXG4gKiAgWW91IGNhbiBzcGVjaWZ5IHVwIHRvIGZvdXIgc2VwYXJhdGUgc2V0cyBvZiBpbnN0YW5jZSByZXF1aXJlbWVudHMgcGVyIEF1dG8gU2NhbGluZyBncm91cC4gVGhpcyBpcyB1c2VmdWwgZm9yIHByb3Zpc2lvbmluZyBpbnN0YW5jZXMgZnJvbSBkaWZmZXJlbnQgQW1hem9uIE1hY2hpbmUgSW1hZ2VzIChBTUlzKSBpbiB0aGUgc2FtZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIFRvIGRvIHRoaXMsIGNyZWF0ZSB0aGUgQU1JcyBhbmQgY3JlYXRlIGEgbmV3IGxhdW5jaCB0ZW1wbGF0ZSBmb3IgZWFjaCBBTUkuIFRoZW4sIGNyZWF0ZSBhIGNvbXBhdGlibGUgc2V0IG9mIGluc3RhbmNlIHJlcXVpcmVtZW50cyBmb3IgZWFjaCBsYXVuY2ggdGVtcGxhdGUuIFxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEluc3RhbmNlUmVxdWlyZW1lbnRzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgSW5zdGFuY2VUeXBlYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VSZXF1aXJlbWVudHMge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBjdXJyZW50IG9yIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLlxuICogICArICBGb3IgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzLCBzcGVjaWZ5IGBgY3VycmVudGBgLiBUaGUgY3VycmVudCBnZW5lcmF0aW9uIGluY2x1ZGVzIEVDMiBpbnN0YW5jZSB0eXBlcyBjdXJyZW50bHkgcmVjb21tZW5kZWQgZm9yIHVzZS4gVGhpcyB0eXBpY2FsbHkgaW5jbHVkZXMgdGhlIGxhdGVzdCB0d28gdG8gdGhyZWUgZ2VuZXJhdGlvbnMgaW4gZWFjaCBpbnN0YW5jZSBmYW1pbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0luc3RhbmNlIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2UtdHlwZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogICArICBGb3IgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHByZXZpb3VzYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBjdXJyZW50IG9yIHByZXZpb3VzIGdlbmVyYXRpb25cbiAqL1xuSW5zdGFuY2VHZW5lcmF0aW9ucz86IHN0cmluZ1tdXG4vKipcbiAqIExpc3RzIHRoZSBhY2NlbGVyYXRvciB0eXBlcyB0aGF0IG11c3QgYmUgb24gYW4gaW5zdGFuY2UgdHlwZS5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggR1BVIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGdwdWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBGUEdBIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGZwZ2FgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggaW5mZXJlbmNlIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGluZmVyZW5jZWBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgYWNjZWxlcmF0b3IgdHlwZVxuICovXG5BY2NlbGVyYXRvclR5cGVzPzogc3RyaW5nW11cbk1lbW9yeUdpQlBlclZDcHU/OiBNZW1vcnlHaUJQZXJWQ3B1UmVxdWVzdFxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyBtdXN0IGhhdmUgYWNjZWxlcmF0b3JzIGJ5IHNwZWNpZmljIG1hbnVmYWN0dXJlcnMuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBkZXZpY2VzLCBzcGVjaWZ5IGBgbnZpZGlhYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFXUyBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1hem9uLXdlYi1zZXJ2aWNlc2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBYaWxpbnggZGV2aWNlcywgc3BlY2lmeSBgYHhpbGlueGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgbWFudWZhY3R1cmVyXG4gKi9cbkFjY2VsZXJhdG9yTWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG5WQ3B1Q291bnQ6IFZDcHVDb3VudFJlcXVlc3Rcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIGluc3RhbmNlIHN0b3JlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvSW5zdGFuY2VTdG9yYWdlLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBEZWZhdWx0OiBgYGluY2x1ZGVkYGBcbiAqL1xuTG9jYWxTdG9yYWdlPzogc3RyaW5nXG4vKipcbiAqIExpc3RzIHdoaWNoIHNwZWNpZmljIENQVSBtYW51ZmFjdHVyZXJzIHRvIGluY2x1ZGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEludGVsIENQVXMsIHNwZWNpZnkgYGBpbnRlbGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgQ1BVcywgc3BlY2lmeSBgYGFtZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgQ1BVcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQXBwbGUgQ1BVcywgc3BlY2lmeSBgYGFwcGxlYGAuXG4gKiAgIFxuICogICBEb24ndCBjb25mdXNlIHRoZSBDUFUgaGFyZHdhcmUgbWFudWZhY3R1cmVyIHdpdGggdGhlIENQVSBoYXJkd2FyZSBhcmNoaXRlY3R1cmUuIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggYSBjb21wYXRpYmxlIENQVSBhcmNoaXRlY3R1cmUgYmFzZWQgb24gdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIHRoYXQgeW91IHNwZWNpZnkgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUuIFxuICogICBEZWZhdWx0OiBBbnkgbWFudWZhY3R1cmVyXG4gKi9cbkNwdU1hbnVmYWN0dXJlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBiYXJlIG1ldGFsIGluc3RhbmNlIHR5cGVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLlxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CYXJlTWV0YWw/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgbXVzdCBwcm92aWRlIE9uLURlbWFuZCBJbnN0YW5jZSBoaWJlcm5hdGlvbiBzdXBwb3J0LlxuICogIERlZmF1bHQ6IGBgZmFsc2VgYFxuICovXG5SZXF1aXJlSGliZXJuYXRlU3VwcG9ydD86IGJvb2xlYW5cbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBvZiBhbiBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZS4gVGhlIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlIGlzIHRoZSBwcmljZSBvZiB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIHdpdGggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgbm8gY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSBtYXRjaGVzIHlvdXIgYXR0cmlidXRlcywgdGhlbiB0aGUgaWRlbnRpZmllZCBwcmljZSBpcyBmcm9tIGVpdGhlciB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgb3IsIGZhaWxpbmcgdGhhdCwgdGhlIGxvd2VzdCBwcmljZWQgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcy4gV2hlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCB3ZSB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGludGVycHJldHMgYXMgYSBwZXJjZW50YWdlLlxuICogIElmIHlvdSBzZXQgYGBEZXNpcmVkQ2FwYWNpdHlUeXBlYGAgdG8gYGB2Y3B1YGAgb3IgYGBtZW1vcnktbWliYGAsIHRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBpcyBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXIgaW5zdGFuY2UgcHJpY2UuIFxuICogICBPbmx5IG9uZSBvZiBgYFNwb3RNYXhQcmljZVBlcmNlbnRhZ2VPdmVyTG93ZXN0UHJpY2VgYCBvciBgYE1heFNwb3RQcmljZUFzUGVyY2VudGFnZU9mT3B0aW1hbE9uRGVtYW5kUHJpY2VgYCBjYW4gYmUgc3BlY2lmaWVkLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBlaXRoZXIsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqL1xuTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZT86IG51bWJlclxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2UgaGlnaGVyIHRoYW4gYW4gaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UuIFRoZSBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgcHJpY2UgaXMgZnJvbSBlaXRoZXIgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIG9yLCBmYWlsaW5nIHRoYXQsIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc2VsZWN0cyBpbnN0YW5jZSB0eXBlcyB3aXRoIHlvdXIgYXR0cmlidXRlcywgd2Ugd2lsbCBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdob3NlIHByaWNlIGV4Y2VlZHMgeW91ciBzcGVjaWZpZWQgdGhyZXNob2xkLiBcbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgVG8gdHVybiBvZmYgcHJpY2UgcHJvdGVjdGlvbiwgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC4gXG4gKiAgSWYgeW91IHNldCBgYERlc2lyZWRDYXBhY2l0eVR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGFwcGxpZWQgYmFzZWQgb24gdGhlIHBlci12Q1BVIG9yIHBlci1tZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyIGluc3RhbmNlIHByaWNlLiBcbiAqICBEZWZhdWx0OiBgYDIwYGBcbiAqL1xuT25EZW1hbmRNYXhQcmljZVBlcmNlbnRhZ2VPdmVyTG93ZXN0UHJpY2U/OiBudW1iZXJcbk1lbW9yeU1pQjogTWVtb3J5TWlCUmVxdWVzdFxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgbG9jYWwgc3RvcmFnZSB0aGF0IGlzIHJlcXVpcmVkLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBoYXJkIGRpc2sgZHJpdmUgKEhERCkgc3RvcmFnZSwgc3BlY2lmeSBgYGhkZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBzb2xpZCBzdGF0ZSBkcml2ZSAoU1NEKSBzdG9yYWdlLCBzcGVjaWZ5IGBgc3NkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBsb2NhbCBzdG9yYWdlIHR5cGVcbiAqL1xuTG9jYWxTdG9yYWdlVHlwZXM/OiBzdHJpbmdbXVxuTmV0d29ya0ludGVyZmFjZUNvdW50PzogTmV0d29ya0ludGVyZmFjZUNvdW50UmVxdWVzdFxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZS4gWW91IGNhbiB1c2Ugc3RyaW5ncyB3aXRoIG9uZSBvciBtb3JlIHdpbGQgY2FyZHMsIHJlcHJlc2VudGVkIGJ5IGFuIGFzdGVyaXNrIChgYCpgYCksIHRvIGV4Y2x1ZGUgYW4gaW5zdGFuY2UgZmFtaWx5LCB0eXBlLCBzaXplLCBvciBnZW5lcmF0aW9uLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczogYGBtNS44eGxhcmdlYGAsIGBgYzUqLipgYCwgYGBtNWEuKmBgLCBgYHIqYGAsIGBgKjMqYGAuIFxuICogIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSBgYGM1KmBgLCB5b3UgYXJlIGV4Y2x1ZGluZyB0aGUgZW50aXJlIEM1IGluc3RhbmNlIGZhbWlseSwgd2hpY2ggaW5jbHVkZXMgYWxsIEM1YSBhbmQgQzVuIGluc3RhbmNlIHR5cGVzLiBJZiB5b3Ugc3BlY2lmeSBgYG01YS4qYGAsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgZXhjbHVkZSBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IE5vIGV4Y2x1ZGVkIGluc3RhbmNlIHR5cGVzXG4gKi9cbkV4Y2x1ZGVkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBhcHBseSB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFnYWluc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgWW91IGNhbiB1c2Ugc3RyaW5ncyB3aXRoIG9uZSBvciBtb3JlIHdpbGQgY2FyZHMsIHJlcHJlc2VudGVkIGJ5IGFuIGFzdGVyaXNrIChgYCpgYCksIHRvIGFsbG93IGFuIGluc3RhbmNlIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC5cbiAqICBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYGBjNSpgYCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBhbGxvdyB0aGUgZW50aXJlIEM1IGluc3RhbmNlIGZhbWlseSwgd2hpY2ggaW5jbHVkZXMgYWxsIEM1YSBhbmQgQzVuIGluc3RhbmNlIHR5cGVzLiBJZiB5b3Ugc3BlY2lmeSBgYG01YS4qYGAsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgYWxsb3cgYWxsIHRoZSBNNWEgaW5zdGFuY2UgdHlwZXMsIGJ1dCBub3QgdGhlIE01biBpbnN0YW5jZSB0eXBlcy5cbiAqICAgSWYgeW91IHNwZWNpZnkgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLlxuICogICBEZWZhdWx0OiBBbGwgaW5zdGFuY2UgdHlwZXNcbiAqL1xuQWxsb3dlZEluc3RhbmNlVHlwZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JDb3VudD86IEFjY2VsZXJhdG9yQ291bnRSZXF1ZXN0XG5OZXR3b3JrQmFuZHdpZHRoR2Jwcz86IE5ldHdvcmtCYW5kd2lkdGhHYnBzUmVxdWVzdFxuQmFzZWxpbmVQZXJmb3JtYW5jZUZhY3RvcnM/OiBCYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9yc1JlcXVlc3RcbkJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwcz86IEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwc1JlcXVlc3Rcbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIFNwb3QgcHJpY2UuIFRoZSBpZGVudGlmaWVkIFNwb3QgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gZWl0aGVyIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBvciwgZmFpbGluZyB0aGF0LCB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIHdlIHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuIFxuICogIElmIHlvdSBzZXQgYGBEZXNpcmVkQ2FwYWNpdHlUeXBlYGAgdG8gYGB2Y3B1YGAgb3IgYGBtZW1vcnktbWliYGAsIHRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBpcyBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXIgaW5zdGFuY2UgcHJpY2UuIFxuICogICBPbmx5IG9uZSBvZiBgYFNwb3RNYXhQcmljZVBlcmNlbnRhZ2VPdmVyTG93ZXN0UHJpY2VgYCBvciBgYE1heFNwb3RQcmljZUFzUGVyY2VudGFnZU9mT3B0aW1hbE9uRGVtYW5kUHJpY2VgYCBjYW4gYmUgc3BlY2lmaWVkLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBlaXRoZXIsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqL1xuU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuLyoqXG4gKiBMaXN0cyB0aGUgYWNjZWxlcmF0b3JzIHRoYXQgbXVzdCBiZSBvbiBhbiBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwMCBHUFVzLCBzcGVjaWZ5IGBgYTEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVjEwMCBHUFVzLCBzcGVjaWZ5IGBgdjEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSzgwIEdQVXMsIHNwZWNpZnkgYGBrODBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFQ0IEdQVXMsIHNwZWNpZnkgYGB0NGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgTTYwIEdQVXMsIHNwZWNpZnkgYGBtNjBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQU1EIFJhZGVvbiBQcm8gVjUyMCBHUFVzLCBzcGVjaWZ5IGBgcmFkZW9uLXByby12NTIwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBWVTlQIEZQR0FzLCBzcGVjaWZ5IGBgdnU5cGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBBbnkgYWNjZWxlcmF0b3JcbiAqL1xuQWNjZWxlcmF0b3JOYW1lcz86IHN0cmluZ1tdXG5BY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCPzogQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlJlcXVlc3Rcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYnVyc3RhYmxlIHBlcmZvcm1hbmNlIGluc3RhbmNlIHR5cGVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtCdXJzdGFibGUgcGVyZm9ybWFuY2UgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvYnVyc3RhYmxlLXBlcmZvcm1hbmNlLWluc3RhbmNlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogYGBleGNsdWRlZGBgXG4gKi9cbkJ1cnN0YWJsZVBlcmZvcm1hbmNlPzogc3RyaW5nXG5Ub3RhbExvY2FsU3RvcmFnZUdCPzogVG90YWxMb2NhbFN0b3JhZ2VHQlJlcXVlc3Rcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSBmb3IgYW4gaW5zdGFuY2UgdHlwZSwgaW4gR2lCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHaUJQZXJWQ3B1UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtZW1vcnkgbWluaW11bSBpbiBHaUIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWVtb3J5IG1heGltdW0gaW4gR2lCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIHZDUFVzIGZvciBhbiBpbnN0YW5jZSB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZDcHVDb3VudFJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdkNQVXMuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdkNQVXMuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBpbnN0YW5jZSBtZW1vcnkgc2l6ZSBmb3IgYW4gaW5zdGFuY2UgdHlwZSwgaW4gTWlCLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeU1pQlJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWVtb3J5IG1pbmltdW0gaW4gTWlCLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1lbW9yeSBtYXhpbXVtIGluIE1pQi5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMgZm9yIGFuIGluc3RhbmNlIHR5cGUuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2VDb3VudFJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG5ldHdvcmsgaW50ZXJmYWNlcy5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBhY2NlbGVyYXRvcnMgKEdQVXMsIEZQR0FzLCBvciBBV1MgSW5mZXJlbnRpYSBjaGlwcykgZm9yIGFuIGluc3RhbmNlIHR5cGUuXG4gKiAgVG8gZXhjbHVkZSBhY2NlbGVyYXRvci1lbmFibGVkIGluc3RhbmNlIHR5cGVzLCBzZXQgYGBNYXhgYCB0byBgYDBgYC5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JDb3VudFJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSB2YWx1ZS5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIHZhbHVlLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBnaWdhYml0cyBwZXIgc2Vjb25kIChHYnBzKS5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0JhbmR3aWR0aEdicHNSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBnaWdhYml0cyBwZXIgc2Vjb25kIChHYnBzKS5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gZ2lnYWJpdHMgcGVyIHNlY29uZCAoR2JwcykuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgYmFzZWxpbmUgcGVyZm9ybWFuY2UgZmFjdG9ycyBmb3IgdGhlIGluc3RhbmNlIHJlcXVpcmVtZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9yc1JlcXVlc3Qge1xuQ3B1PzogQ3B1UGVyZm9ybWFuY2VGYWN0b3JSZXF1ZXN0XG59XG4vKipcbiAqIFRoZSBDUFUgcGVyZm9ybWFuY2UgdG8gY29uc2lkZXIsIHVzaW5nIGFuIGluc3RhbmNlIGZhbWlseSBhcyB0aGUgYmFzZWxpbmUgcmVmZXJlbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENwdVBlcmZvcm1hbmNlRmFjdG9yUmVxdWVzdCB7XG5SZWZlcmVuY2VzPzogUGVyZm9ybWFuY2VGYWN0b3JSZWZlcmVuY2VTZXRSZXF1ZXN0XG59XG4vKipcbiAqIFNwZWNpZnkgYW4gaW5zdGFuY2UgZmFtaWx5IHRvIHVzZSBhcyB0aGUgYmFzZWxpbmUgcmVmZXJlbmNlIGZvciBDUFUgcGVyZm9ybWFuY2UuIEFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IEFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBDUFUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlZmVyZW5jZWQgaW5zdGFuY2UgZmFtaWx5LCByZWdhcmRsZXNzIG9mIENQVSBtYW51ZmFjdHVyZXIgb3IgYXJjaGl0ZWN0dXJlIGRpZmZlcmVuY2VzLiBcbiAqICAgQ3VycmVudGx5IG9ubHkgb25lIGluc3RhbmNlIGZhbWlseSBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBsaXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZvcm1hbmNlRmFjdG9yUmVmZXJlbmNlUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBpbnN0YW5jZSBmYW1pbHkgdG8gdXNlIGFzIGEgYmFzZWxpbmUgcmVmZXJlbmNlLiBcbiAqICAgTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBpbnN0YW5jZSBmYW1pbHkuIFRoZSBpbnN0YW5jZSBmYW1pbHkgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBlcmlvZCAoLikgaW4gdGhlIGluc3RhbmNlIHR5cGUgbmFtZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBpbnN0YW5jZSBgYGM2aS5sYXJnZWBgLCB0aGUgaW5zdGFuY2UgZmFtaWx5IGlzIGBgYzZpYGAsIG5vdCBgYGM2YGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZSBuYW1pbmcgY29udmVudGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L2luc3RhbmNldHlwZXMvaW5zdGFuY2UtdHlwZS1uYW1lcy5odG1sKSBpbiAqQW1hem9uIEVDMiBJbnN0YW5jZSBUeXBlcyouXG4gKiAgIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgdHlwZXMgYXJlICpub3Qgc3VwcG9ydGVkKiBmb3IgcGVyZm9ybWFuY2UgcHJvdGVjdGlvbi5cbiAqICAgKyAgIGBgYzFgYCBcbiAqICAgKyAgIGBgZzN8IGczc2BgIFxuICogICArICAgYGBocGM3Z2BgIFxuICogICArICAgYGBtMXwgbTJgYCBcbiAqICAgKyAgIGBgbWFjMSB8IG1hYzIgfCBtYWMyLW0xdWx0cmEgfCBtYWMyLW0yIHwgbWFjMi1tMnByb2BgIFxuICogICArICAgYGBwM2RuIHwgcDRkIHwgcDVgYCBcbiAqICAgKyAgIGBgdDFgYCBcbiAqICAgKyAgIGBgdS0xMnRiMSB8IHUtMTh0YjEgfCB1LTI0dGIxIHwgdS0zdGIxIHwgdS02dGIxIHwgdS05dGIxIHwgdTdpLTEydGIgfCB1N2luLTE2dGIgfCB1N2luLTI0dGIgfCB1N2luLTMydGJgYCBcbiAqICAgXG4gKiAgSWYgeW91IHBlcmZvcm1hbmNlIHByb3RlY3Rpb24gYnkgc3BlY2lmeWluZyBhIHN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbHksIHRoZSByZXR1cm5lZCBpbnN0YW5jZSB0eXBlcyB3aWxsIGV4Y2x1ZGUgdGhlIHByZWNlZGluZyB1bnN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbGllcy5cbiAqICBJZiB5b3Ugc3BlY2lmeSBhbiB1bnN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbHkgYXMgYSB2YWx1ZSBmb3IgYmFzZWxpbmUgcGVyZm9ybWFuY2UsIHRoZSBBUEkgcmV0dXJucyBhbiBlbXB0eSByZXNwb25zZS5cbiAqL1xuSW5zdGFuY2VGYW1pbHk/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoIHBlcmZvcm1hbmNlIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBNYnBzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUJT4oCTb3B0aW1pemVkIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2Vicy1vcHRpbWl6ZWQuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlbGluZUVic0JhbmR3aWR0aE1icHNSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1pbmltdW0gdmFsdWUgaW4gTWJwcy5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIHZhbHVlIGluIE1icHMuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSB0b3RhbCBtZW1vcnkgc2l6ZSBmb3IgdGhlIGFjY2VsZXJhdG9ycyBvbiBhbiBpbnN0YW5jZSB0eXBlLCBpbiBNaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUJSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1lbW9yeSBtaW5pbXVtIGluIE1pQi5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtZW1vcnkgbWF4aW11bSBpbiBNaUIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSB0b3RhbCBsb2NhbCBzdG9yYWdlIHNpemUgZm9yIGFuIGluc3RhbmNlIHR5cGUsIGluIEdCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3RhbExvY2FsU3RvcmFnZUdCUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIG1pbmltdW0gaW4gR0IuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgc3RvcmFnZSBtYXhpbXVtIGluIEdCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgYSB0YWcgZm9yIHRoZSBgYFRhZ3NgYCBwcm9wZXJ0eSBvZiBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXV0b3NjYWxpbmctdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBZb3UgY2FuIGZpbmQgYSBzYW1wbGUgdGVtcGxhdGUgc25pcHBldCBpbiB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sI2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UuXG4gKiAgQ2xvdWRGb3JtYXRpb24gYWRkcyB0aGUgZm9sbG93aW5nIHRhZ3MgdG8gYWxsIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGFzc29jaWF0ZWQgaW5zdGFuY2VzOiBcbiAqICAgKyAgYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLW5hbWVcbiAqICAgKyAgYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLWlkXG4gKiAgICsgIGF3czpjbG91ZGZvcm1hdGlvbjpsb2dpY2FsLWlkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcGVydHkge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBTZXQgdG8gYGB0cnVlYGAgaWYgeW91IHdhbnQgQ2xvdWRGb3JtYXRpb24gdG8gY29weSB0aGUgdGFnIHRvIEVDMiBpbnN0YW5jZXMgdGhhdCBhcmUgbGF1bmNoZWQgYXMgcGFydCBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBTZXQgdG8gYGBmYWxzZWBgIGlmIHlvdSB3YW50IHRoZSB0YWcgYXR0YWNoZWQgb25seSB0byB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGFuZCBub3QgY29waWVkIHRvIGFueSBpbnN0YW5jZXMgbGF1bmNoZWQgYXMgcGFydCBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5Qcm9wYWdhdGVBdExhdW5jaDogYm9vbGVhblxufVxuLyoqXG4gKiBBIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyBhbiBBbWF6b24gU05TIG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgYGBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uc2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuXG4gKiAgRm9yIGFuIGV4YW1wbGUgdGVtcGxhdGUgc25pcHBldCwgc2VlIFtDb25maWd1cmUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9xdWlja3JlZi1lYzItYXV0by1zY2FsaW5nLmh0bWwpLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dldCBBbWF6b24gU05TIG5vdGlmaWNhdGlvbnMgd2hlbiB5b3VyIEF1dG8gU2NhbGluZyBncm91cCBzY2FsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL0FTR2V0dGluZ05vdGlmaWNhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uMSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNOUyB0b3BpYy5cbiAqL1xuVG9waWNBUk46IChzdHJpbmcgfCBzdHJpbmdbXSlcbi8qKlxuICogQSBsaXN0IG9mIGV2ZW50IHR5cGVzIHRoYXQgc2VuZCBhIG5vdGlmaWNhdGlvbi4gRXZlbnQgdHlwZXMgY2FuIGluY2x1ZGUgYW55IG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMuIFxuICogICpBbGxvd2VkIHZhbHVlcyo6XG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSF9FUlJPUmBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRFYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVEVfRVJST1JgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6VEVTVF9OT1RJRklDQVRJT05gYFxuICovXG5Ob3RpZmljYXRpb25UeXBlcz86IHN0cmluZ1tdXG59XG4vKipcbiAqIFRoZSBFQzIgaW5zdGFuY2UgY2FwYWNpdHkgZGlzdHJpYnV0aW9uIGFjcm9zcyBBdmFpbGFiaWxpdHkgWm9uZXMgZm9yIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXZhaWxhYmlsaXR5Wm9uZURpc3RyaWJ1dGlvbiB7XG4vKipcbiAqIElmIGxhdW5jaGVzIGZhaWwgaW4gYW4gQXZhaWxhYmlsaXR5IFpvbmUsIHRoZSBmb2xsb3dpbmcgc3RyYXRlZ2llcyBhcmUgYXZhaWxhYmxlLiBUaGUgZGVmYXVsdCBpcyBgYGJhbGFuY2VkLWJlc3QtZWZmb3J0YGAuIFxuICogICArICBgYGJhbGFuY2VkLW9ubHlgYCAtIElmIGxhdW5jaGVzIGZhaWwgaW4gYW4gQXZhaWxhYmlsaXR5IFpvbmUsIEF1dG8gU2NhbGluZyB3aWxsIGNvbnRpbnVlIHRvIGF0dGVtcHQgdG8gbGF1bmNoIGluIHRoZSB1bmhlYWx0aHkgem9uZSB0byBwcmVzZXJ2ZSBhIGJhbGFuY2VkIGRpc3RyaWJ1dGlvbi5cbiAqICAgKyAgYGBiYWxhbmNlZC1iZXN0LWVmZm9ydGBgIC0gSWYgbGF1bmNoZXMgZmFpbCBpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSwgQXV0byBTY2FsaW5nIHdpbGwgYXR0ZW1wdCB0byBsYXVuY2ggaW4gYW5vdGhlciBoZWFsdGh5IEF2YWlsYWJpbGl0eSBab25lIGluc3RlYWQuXG4gKi9cbkNhcGFjaXR5RGlzdHJpYnV0aW9uU3RyYXRlZ3k/OiAoXCJiYWxhbmNlZC1iZXN0LWVmZm9ydFwiIHwgXCJiYWxhbmNlZC1vbmx5XCIpXG59XG4vKipcbiAqIGBgTWV0cmljc0NvbGxlY3Rpb25gYCBpcyBhIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UgdGhhdCBkZXNjcmliZXMgdGhlIGdyb3VwIG1ldHJpY3MgdGhhdCBhbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cCBzZW5kcyB0byBBbWF6b24gQ2xvdWRXYXRjaC4gVGhlc2UgbWV0cmljcyBkZXNjcmliZSB0aGUgZ3JvdXAgcmF0aGVyIHRoYW4gYW55IG9mIGl0cyBpbnN0YW5jZXMuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW01vbml0b3IgQ2xvdWRXYXRjaCBtZXRyaWNzIGZvciB5b3VyIEF1dG8gU2NhbGluZyBncm91cHMgYW5kIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXMtaW5zdGFuY2UtbW9uaXRvcmluZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBZb3UgY2FuIGZpbmQgYSBzYW1wbGUgdGVtcGxhdGUgc25pcHBldCBpbiB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sI2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljc0NvbGxlY3Rpb24ge1xuLyoqXG4gKiBJZGVudGlmaWVzIHRoZSBtZXRyaWNzIHRvIGVuYWJsZS5cbiAqICBZb3UgY2FuIHNwZWNpZnkgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBtZXRyaWNzOlxuICogICArICAgYGBHcm91cE1pblNpemVgYCBcbiAqICAgKyAgIGBgR3JvdXBNYXhTaXplYGAgXG4gKiAgICsgICBgYEdyb3VwRGVzaXJlZENhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwSW5TZXJ2aWNlSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwUGVuZGluZ0luc3RhbmNlc2BgIFxuICogICArICAgYGBHcm91cFN0YW5kYnlJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBUZXJtaW5hdGluZ0luc3RhbmNlc2BgIFxuICogICArICAgYGBHcm91cFRvdGFsSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwSW5TZXJ2aWNlQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBQZW5kaW5nQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBTdGFuZGJ5Q2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBUZXJtaW5hdGluZ0NhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwVG90YWxDYXBhY2l0eWBgIFxuICogICArICAgYGBXYXJtUG9vbERlc2lyZWRDYXBhY2l0eWBgIFxuICogICArICAgYGBXYXJtUG9vbFdhcm1lZENhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sUGVuZGluZ0NhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sVGVybWluYXRpbmdDYXBhY2l0eWBgIFxuICogICArICAgYGBXYXJtUG9vbFRvdGFsQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBBbmRXYXJtUG9vbERlc2lyZWRDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cEFuZFdhcm1Qb29sVG90YWxDYXBhY2l0eWBgIFxuICogICBcbiAqICBJZiB5b3Ugc3BlY2lmeSBgYEdyYW51bGFyaXR5YGAgYW5kIGRvbid0IHNwZWNpZnkgYW55IG1ldHJpY3MsIGFsbCBtZXRyaWNzIGFyZSBlbmFibGVkLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBDbG91ZFdhdGNoIG1ldHJpY3MgZm9yIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLW1ldHJpY3MuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuTWV0cmljcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBmcmVxdWVuY3kgYXQgd2hpY2ggQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc2VuZHMgYWdncmVnYXRlZCBkYXRhIHRvIENsb3VkV2F0Y2guIFRoZSBvbmx5IHZhbGlkIHZhbHVlIGlzIGBgMU1pbnV0ZWBgLlxuICovXG5HcmFudWxhcml0eTogc3RyaW5nXG59XG4vKipcbiAqIEFuIGluc3RhbmNlIG1haW50ZW5hbmNlIHBvbGljeS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2V0IGluc3RhbmNlIG1haW50ZW5hbmNlIHBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvZWMyLWF1dG8tc2NhbGluZy1pbnN0YW5jZS1tYWludGVuYW5jZS1wb2xpY3kuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZU1haW50ZW5hbmNlUG9saWN5IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSB1cHBlciB0aHJlc2hvbGQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBkZXNpcmVkIGNhcGFjaXR5IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIEl0IHJlcHJlc2VudHMgdGhlIG1heGltdW0gcGVyY2VudGFnZSBvZiB0aGUgZ3JvdXAgdGhhdCBjYW4gYmUgaW4gc2VydmljZSBhbmQgaGVhbHRoeSwgb3IgcGVuZGluZywgdG8gc3VwcG9ydCB5b3VyIHdvcmtsb2FkIHdoZW4gcmVwbGFjaW5nIGluc3RhbmNlcy4gVmFsdWUgcmFuZ2UgaXMgMTAwIHRvIDIwMC4gVG8gY2xlYXIgYSBwcmV2aW91c2x5IHNldCB2YWx1ZSwgc3BlY2lmeSBhIHZhbHVlIG9mIGBgLTFgYC5cbiAqICBCb3RoIGBgTWluSGVhbHRoeVBlcmNlbnRhZ2VgYCBhbmQgYGBNYXhIZWFsdGh5UGVyY2VudGFnZWBgIG11c3QgYmUgc3BlY2lmaWVkLCBhbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gMTAwLiBBIGxhcmdlIHJhbmdlIGluY3JlYXNlcyB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGNhbiBiZSByZXBsYWNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuICovXG5NYXhIZWFsdGh5UGVyY2VudGFnZT86IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGxvd2VyIHRocmVzaG9sZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGRlc2lyZWQgY2FwYWNpdHkgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gSXQgcmVwcmVzZW50cyB0aGUgbWluaW11bSBwZXJjZW50YWdlIG9mIHRoZSBncm91cCB0byBrZWVwIGluIHNlcnZpY2UsIGhlYWx0aHksIGFuZCByZWFkeSB0byB1c2UgdG8gc3VwcG9ydCB5b3VyIHdvcmtsb2FkIHdoZW4gcmVwbGFjaW5nIGluc3RhbmNlcy4gVmFsdWUgcmFuZ2UgaXMgMCB0byAxMDAuIFRvIGNsZWFyIGEgcHJldmlvdXNseSBzZXQgdmFsdWUsIHNwZWNpZnkgYSB2YWx1ZSBvZiBgYC0xYGAuXG4gKi9cbk1pbkhlYWx0aHlQZXJjZW50YWdlPzogbnVtYmVyXG59XG4vKipcbiAqIElkZW50aWZ5aW5nIGluZm9ybWF0aW9uIGZvciBhIHRyYWZmaWMgc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWZmaWNTb3VyY2VJZGVudGlmaWVyIHtcbi8qKlxuICogUHJvdmlkZXMgYWRkaXRpb25hbCBjb250ZXh0IGZvciB0aGUgdmFsdWUgb2YgYGBJZGVudGlmaWVyYGAuXG4gKiAgVGhlIGZvbGxvd2luZyBsaXN0cyB0aGUgdmFsaWQgdmFsdWVzOlxuICogICArICBgYGVsYmBgIGlmIGBgSWRlbnRpZmllcmBgIGlzIHRoZSBuYW1lIG9mIGEgQ2xhc3NpYyBMb2FkIEJhbGFuY2VyLlxuICogICArICBgYGVsYnYyYGAgaWYgYGBJZGVudGlmaWVyYGAgaXMgdGhlIEFSTiBvZiBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCBHYXRld2F5IExvYWQgQmFsYW5jZXIsIG9yIE5ldHdvcmsgTG9hZCBCYWxhbmNlciB0YXJnZXQgZ3JvdXAuXG4gKiAgICsgIGBgdnBjLWxhdHRpY2VgYCBpZiBgYElkZW50aWZpZXJgYCBpcyB0aGUgQVJOIG9mIGEgVlBDIExhdHRpY2UgdGFyZ2V0IGdyb3VwLlxuICogICBcbiAqICBSZXF1aXJlZCBpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgbmFtZSBvZiBhIENsYXNzaWMgTG9hZCBCYWxhbmNlci5cbiAqL1xuVHlwZTogc3RyaW5nXG4vKipcbiAqIElkZW50aWZpZXMgdGhlIHRyYWZmaWMgc291cmNlLlxuICogIEZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycywgR2F0ZXdheSBMb2FkIEJhbGFuY2VycywgTmV0d29yayBMb2FkIEJhbGFuY2VycywgYW5kIFZQQyBMYXR0aWNlLCB0aGlzIHdpbGwgYmUgdGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciBhIHRhcmdldCBncm91cCBpbiB0aGlzIGFjY291bnQgYW5kIFJlZ2lvbi4gRm9yIENsYXNzaWMgTG9hZCBCYWxhbmNlcnMsIHRoaXMgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgQ2xhc3NpYyBMb2FkIEJhbGFuY2VyIGluIHRoaXMgYWNjb3VudCBhbmQgUmVnaW9uLlxuICogIEZvciBleGFtcGxlOiBcbiAqICAgKyAgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciBBUk46IGBgYXJuOmF3czplbGFzdGljbG9hZGJhbGFuY2luZzp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnRhcmdldGdyb3VwL215LXRhcmdldHMvMTIzNDU2Nzg5MDEyMzQ1NmBgXG4gKiAgICsgIENsYXNzaWMgTG9hZCBCYWxhbmNlciBuYW1lOiBgYG15LWNsYXNzaWMtbG9hZC1iYWxhbmNlcmBgXG4gKiAgICsgIFZQQyBMYXR0aWNlIEFSTjogYGBhcm46YXdzOnZwYy1sYXR0aWNlOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6dGFyZ2V0Z3JvdXAvdGctMTIzNDU2Nzg5MDEyMzQ1NmBgXG4gKiAgIFxuICogIFRvIGdldCB0aGUgQVJOIG9mIGEgdGFyZ2V0IGdyb3VwIGZvciBhIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIsIEdhdGV3YXkgTG9hZCBCYWxhbmNlciwgb3IgTmV0d29yayBMb2FkIEJhbGFuY2VyLCBvciB0aGUgbmFtZSBvZiBhIENsYXNzaWMgTG9hZCBCYWxhbmNlciwgdXNlIHRoZSBFbGFzdGljIExvYWQgQmFsYW5jaW5nIFtEZXNjcmliZVRhcmdldEdyb3Vwc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVGFyZ2V0R3JvdXBzLmh0bWwpIGFuZCBbRGVzY3JpYmVMb2FkQmFsYW5jZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVMb2FkQmFsYW5jZXJzLmh0bWwpIEFQSSBvcGVyYXRpb25zLlxuICogIFRvIGdldCB0aGUgQVJOIG9mIGEgdGFyZ2V0IGdyb3VwIGZvciBWUEMgTGF0dGljZSwgdXNlIHRoZSBWUEMgTGF0dGljZSBbR2V0VGFyZ2V0R3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMtbGF0dGljZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRUYXJnZXRHcm91cC5odG1sKSBBUEkgb3BlcmF0aW9uLlxuICovXG5JZGVudGlmaWVyOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGNhcGFjaXR5IHJlc2VydmF0aW9uIHNwZWNpZmljYXRpb24gZm9yIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgY2FwYWNpdHkgcmVzZXJ2YXRpb24gcHJlZmVyZW5jZS4gVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6IFxuICogICArICBgYGNhcGFjaXR5LXJlc2VydmF0aW9ucy1vbmx5YGAgLSBBdXRvIFNjYWxpbmcgd2lsbCBvbmx5IGxhdW5jaCBpbnN0YW5jZXMgaW50byBhIENhcGFjaXR5IFJlc2VydmF0aW9uIG9yIENhcGFjaXR5IFJlc2VydmF0aW9uIHJlc291cmNlIGdyb3VwLiBJZiBjYXBhY2l0eSBpc24ndCBhdmFpbGFibGUsIGluc3RhbmNlcyB3aWxsIGZhaWwgdG8gbGF1bmNoLlxuICogICArICBgYGNhcGFjaXR5LXJlc2VydmF0aW9ucy1maXJzdGBgIC0gQXV0byBTY2FsaW5nIHdpbGwgdHJ5IHRvIGxhdW5jaCBpbnN0YW5jZXMgaW50byBhIENhcGFjaXR5IFJlc2VydmF0aW9uIG9yIENhcGFjaXR5IFJlc2VydmF0aW9uIHJlc291cmNlIGdyb3VwIGZpcnN0LiBJZiBjYXBhY2l0eSBpc24ndCBhdmFpbGFibGUsIGluc3RhbmNlcyB3aWxsIHJ1biBpbiBPbi1EZW1hbmQgY2FwYWNpdHkuXG4gKiAgICsgIGBgbm9uZWBgIC0gQXV0byBTY2FsaW5nIHdpbGwgbm90IGxhdW5jaCBpbnN0YW5jZXMgaW50byBhIENhcGFjaXR5IFJlc2VydmF0aW9uLiBJbnN0YW5jZXMgd2lsbCBydW4gaW4gT24tRGVtYW5kIGNhcGFjaXR5LiBcbiAqICAgKyAgYGBkZWZhdWx0YGAgLSBBdXRvIFNjYWxpbmcgdXNlcyB0aGUgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcHJlZmVyZW5jZSBmcm9tIHlvdXIgbGF1bmNoIHRlbXBsYXRlIG9yIGFuIG9wZW4gQ2FwYWNpdHkgUmVzZXJ2YXRpb24uXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25QcmVmZXJlbmNlOiBzdHJpbmdcbkNhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXQ/OiBDYXBhY2l0eVJlc2VydmF0aW9uVGFyZ2V0XG59XG4vKipcbiAqIERlc2NyaWJlcyBhIHRhcmdldCBDYXBhY2l0eSBSZXNlcnZhdGlvbiBvciBDYXBhY2l0eSBSZXNlcnZhdGlvbiByZXNvdXJjZSBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXBhY2l0eVJlc2VydmF0aW9uVGFyZ2V0IHtcbkNhcGFjaXR5UmVzZXJ2YXRpb25JZHM/OiBDYXBhY2l0eVJlc2VydmF0aW9uSWRzXG5DYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybnM/OiBDYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybnNcbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTcGVjaWZ5IGFuIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLiBBbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIHdpbGwgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgQ1BVIHBlcmZvcm1hbmNlIG9mIHRoZSByZWZlcmVuY2VkIGluc3RhbmNlIGZhbWlseSwgcmVnYXJkbGVzcyBvZiBDUFUgbWFudWZhY3R1cmVyIG9yIGFyY2hpdGVjdHVyZSBkaWZmZXJlbmNlcy4gXG4gKiAgIEN1cnJlbnRseSBvbmx5IG9uZSBpbnN0YW5jZSBmYW1pbHkgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgbGlzdC5cbiAqL1xuZXhwb3J0IHR5cGUgUGVyZm9ybWFuY2VGYWN0b3JSZWZlcmVuY2VTZXRSZXF1ZXN0ID0gUGVyZm9ybWFuY2VGYWN0b3JSZWZlcmVuY2VSZXF1ZXN0W11cbi8qKlxuICogVGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIElEcyB0byBsYXVuY2ggaW5zdGFuY2VzIGludG8uXG4gKi9cbmV4cG9ydCB0eXBlIENhcGFjaXR5UmVzZXJ2YXRpb25JZHMgPSBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgZ3JvdXAgQVJOcyBvZiB0aGUgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gdG8gbGF1bmNoIGluc3RhbmNlcyBpbnRvLlxuICovXG5leHBvcnQgdHlwZSBDYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybnMgPSBzdHJpbmdbXVxuXG4vKipcbiAqIFRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZSBkZWZpbmVzIGFuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwLCB3aGljaCBpcyBhIGNvbGxlY3Rpb24gb2YgQW1hem9uIEVDMiBpbnN0YW5jZXMgdGhhdCBhcmUgdHJlYXRlZCBhcyBhIGxvZ2ljYWwgZ3JvdXBpbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiBhdXRvbWF0aWMgc2NhbGluZyBhbmQgbWFuYWdlbWVudC4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcsIHNlZSB0aGUgW0FtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL3doYXQtaXMtYW1hem9uLWVjMi1hdXRvLXNjYWxpbmcuaHRtbCkuIFxuICogICBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBjb25maWd1cmVzIGluc3RhbmNlcyBsYXVuY2hlZCBhcyBwYXJ0IG9mIGFuIEF1dG8gU2NhbGluZyBncm91cCB1c2luZyBlaXRoZXIgYSBbbGF1bmNoIHRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLWxhdW5jaHRlbXBsYXRlLmh0bWwpIG9yIGEgbGF1bmNoIGNvbmZpZ3VyYXRpb24uIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBkbyBub3QgdXNlIGxhdW5jaCBjb25maWd1cmF0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTGF1bmNoIGNvbmZpZ3VyYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9sYXVuY2gtY29uZmlndXJhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBGb3IgaGVscCBtaWdyYXRpbmcgZnJvbSBsYXVuY2ggY29uZmlndXJhdGlvbnMgdG8gbGF1bmNoIHRlbXBsYXRlcywgc2VlIFtNaWdyYXRlIENsb3VkRm9ybWF0aW9uIHN0YWNrcyBmcm9tIGxhdW5jaCBjb25maWd1cmF0aW9ucyB0byBsYXVuY2ggdGVtcGxhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9taWdyYXRlLWxhdW5jaC1jb25maWd1cmF0aW9ucy13aXRoLWNsb3VkZm9ybWF0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BVVRPU0NBTElOR19BVVRPU0NBTElOR0dST1VQIHtcbi8qKlxuICogT25lIG9yIG1vcmUgbGlmZWN5Y2xlIGhvb2tzIHRvIGFkZCB0byB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGJlZm9yZSBpbnN0YW5jZXMgYXJlIGxhdW5jaGVkLlxuICovXG5MaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbkxpc3Q/OiBMaWZlY3ljbGVIb29rU3BlY2lmaWNhdGlvbltdXG4vKipcbiAqIEEgbGlzdCBvZiBDbGFzc2ljIExvYWQgQmFsYW5jZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEF1dG8gU2NhbGluZyBncm91cC4gRm9yIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJzLCBOZXR3b3JrIExvYWQgQmFsYW5jZXJzLCBhbmQgR2F0ZXdheSBMb2FkIEJhbGFuY2Vycywgc3BlY2lmeSB0aGUgYGBUYXJnZXRHcm91cEFSTnNgYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICovXG5Mb2FkQmFsYW5jZXJOYW1lcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggY29uZmlndXJhdGlvbiB0byB1c2UgdG8gbGF1bmNoIGluc3RhbmNlcy5cbiAqICBSZXF1aXJlZCBvbmx5IGlmIHlvdSBkb24ndCBzcGVjaWZ5IGBgTGF1bmNoVGVtcGxhdGVgYCwgYGBNaXhlZEluc3RhbmNlc1BvbGljeWBgLCBvciBgYEluc3RhbmNlSWRgYC5cbiAqL1xuTGF1bmNoQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzZXJ2aWNlLWxpbmtlZCByb2xlIHRoYXQgdGhlIEF1dG8gU2NhbGluZyBncm91cCB1c2VzIHRvIGNhbGwgb3RoZXIgQVdTIHNlcnZpY2Ugb24geW91ciBiZWhhbGYuIEJ5IGRlZmF1bHQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHVzZXMgYSBzZXJ2aWNlLWxpbmtlZCByb2xlIG5hbWVkIGBgQVdTU2VydmljZVJvbGVGb3JBdXRvU2NhbGluZ2BgLCB3aGljaCBpdCBjcmVhdGVzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXJ2aWNlLWxpbmtlZCByb2xlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXV0b3NjYWxpbmctc2VydmljZS1saW5rZWQtcm9sZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5TZXJ2aWNlTGlua2VkUm9sZUFSTj86IHN0cmluZ1xuQXZhaWxhYmlsaXR5Wm9uZUltcGFpcm1lbnRQb2xpY3k/OiBBdmFpbGFiaWxpdHlab25lSW1wYWlybWVudFBvbGljeVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWVzIChBUk4pIG9mIHRoZSBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRhcmdldCBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhlIEF1dG8gU2NhbGluZyBncm91cC4gSW5zdGFuY2VzIGFyZSByZWdpc3RlcmVkIGFzIHRhcmdldHMgd2l0aCB0aGUgdGFyZ2V0IGdyb3Vwcy4gVGhlIHRhcmdldCBncm91cHMgcmVjZWl2ZSBpbmNvbWluZyB0cmFmZmljIGFuZCByb3V0ZSByZXF1ZXN0cyB0byBvbmUgb3IgbW9yZSByZWdpc3RlcmVkIHRhcmdldHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzZSBFbGFzdGljIExvYWQgQmFsYW5jaW5nIHRvIGRpc3RyaWJ1dGUgdHJhZmZpYyBhY3Jvc3MgdGhlIGluc3RhbmNlcyBpbiB5b3VyIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvYXV0b3NjYWxpbmctbG9hZC1iYWxhbmNlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5UYXJnZXRHcm91cEFSTnM/OiBzdHJpbmdbXVxuLyoqXG4gKiAqT25seSBuZWVkZWQgaWYgeW91IHVzZSBzaW1wbGUgc2NhbGluZyBwb2xpY2llcy4qIFxuICogIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgYmV0d2VlbiBvbmUgc2NhbGluZyBhY3Rpdml0eSBlbmRpbmcgYW5kIGFub3RoZXIgb25lIHN0YXJ0aW5nIGR1ZSB0byBzaW1wbGUgc2NhbGluZyBwb2xpY2llcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2NhbGluZyBjb29sZG93bnMgZm9yIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLXNjYWxpbmctY29vbGRvd25zLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogYGAzMDBgYCBzZWNvbmRzXG4gKi9cbkNvb2xkb3duPzogc3RyaW5nXG4vKipcbiAqIENvbmZpZ3VyZXMgYW4gQXV0byBTY2FsaW5nIGdyb3VwIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB3aGVuIHNwZWNpZmllZCBldmVudHMgdGFrZSBwbGFjZS5cbiAqL1xuTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbnM/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIGRlc2lyZWQgY2FwYWNpdHkgaXMgdGhlIGluaXRpYWwgY2FwYWNpdHkgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cCBhdCB0aGUgdGltZSBvZiBpdHMgY3JlYXRpb24gYW5kIHRoZSBjYXBhY2l0eSBpdCBhdHRlbXB0cyB0byBtYWludGFpbi4gSXQgY2FuIHNjYWxlIGJleW9uZCB0aGlzIGNhcGFjaXR5IGlmIHlvdSBjb25maWd1cmUgYXV0b21hdGljIHNjYWxpbmcuXG4gKiAgVGhlIG51bWJlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSBzaXplIG9mIHRoZSBncm91cCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGdyb3VwLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBkZXNpcmVkIGNhcGFjaXR5IHdoZW4gY3JlYXRpbmcgdGhlIHN0YWNrLCB0aGUgZGVmYXVsdCBpcyB0aGUgbWluaW11bSBzaXplIG9mIHRoZSBncm91cC5cbiAqICBDbG91ZEZvcm1hdGlvbiBtYXJrcyB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGFzIHN1Y2Nlc3NmdWwgKGJ5IHNldHRpbmcgaXRzIHN0YXR1cyB0byBDUkVBVEVfQ09NUExFVEUpIHdoZW4gdGhlIGRlc2lyZWQgY2FwYWNpdHkgaXMgcmVhY2hlZC4gSG93ZXZlciwgaWYgYSBtYXhpbXVtIFNwb3QgcHJpY2UgaXMgc2V0IGluIHRoZSBsYXVuY2ggdGVtcGxhdGUgb3IgbGF1bmNoIGNvbmZpZ3VyYXRpb24gdGhhdCB5b3Ugc3BlY2lmaWVkLCB0aGVuIGRlc2lyZWQgY2FwYWNpdHkgaXMgbm90IHVzZWQgYXMgYSBjcml0ZXJpYSBmb3Igc3VjY2Vzcy4gV2hldGhlciB5b3VyIHJlcXVlc3QgaXMgZnVsZmlsbGVkIGRlcGVuZHMgb24gU3BvdCBJbnN0YW5jZSBjYXBhY2l0eSBhbmQgeW91ciBtYXhpbXVtIHByaWNlLlxuICovXG5EZXNpcmVkQ2FwYWNpdHk/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdhaXRzIGJlZm9yZSBjaGVja2luZyB0aGUgaGVhbHRoIHN0YXR1cyBvZiBhbiBFQzIgaW5zdGFuY2UgdGhhdCBoYXMgY29tZSBpbnRvIHNlcnZpY2UgYW5kIG1hcmtpbmcgaXQgdW5oZWFsdGh5IGR1ZSB0byBhIGZhaWxlZCBoZWFsdGggY2hlY2suIFRoaXMgaXMgdXNlZnVsIGlmIHlvdXIgaW5zdGFuY2VzIGRvIG5vdCBpbW1lZGlhdGVseSBwYXNzIHRoZWlyIGhlYWx0aCBjaGVja3MgYWZ0ZXIgdGhleSBlbnRlciB0aGUgYGBJblNlcnZpY2VgYCBzdGF0ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2V0IHRoZSBoZWFsdGggY2hlY2sgZ3JhY2UgcGVyaW9kIGZvciBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2hlYWx0aC1jaGVjay1ncmFjZS1wZXJpb2QuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBEZWZhdWx0OiBgYDBgYCBzZWNvbmRzXG4gKi9cbkhlYWx0aENoZWNrR3JhY2VQZXJpb2Q/OiBudW1iZXJcbkluc3RhbmNlTGlmZWN5Y2xlUG9saWN5PzogSW5zdGFuY2VMaWZlY3ljbGVQb2xpY3lcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB1bnRpbCBhIG5ldyBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIHRvIGhhdmUgZmluaXNoZWQgaW5pdGlhbGl6aW5nIGFuZCByZXNvdXJjZSBjb25zdW1wdGlvbiB0byBiZWNvbWUgc3RhYmxlIGFmdGVyIGl0IGVudGVycyB0aGUgYGBJblNlcnZpY2VgYCBzdGF0ZS4gXG4gKiAgRHVyaW5nIGFuIGluc3RhbmNlIHJlZnJlc2gsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHdhaXRzIGZvciB0aGUgd2FybS11cCBwZXJpb2QgYWZ0ZXIgaXQgcmVwbGFjZXMgYW4gaW5zdGFuY2UgYmVmb3JlIGl0IG1vdmVzIG9uIHRvIHJlcGxhY2luZyB0aGUgbmV4dCBpbnN0YW5jZS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgYWxzbyB3YWl0cyBmb3IgdGhlIHdhcm0tdXAgcGVyaW9kIGJlZm9yZSBhZ2dyZWdhdGluZyB0aGUgbWV0cmljcyBmb3IgbmV3IGluc3RhbmNlcyB3aXRoIGV4aXN0aW5nIGluc3RhbmNlcyBpbiB0aGUgQW1hem9uIENsb3VkV2F0Y2ggbWV0cmljcyB0aGF0IGFyZSB1c2VkIGZvciBzY2FsaW5nLCByZXN1bHRpbmcgaW4gbW9yZSByZWxpYWJsZSB1c2FnZSBkYXRhLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXQgdGhlIGRlZmF1bHQgaW5zdGFuY2Ugd2FybXVwIGZvciBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctZGVmYXVsdC1pbnN0YW5jZS13YXJtdXAuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICAgVG8gbWFuYWdlIHZhcmlvdXMgd2FybS11cCBzZXR0aW5ncyBhdCB0aGUgZ3JvdXAgbGV2ZWwsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBzZXQgdGhlIGRlZmF1bHQgaW5zdGFuY2Ugd2FybXVwLCAqZXZlbiBpZiBpdCBpcyBzZXQgdG8gMCBzZWNvbmRzKi4gVG8gcmVtb3ZlIGEgdmFsdWUgdGhhdCB5b3UgcHJldmlvdXNseSBzZXQsIGluY2x1ZGUgdGhlIHByb3BlcnR5IGJ1dCBzcGVjaWZ5IGBgLTFgYCBmb3IgdGhlIHZhbHVlLiBIb3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQga2VlcGluZyB0aGUgZGVmYXVsdCBpbnN0YW5jZSB3YXJtdXAgZW5hYmxlZCBieSBzcGVjaWZ5aW5nIGEgdmFsdWUgb2YgYGAwYGAgb3Igb3RoZXIgbm9taW5hbCB2YWx1ZS5cbiAqICAgRGVmYXVsdDogTm9uZVxuICovXG5EZWZhdWx0SW5zdGFuY2VXYXJtdXA/OiBudW1iZXJcblNraXBab25hbFNoaWZ0VmFsaWRhdGlvbj86IGJvb2xlYW5cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgbmV3bHkgbGF1bmNoZWQgaW5zdGFuY2VzIGFyZSBwcm90ZWN0ZWQgZnJvbSB0ZXJtaW5hdGlvbiBieSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aGVuIHNjYWxpbmcgaW4uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHByZXZlbnRpbmcgaW5zdGFuY2VzIGZyb20gdGVybWluYXRpbmcgb24gc2NhbGUgaW4sIHNlZSBbVXNlIGluc3RhbmNlIHNjYWxlLWluIHByb3RlY3Rpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctaW5zdGFuY2UtcHJvdGVjdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5OZXdJbnN0YW5jZXNQcm90ZWN0ZWRGcm9tU2NhbGVJbj86IGJvb2xlYW5cbkxhdW5jaFRlbXBsYXRlPzogTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uXG5NaXhlZEluc3RhbmNlc1BvbGljeT86IE1peGVkSW5zdGFuY2VzUG9saWN5XG4vKipcbiAqIEEgbGlzdCBvZiBzdWJuZXQgSURzIGZvciBhIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKSB3aGVyZSBpbnN0YW5jZXMgaW4gdGhlIEF1dG8gU2NhbGluZyBncm91cCBjYW4gYmUgY3JlYXRlZC5cbiAqICBJZiB0aGlzIHJlc291cmNlIHNwZWNpZmllcyBwdWJsaWMgc3VibmV0cyBhbmQgaXMgYWxzbyBpbiBhIFZQQyB0aGF0IGlzIGRlZmluZWQgaW4gdGhlIHNhbWUgc3RhY2sgdGVtcGxhdGUsIHlvdSBtdXN0IHVzZSB0aGUgW0RlcGVuZHNPbiBhdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtZGVwZW5kc29uLmh0bWwpIHRvIGRlY2xhcmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBbVlBDLWdhdGV3YXkgYXR0YWNobWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cGMtZ2F0ZXdheS1hdHRhY2htZW50Lmh0bWwpLlxuICogICBXaGVuIHlvdSB1cGRhdGUgYGBWUENab25lSWRlbnRpZmllcmBgLCB0aGlzIHJldGFpbnMgdGhlIHNhbWUgQXV0byBTY2FsaW5nIGdyb3VwIGFuZCByZXBsYWNlcyBvbGQgaW5zdGFuY2VzIHdpdGggbmV3IG9uZXMsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHN1Ym5ldHMuIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGhvdyBDbG91ZEZvcm1hdGlvbiBoYW5kbGVzIHRoZXNlIHVwZGF0ZXMgYnkgdXNpbmcgYW4gW1VwZGF0ZVBvbGljeSBhdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtdXBkYXRlcG9saWN5Lmh0bWwpLlxuICogICBSZXF1aXJlZCB0byBsYXVuY2ggaW5zdGFuY2VzIGludG8gYSBub25kZWZhdWx0IFZQQy4gSWYgeW91IHNwZWNpZnkgYGBWUENab25lSWRlbnRpZmllcmBgIHdpdGggYGBBdmFpbGFiaWxpdHlab25lc2BgLCB0aGUgc3VibmV0cyB0aGF0IHlvdSBzcGVjaWZ5IGZvciB0aGlzIHByb3BlcnR5IG11c3QgcmVzaWRlIGluIHRob3NlIEF2YWlsYWJpbGl0eSBab25lcy5cbiAqL1xuVlBDWm9uZUlkZW50aWZpZXI/OiBzdHJpbmdbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSB0YWdzLiBZb3UgY2FuIHRhZyB5b3VyIEF1dG8gU2NhbGluZyBncm91cCBhbmQgcHJvcGFnYXRlIHRoZSB0YWdzIHRvIHRoZSBBbWF6b24gRUMyIGluc3RhbmNlcyBpdCBsYXVuY2hlcy4gVGFncyBhcmUgbm90IHByb3BhZ2F0ZWQgdG8gQW1hem9uIEVCUyB2b2x1bWVzLiBUbyBhZGQgdGFncyB0byBBbWF6b24gRUJTIHZvbHVtZXMsIHNwZWNpZnkgdGhlIHRhZ3MgaW4gYSBsYXVuY2ggdGVtcGxhdGUgYnV0IHVzZSBjYXV0aW9uLiBJZiB0aGUgbGF1bmNoIHRlbXBsYXRlIHNwZWNpZmllcyBhbiBpbnN0YW5jZSB0YWcgd2l0aCBhIGtleSB0aGF0IGlzIGFsc28gc3BlY2lmaWVkIGZvciB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBvdmVycmlkZXMgdGhlIHZhbHVlIG9mIHRoYXQgaW5zdGFuY2UgdGFnIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtUYWcgQXV0byBTY2FsaW5nIGdyb3VwcyBhbmQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLXRhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuVGFncz86IFRhZ1Byb3BlcnR5W11cbi8qKlxuICogUmVzZXJ2ZWQuXG4gKi9cbkNvbnRleHQ/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQ2FwYWNpdHkgUmViYWxhbmNpbmcgaXMgZW5hYmxlZC4gT3RoZXJ3aXNlLCBDYXBhY2l0eSBSZWJhbGFuY2luZyBpcyBkaXNhYmxlZC4gV2hlbiB5b3UgdHVybiBvbiBDYXBhY2l0eSBSZWJhbGFuY2luZywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgYXR0ZW1wdHMgdG8gbGF1bmNoIGEgU3BvdCBJbnN0YW5jZSB3aGVuZXZlciBBbWF6b24gRUMyIG5vdGlmaWVzIHRoYXQgYSBTcG90IEluc3RhbmNlIGlzIGF0IGFuIGVsZXZhdGVkIHJpc2sgb2YgaW50ZXJydXB0aW9uLiBBZnRlciBsYXVuY2hpbmcgYSBuZXcgaW5zdGFuY2UsIGl0IHRoZW4gdGVybWluYXRlcyBhbiBvbGQgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzZSBDYXBhY2l0eSBSZWJhbGFuY2luZyB0byBoYW5kbGUgQW1hem9uIEVDMiBTcG90IEludGVycnVwdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctY2FwYWNpdHktcmViYWxhbmNpbmcuaHRtbCkgaW4gdGhlIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbkNhcGFjaXR5UmViYWxhbmNlPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGluc3RhbmNlIHVzZWQgdG8gYmFzZSB0aGUgbGF1bmNoIGNvbmZpZ3VyYXRpb24gb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZSBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNpbmcgYW4gRUMyIGluc3RhbmNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9jcmVhdGUtYXNnLWZyb20taW5zdGFuY2UuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugc3BlY2lmeSBgYExhdW5jaFRlbXBsYXRlYGAsIGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYCwgb3IgYGBMYXVuY2hDb25maWd1cmF0aW9uTmFtZWBgLCBkb24ndCBzcGVjaWZ5IGBgSW5zdGFuY2VJZGBgLlxuICovXG5JbnN0YW5jZUlkPzogc3RyaW5nXG5BdXRvU2NhbGluZ0dyb3VwQVJOPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBBdmFpbGFiaWxpdHkgWm9uZXMgd2hlcmUgaW5zdGFuY2VzIGluIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgY2FuIGJlIGNyZWF0ZWQuIFVzZWQgZm9yIGxhdW5jaGluZyBpbnRvIHRoZSBkZWZhdWx0IFZQQyBzdWJuZXQgaW4gZWFjaCBBdmFpbGFiaWxpdHkgWm9uZSB3aGVuIG5vdCB1c2luZyB0aGUgYGBWUENab25lSWRlbnRpZmllcmBgIHByb3BlcnR5LCBvciBmb3IgYXR0YWNoaW5nIGEgbmV0d29yayBpbnRlcmZhY2Ugd2hlbiBhbiBleGlzdGluZyBuZXR3b3JrIGludGVyZmFjZSBJRCBpcyBzcGVjaWZpZWQgaW4gYSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW11cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uMVxuQXZhaWxhYmlsaXR5Wm9uZURpc3RyaWJ1dGlvbj86IEF2YWlsYWJpbGl0eVpvbmVEaXN0cmlidXRpb25cbi8qKlxuICogRW5hYmxlcyB0aGUgbW9uaXRvcmluZyBvZiBncm91cCBtZXRyaWNzIG9mIGFuIEF1dG8gU2NhbGluZyBncm91cC4gQnkgZGVmYXVsdCwgdGhlc2UgbWV0cmljcyBhcmUgZGlzYWJsZWQuXG4gKi9cbk1ldHJpY3NDb2xsZWN0aW9uPzogTWV0cmljc0NvbGxlY3Rpb25bXVxuLyoqXG4gKiBUaGUgZGVsZXRpb24gcHJvdGVjdGlvbiBzZXR0aW5nIGZvciB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5EZWxldGlvblByb3RlY3Rpb24/OiBzdHJpbmdcbkluc3RhbmNlTWFpbnRlbmFuY2VQb2xpY3k/OiBJbnN0YW5jZU1haW50ZW5hbmNlUG9saWN5XG4vKipcbiAqIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGdyb3VwLlxuICogICBXaXRoIGEgbWl4ZWQgaW5zdGFuY2VzIHBvbGljeSB0aGF0IHVzZXMgaW5zdGFuY2Ugd2VpZ2h0aW5nLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBtYXkgbmVlZCB0byBnbyBhYm92ZSBgYE1heFNpemVgYCB0byBtZWV0IHlvdXIgY2FwYWNpdHkgcmVxdWlyZW1lbnRzLiBJbiB0aGlzIGV2ZW50LCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aWxsIG5ldmVyIGdvIGFib3ZlIGBgTWF4U2l6ZWBgIGJ5IG1vcmUgdGhhbiB5b3VyIGxhcmdlc3QgaW5zdGFuY2Ugd2VpZ2h0ICh3ZWlnaHRzIHRoYXQgZGVmaW5lIGhvdyBtYW55IHVuaXRzIGVhY2ggaW5zdGFuY2UgY29udHJpYnV0ZXMgdG8gdGhlIGRlc2lyZWQgY2FwYWNpdHkgb2YgdGhlIGdyb3VwKS5cbiAqL1xuTWF4U2l6ZTogc3RyaW5nXG4vKipcbiAqIFRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIGdyb3VwLlxuICovXG5NaW5TaXplOiBzdHJpbmdcbi8qKlxuICogQSBwb2xpY3kgb3IgYSBsaXN0IG9mIHBvbGljaWVzIHRoYXQgYXJlIHVzZWQgdG8gc2VsZWN0IHRoZSBpbnN0YW5jZSB0byB0ZXJtaW5hdGUuIFRoZXNlIHBvbGljaWVzIGFyZSBleGVjdXRlZCBpbiB0aGUgb3JkZXIgdGhhdCB5b3UgbGlzdCB0aGVtLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgdGVybWluYXRpb24gcG9saWNpZXMgZm9yIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLXRlcm1pbmF0aW9uLXBvbGljaWVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgdmFsdWVzOiBgYERlZmF1bHRgYCB8IGBgQWxsb2NhdGlvblN0cmF0ZWd5YGAgfCBgYENsb3Nlc3RUb05leHRJbnN0YW5jZUhvdXJgYCB8IGBgTmV3ZXN0SW5zdGFuY2VgYCB8IGBgT2xkZXN0SW5zdGFuY2VgYCB8IGBgT2xkZXN0TGF1bmNoQ29uZmlndXJhdGlvbmBgIHwgYGBPbGRlc3RMYXVuY2hUZW1wbGF0ZWBgIHwgYGBhcm46YXdzOmxhbWJkYTpyZWdpb246YWNjb3VudC1pZDpmdW5jdGlvbjpteS1mdW5jdGlvbjpteS1hbGlhc2BgXG4gKi9cblRlcm1pbmF0aW9uUG9saWNpZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgcGVyIFJlZ2lvbiBwZXIgYWNjb3VudC5cbiAqICBUaGUgbmFtZSBjYW4gY29udGFpbiBhbnkgQVNDSUkgY2hhcmFjdGVyIDMzIHRvIDEyNiBpbmNsdWRpbmcgbW9zdCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBkaWdpdHMsIGFuZCB1cHBlciBhbmQgbG93ZXJjYXNlZCBsZXR0ZXJzLlxuICogICBZb3UgY2Fubm90IHVzZSBhIGNvbG9uICg6KSBpbiB0aGUgbmFtZS5cbiAqL1xuQXV0b1NjYWxpbmdHcm91cE5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRyYWZmaWMgc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cblRyYWZmaWNTb3VyY2VzPzogVHJhZmZpY1NvdXJjZUlkZW50aWZpZXJbXVxuLyoqXG4gKiBUaGUgdW5pdCBvZiBtZWFzdXJlbWVudCBmb3IgdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgZGVzaXJlZCBjYXBhY2l0eS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc3VwcG9ydHMgYGBEZXNpcmVkQ2FwYWNpdHlUeXBlYGAgZm9yIGF0dHJpYnV0ZS1iYXNlZCBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiBvbmx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcmVhdGUgYSBtaXhlZCBpbnN0YW5jZXMgZ3JvdXAgdXNpbmcgYXR0cmlidXRlLWJhc2VkIGluc3RhbmNlIHR5cGUgc2VsZWN0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9jcmVhdGUtbWl4ZWQtaW5zdGFuY2VzLWdyb3VwLWF0dHJpYnV0ZS1iYXNlZC1pbnN0YW5jZS10eXBlLXNlbGVjdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIEJ5IGRlZmF1bHQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNwZWNpZmllcyBgYHVuaXRzYGAsIHdoaWNoIHRyYW5zbGF0ZXMgaW50byBudW1iZXIgb2YgaW5zdGFuY2VzLlxuICogIFZhbGlkIHZhbHVlczogYGB1bml0c2BgIHwgYGB2Y3B1YGAgfCBgYG1lbW9yeS1taWJgYFxuICovXG5EZXNpcmVkQ2FwYWNpdHlUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwbGFjZW1lbnQgZ3JvdXAgaW50byB3aGljaCB0byBsYXVuY2ggeW91ciBpbnN0YW5jZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1BsYWNlbWVudCBncm91cHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9wbGFjZW1lbnQtZ3JvdXBzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICAgQSAqY2x1c3RlciogcGxhY2VtZW50IGdyb3VwIGlzIGEgbG9naWNhbCBncm91cGluZyBvZiBpbnN0YW5jZXMgd2l0aGluIGEgc2luZ2xlIEF2YWlsYWJpbGl0eSBab25lLiBZb3UgY2Fubm90IHNwZWNpZnkgbXVsdGlwbGUgQXZhaWxhYmlsaXR5IFpvbmVzIGFuZCBhIGNsdXN0ZXIgcGxhY2VtZW50IGdyb3VwLlxuICovXG5QbGFjZW1lbnRHcm91cD86IHN0cmluZ1xuQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24/OiBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvblxuLyoqXG4gKiBBIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZSBzdHJpbmcgb2Ygb25lIG9yIG1vcmUgaGVhbHRoIGNoZWNrIHR5cGVzLlxuICogIFRoZSB2YWxpZCB2YWx1ZXMgYXJlIGBgRUMyYGAsIGBgRUJTYGAsIGBgRUxCYGAsIGFuZCBgYFZQQ19MQVRUSUNFYGAuIGBgRUMyYGAgaXMgdGhlIGRlZmF1bHQgaGVhbHRoIGNoZWNrIGFuZCBjYW5ub3QgYmUgZGlzYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0hlYWx0aCBjaGVja3MgZm9yIGluc3RhbmNlcyBpbiBhbiBBdXRvIFNjYWxpbmcgZ3JvdXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctaGVhbHRoLWNoZWNrcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIE9ubHkgc3BlY2lmeSBgYEVDMmBgIGlmIHlvdSBtdXN0IGNsZWFyIGEgdmFsdWUgdGhhdCB3YXMgcHJldmlvdXNseSBzZXQuXG4gKi9cbkhlYWx0aENoZWNrVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCBhbiBpbnN0YW5jZSBjYW4gYmUgaW4gc2VydmljZS4gVGhlIGRlZmF1bHQgaXMgbnVsbC4gSWYgc3BlY2lmaWVkLCB0aGUgdmFsdWUgbXVzdCBiZSBlaXRoZXIgMCBvciBhIG51bWJlciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gODYsNDAwIHNlY29uZHMgKDEgZGF5KS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUmVwbGFjZSBBdXRvIFNjYWxpbmcgaW5zdGFuY2VzIGJhc2VkIG9uIG1heGltdW0gaW5zdGFuY2UgbGlmZXRpbWVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2FzZy1tYXgtaW5zdGFuY2UtbGlmZXRpbWUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuTWF4SW5zdGFuY2VMaWZldGltZT86IG51bWJlclxufVxuLyoqXG4gKiBgYExpZmVjeWNsZUhvb2tTcGVjaWZpY2F0aW9uYGAgc3BlY2lmaWVzIGEgbGlmZWN5Y2xlIGhvb2sgZm9yIHRoZSBgYExpZmVjeWNsZUhvb2tTcGVjaWZpY2F0aW9uTGlzdGBgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCkgcmVzb3VyY2UuIEEgbGlmZWN5Y2xlIGhvb2sgc3BlY2lmaWVzIGFjdGlvbnMgdG8gcGVyZm9ybSB3aGVuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGxhdW5jaGVzIG9yIHRlcm1pbmF0ZXMgaW5zdGFuY2VzLiBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsaWZlY3ljbGUgaG9va3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2xpZmVjeWNsZS1ob29rcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLiBZb3UgY2FuIGZpbmQgYSBzYW1wbGUgdGVtcGxhdGUgc25pcHBldCBpbiB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXMtbGlmZWN5Y2xlaG9vay5odG1sI2F3cy1yZXNvdXJjZS1hcy1saWZlY3ljbGVob29rLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpMaWZlY3ljbGVIb29rYGAgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlSG9va1NwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGlmZWN5Y2xlIGhvb2suXG4gKi9cbkxpZmVjeWNsZUhvb2tOYW1lOiBzdHJpbmdcbi8qKlxuICogVGhlIGxpZmVjeWNsZSB0cmFuc2l0aW9uLiBGb3IgQXV0byBTY2FsaW5nIGdyb3VwcywgdGhlcmUgYXJlIHR3byBtYWpvciBsaWZlY3ljbGUgdHJhbnNpdGlvbnMuXG4gKiAgICsgIFRvIGNyZWF0ZSBhIGxpZmVjeWNsZSBob29rIGZvciBzY2FsZS1vdXQgZXZlbnRzLCBzcGVjaWZ5IGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSElOR2BgLlxuICogICArICBUbyBjcmVhdGUgYSBsaWZlY3ljbGUgaG9vayBmb3Igc2NhbGUtaW4gZXZlbnRzLCBzcGVjaWZ5IGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFUSU5HYGAuXG4gKi9cbkxpZmVjeWNsZVRyYW5zaXRpb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IGNhbiBlbGFwc2UgYmVmb3JlIHRoZSBsaWZlY3ljbGUgaG9vayB0aW1lcyBvdXQuIFRoZSByYW5nZSBpcyBmcm9tIGBgMzBgYCB0byBgYDcyMDBgYCBzZWNvbmRzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDM2MDBgYCBzZWNvbmRzICgxIGhvdXIpLlxuICovXG5IZWFydGJlYXRUaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB5b3Ugd2FudCB0byBpbmNsdWRlIGFueSB0aW1lIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgbm90aWZpY2F0aW9uIHRhcmdldC5cbiAqL1xuTm90aWZpY2F0aW9uTWV0YWRhdGE/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFjdGlvbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHRha2VzIHdoZW4gdGhlIGxpZmVjeWNsZSBob29rIHRpbWVvdXQgZWxhcHNlcyBvciBpZiBhbiB1bmV4cGVjdGVkIGZhaWx1cmUgb2NjdXJzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYEFCQU5ET05gYC5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgQ09OVElOVUVgYCB8IGBgQUJBTkRPTmBgXG4gKi9cbkRlZmF1bHRSZXN1bHQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBub3RpZmljYXRpb24gdGFyZ2V0IHRoYXQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc2VuZHMgbm90aWZpY2F0aW9ucyB0byB3aGVuIGFuIGluc3RhbmNlIGlzIGluIGEgd2FpdCBzdGF0ZSBmb3IgdGhlIGxpZmVjeWNsZSBob29rLiBZb3UgY2FuIHNwZWNpZnkgYW4gQW1hem9uIFNOUyB0b3BpYyBvciBhbiBBbWF6b24gU1FTIHF1ZXVlLlxuICovXG5Ob3RpZmljYXRpb25UYXJnZXRBUk4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgSUFNIHJvbGUgdGhhdCBhbGxvd3MgdGhlIEF1dG8gU2NhbGluZyBncm91cCB0byBwdWJsaXNoIHRvIHRoZSBzcGVjaWZpZWQgbm90aWZpY2F0aW9uIHRhcmdldC4gRm9yIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIHRoaXMgcm9sZSwgc2VlIFtQcmVwYXJlIHRvIGFkZCBhIGxpZmVjeWNsZSBob29rIHRvIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9wcmVwYXJlLWZvci1saWZlY3ljbGUtbm90aWZpY2F0aW9ucy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIG9ubHkgaWYgdGhlIG5vdGlmaWNhdGlvbiB0YXJnZXQgaXMgYW4gQW1hem9uIFNOUyB0b3BpYyBvciBhbiBBbWF6b24gU1FTIHF1ZXVlLlxuICovXG5Sb2xlQVJOPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBpbXBhaXJtZW50IHBvbGljeSBmb3IgdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmFpbGFiaWxpdHlab25lSW1wYWlybWVudFBvbGljeSB7XG4vKipcbiAqIElmIGBgdHJ1ZWBgLCBlbmFibGUgem9uYWwgc2hpZnQgZm9yIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5ab25hbFNoaWZ0RW5hYmxlZDogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGhlYWx0aCBjaGVjayBiZWhhdmlvciBmb3IgdGhlIGltcGFpcmVkIEF2YWlsYWJpbGl0eSBab25lIGluIGFuIGFjdGl2ZSB6b25hbCBzaGlmdC4gSWYgeW91IHNlbGVjdCBgYFJlcGxhY2UgdW5oZWFsdGh5YGAsIGluc3RhbmNlcyB0aGF0IGFwcGVhciB1bmhlYWx0aHkgd2lsbCBiZSByZXBsYWNlZCBpbiBhbGwgQXZhaWxhYmlsaXR5IFpvbmVzLiBJZiB5b3Ugc2VsZWN0IGBgSWdub3JlIHVuaGVhbHRoeWBgLCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgcmVwbGFjZWQgaW4gdGhlIEF2YWlsYWJpbGl0eSBab25lIHdpdGggdGhlIGFjdGl2ZSB6b25hbCBzaGlmdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXV0byBTY2FsaW5nIGdyb3VwIHpvbmFsIHNoaWZ0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLXpvbmFsLXNoaWZ0Lmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cbkltcGFpcmVkWm9uZUhlYWx0aENoZWNrQmVoYXZpb3I6IChcIklnbm9yZVVuaGVhbHRoeVwiIHwgXCJSZXBsYWNlVW5oZWFsdGh5XCIpXG59XG4vKipcbiAqIEEgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIGFuIEFtYXpvbiBTTlMgbm90aWZpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgYE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25zYGAgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sKSByZXNvdXJjZS5cbiAqICBGb3IgYW4gZXhhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0LCBzZWUgW0NvbmZpZ3VyZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3F1aWNrcmVmLWVjMi1hdXRvLXNjYWxpbmcuaHRtbCkuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbR2V0IEFtYXpvbiBTTlMgbm90aWZpY2F0aW9ucyB3aGVuIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwIHNjYWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvQVNHZXR0aW5nTm90aWZpY2F0aW9ucy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTTlMgdG9waWMuXG4gKi9cblRvcGljQVJOOiAoc3RyaW5nIHwgc3RyaW5nW10pXG4vKipcbiAqIEEgbGlzdCBvZiBldmVudCB0eXBlcyB0aGF0IHNlbmQgYSBub3RpZmljYXRpb24uIEV2ZW50IHR5cGVzIGNhbiBpbmNsdWRlIGFueSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzLiBcbiAqICAqQWxsb3dlZCB2YWx1ZXMqOlxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNIYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9MQVVOQ0hfRVJST1JgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFURWBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfVEVSTUlOQVRFX0VSUk9SYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOlRFU1RfTk9USUZJQ0FUSU9OYGBcbiAqL1xuTm90aWZpY2F0aW9uVHlwZXM/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgbGlmZWN5Y2xlIHBvbGljeSBmb3IgdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZUxpZmVjeWNsZVBvbGljeSB7XG5SZXRlbnRpb25UcmlnZ2Vycz86IFJldGVudGlvblRyaWdnZXJzXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgaW5zdGFuY2UgcmV0ZW50aW9uIGJlaGF2aW9yLiBUaGVzZSB0cmlnZ2VycyBkZXRlcm1pbmUgd2hlbiBpbnN0YW5jZXMgc2hvdWxkIG1vdmUgdG8gYSBgYFJldGFpbmVkYGAgc3RhdGUgaW5zdGVhZCBvZiBhdXRvbWF0aWMgdGVybWluYXRpb24uIFRoaXMgYWxsb3dzIHlvdSB0byBtYWludGFpbiBjb250cm9sIG92ZXIgaW5zdGFuY2UgbWFuYWdlbWVudCB3aGVuIGxpZmVjeWNsZXMgdHJhbnNpdGlvbiBhbmQgb3BlcmF0aW9ucyBmYWlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldGVudGlvblRyaWdnZXJzIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gd2hlbiBhIHRlcm1pbmF0aW9uIGxpZmVjeWNsZSBob29rIGlzIGFiYW5kb25lZCBkdWUgdG8gZmFpbHVyZSwgdGltZW91dCwgb3IgZXhwbGljaXQgYWJhbmRvbm1lbnQgKGNhbGxpbmcgQ29tcGxldGVMaWZlY3ljbGVBY3Rpb24pLiBcbiAqICAgU2V0IHRvIGBgcmV0YWluYGAgdG8gbW92ZSBpbnN0YW5jZXMgdG8gYSByZXRhaW5lZCBzdGF0ZS4gU2V0IHRvIGBgdGVybWluYXRlYGAgZm9yIGRlZmF1bHQgdGVybWluYXRpb24gYmVoYXZpb3IuIFxuICogICBSZXRhaW5lZCBpbnN0YW5jZXMgZG9uJ3QgY291bnQgdG93YXJkIGRlc2lyZWQgY2FwYWNpdHkgYW5kIHJlbWFpbiB1bnRpbCB5b3UgY2FsbCBgYFRlcm1pbmF0ZUluc3RhbmNlSW5BdXRvU2NhbGluZ0dyb3VwYGAuXG4gKi9cblRlcm1pbmF0ZUhvb2tBYmFuZG9uPzogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF1bmNoIHRlbXBsYXRlIGFuZCB2ZXJzaW9uIHRvIHVzZSB0byBsYXVuY2ggaW5zdGFuY2VzLiBZb3UgY2FuIGFsdGVybmF0aXZlbHkgYXNzb2NpYXRlIGEgbGF1bmNoIHRlbXBsYXRlIHRvIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYnkgc3BlY2lmeWluZyBhIGBgTWl4ZWRJbnN0YW5jZXNQb2xpY3lgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY3JlYXRpbmcgbGF1bmNoIHRlbXBsYXRlcywgc2VlIFtDcmVhdGUgYSBsYXVuY2ggdGVtcGxhdGUgZm9yIGFuIEF1dG8gU2NhbGluZyBncm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvY3JlYXRlLWxhdW5jaC10ZW1wbGF0ZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIElmIHlvdSBvbWl0IHRoaXMgcHJvcGVydHksIHlvdSBtdXN0IHNwZWNpZnkgYGBNaXhlZEluc3RhbmNlc1BvbGljeWBgLCBgYExhdW5jaENvbmZpZ3VyYXRpb25OYW1lYGAsIG9yIGBgSW5zdGFuY2VJZGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFNwZWNpZnlpbmcgYGAkTGF0ZXN0YGAgb3IgYGAkRGVmYXVsdGBgIGZvciB0aGUgdGVtcGxhdGUgdmVyc2lvbiBudW1iZXIgaXMgbm90IHN1cHBvcnRlZC4gSG93ZXZlciwgeW91IGNhbiBzcGVjaWZ5IGBgTGF0ZXN0VmVyc2lvbk51bWJlcmBgIG9yIGBgRGVmYXVsdFZlcnNpb25OdW1iZXJgYCB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtGbjo6R2V0QXR0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9pbnRyaW5zaWMtZnVuY3Rpb24tcmVmZXJlbmNlLWdldGF0dC5odG1sKS5cbiAqICAgRm9yIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGZ1bmN0aW9uLCBzZWUgdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC0tZXhhbXBsZXMpIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBdXRvU2NhbGluZzo6QXV0b1NjYWxpbmdHcm91cGBgIHJlc291cmNlLlxuICovXG5WZXJzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSB0aGUgYGBMYXVuY2hUZW1wbGF0ZUlEYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAsIGJ1dCBub3QgYm90aC5cbiAqL1xuTGF1bmNoVGVtcGxhdGVJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBBbiBlbWJlZGRlZCBvYmplY3QgdGhhdCBzcGVjaWZpZXMgYSBtaXhlZCBpbnN0YW5jZXMgcG9saWN5LlxuICogIFRoZSBwb2xpY3kgaW5jbHVkZXMgcHJvcGVydGllcyB0aGF0IG5vdCBvbmx5IGRlZmluZSB0aGUgZGlzdHJpYnV0aW9uIG9mIE9uLURlbWFuZCBJbnN0YW5jZXMgYW5kIFNwb3QgSW5zdGFuY2VzLCB0aGUgbWF4aW11bSBwcmljZSB0byBwYXkgZm9yIFNwb3QgSW5zdGFuY2VzIChvcHRpb25hbCksIGFuZCBob3cgdGhlIEF1dG8gU2NhbGluZyBncm91cCBhbGxvY2F0ZXMgaW5zdGFuY2UgdHlwZXMgdG8gZnVsZmlsbCBPbi1EZW1hbmQgYW5kIFNwb3QgY2FwYWNpdGllcywgYnV0IGFsc28gdGhlIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IHRoZSBpbnN0YW5jZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9u4oCUdGhlIGxhdW5jaCB0ZW1wbGF0ZSBhbmQgaW5zdGFuY2UgdHlwZXMuIFRoZSBwb2xpY3kgY2FuIGFsc28gaW5jbHVkZSBhIHdlaWdodCBmb3IgZWFjaCBpbnN0YW5jZSB0eXBlIGFuZCBkaWZmZXJlbnQgbGF1bmNoIHRlbXBsYXRlcyBmb3IgaW5kaXZpZHVhbCBpbnN0YW5jZSB0eXBlcy5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBdXRvIFNjYWxpbmcgZ3JvdXBzIHdpdGggbXVsdGlwbGUgaW5zdGFuY2UgdHlwZXMgYW5kIHB1cmNoYXNlIG9wdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWl4ZWQtaW5zdGFuY2VzLWdyb3Vwcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1peGVkSW5zdGFuY2VzUG9saWN5IHtcbkluc3RhbmNlc0Rpc3RyaWJ1dGlvbj86IEluc3RhbmNlc0Rpc3RyaWJ1dGlvblxuTGF1bmNoVGVtcGxhdGU6IExhdW5jaFRlbXBsYXRlXG59XG4vKipcbiAqIFRoZSBpbnN0YW5jZXMgZGlzdHJpYnV0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlc0Rpc3RyaWJ1dGlvbiB7XG4vKipcbiAqIFRoZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHRvIGFwcGx5IHRvIHlvdXIgT24tRGVtYW5kIEluc3RhbmNlcyB3aGVuIHRoZXkgYXJlIGxhdW5jaGVkLiBQb3NzaWJsZSBpbnN0YW5jZSB0eXBlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbGF1bmNoIHRlbXBsYXRlIG92ZXJyaWRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogIFRoZSBmb2xsb3dpbmcgbGlzdHMgdGhlIHZhbGlkIHZhbHVlczpcbiAqICAgKyBsb3dlc3QtcHJpY2UgVXNlcyBwcmljZSB0byBkZXRlcm1pbmUgd2hpY2ggaW5zdGFuY2UgdHlwZXMgYXJlIHRoZSBoaWdoZXN0IHByaW9yaXR5LCBsYXVuY2hpbmcgdGhlIGxvd2VzdCBwcmljZWQgaW5zdGFuY2UgdHlwZXMgd2l0aGluIGFuIEF2YWlsYWJpbGl0eSBab25lIGZpcnN0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIHRoYXQgc3BlY2lmeSBJbnN0YW5jZVJlcXVpcmVtZW50cy4gKyBwcmlvcml0aXplZCBZb3Ugc2V0IHRoZSBvcmRlciBvZiBpbnN0YW5jZSB0eXBlcyBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBwcmlvcml0eSAoZnJvbSBmaXJzdCB0byBsYXN0IGluIHRoZSBsaXN0KS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgeW91ciBoaWdoZXN0IHByaW9yaXR5IGluc3RhbmNlIHR5cGVzIGZpcnN0LiBJZiBhbGwgeW91ciBPbi1EZW1hbmQgY2FwYWNpdHkgY2Fubm90IGJlIGZ1bGZpbGxlZCB1c2luZyB5b3VyIGhpZ2hlc3QgcHJpb3JpdHkgaW5zdGFuY2UgdHlwZSwgdGhlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IHVzaW5nIHRoZSBzZWNvbmQgcHJpb3JpdHkgaW5zdGFuY2UgdHlwZSwgYW5kIHNvIG9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBJbnN0YW5jZVJlcXVpcmVtZW50cyBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRvLlxuICovXG5PbkRlbWFuZEFsbG9jYXRpb25TdHJhdGVneT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cCdzIGNhcGFjaXR5IHRoYXQgbXVzdCBiZSBmdWxmaWxsZWQgYnkgT24tRGVtYW5kIEluc3RhbmNlcy4gVGhpcyBiYXNlIHBvcnRpb24gaXMgbGF1bmNoZWQgZmlyc3QgYXMgeW91ciBncm91cCBzY2FsZXMuXG4gKiAgVGhpcyBudW1iZXIgaGFzIHRoZSBzYW1lIHVuaXQgb2YgbWVhc3VyZW1lbnQgYXMgdGhlIGdyb3VwJ3MgZGVzaXJlZCBjYXBhY2l0eS4gSWYgeW91IGNoYW5nZSB0aGUgZGVmYXVsdCB1bml0IG9mIG1lYXN1cmVtZW50IChudW1iZXIgb2YgaW5zdGFuY2VzKSBieSBzcGVjaWZ5aW5nIHdlaWdodGVkIGNhcGFjaXR5IHZhbHVlcyBpbiB5b3VyIGxhdW5jaCB0ZW1wbGF0ZSBvdmVycmlkZXMgbGlzdCwgb3IgYnkgY2hhbmdpbmcgdGhlIGRlZmF1bHQgZGVzaXJlZCBjYXBhY2l0eSB0eXBlIHNldHRpbmcgb2YgdGhlIGdyb3VwLCB5b3UgbXVzdCBzcGVjaWZ5IHRoaXMgbnVtYmVyIHVzaW5nIHRoZSBzYW1lIHVuaXQgb2YgbWVhc3VyZW1lbnQuXG4gKiAgRGVmYXVsdDogMFxuICogICBBbiB1cGRhdGUgdG8gdGhpcyBzZXR0aW5nIG1lYW5zIGEgZ3JhZHVhbCByZXBsYWNlbWVudCBvZiBpbnN0YW5jZXMgdG8gYWRqdXN0IHRoZSBjdXJyZW50IE9uLURlbWFuZCBJbnN0YW5jZSBsZXZlbHMuIFdoZW4gcmVwbGFjaW5nIGluc3RhbmNlcywgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgbmV3IGluc3RhbmNlcyBiZWZvcmUgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIG9uZXMuXG4gKi9cbk9uRGVtYW5kQmFzZUNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIENvbnRyb2xzIHRoZSBwZXJjZW50YWdlcyBvZiBPbi1EZW1hbmQgSW5zdGFuY2VzIGFuZCBTcG90IEluc3RhbmNlcyBmb3IgeW91ciBhZGRpdGlvbmFsIGNhcGFjaXR5IGJleW9uZCBgYE9uRGVtYW5kQmFzZUNhcGFjaXR5YGAuIEV4cHJlc3NlZCBhcyBhIG51bWJlciAoZm9yIGV4YW1wbGUsIDIwIHNwZWNpZmllcyAyMCUgT24tRGVtYW5kIEluc3RhbmNlcywgODAlIFNwb3QgSW5zdGFuY2VzKS4gSWYgc2V0IHRvIDEwMCwgb25seSBPbi1EZW1hbmQgSW5zdGFuY2VzIGFyZSB1c2VkLlxuICogIERlZmF1bHQ6IDEwMFxuICogICBBbiB1cGRhdGUgdG8gdGhpcyBzZXR0aW5nIG1lYW5zIGEgZ3JhZHVhbCByZXBsYWNlbWVudCBvZiBpbnN0YW5jZXMgdG8gYWRqdXN0IHRoZSBjdXJyZW50IE9uLURlbWFuZCBhbmQgU3BvdCBJbnN0YW5jZSBsZXZlbHMgZm9yIHlvdXIgYWRkaXRpb25hbCBjYXBhY2l0eSBoaWdoZXIgdGhhbiB0aGUgYmFzZSBjYXBhY2l0eS4gV2hlbiByZXBsYWNpbmcgaW5zdGFuY2VzLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBsYXVuY2hlcyBuZXcgaW5zdGFuY2VzIGJlZm9yZSB0ZXJtaW5hdGluZyB0aGUgcHJldmlvdXMgb25lcy5cbiAqL1xuT25EZW1hbmRQZXJjZW50YWdlQWJvdmVCYXNlQ2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBTcG90IEluc3RhbmNlIHBvb2xzIGFjcm9zcyB3aGljaCB0byBhbGxvY2F0ZSB5b3VyIFNwb3QgSW5zdGFuY2VzLiBUaGUgU3BvdCBwb29scyBhcmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBkaWZmZXJlbnQgaW5zdGFuY2UgdHlwZXMgaW4gdGhlIG92ZXJyaWRlcy4gVmFsaWQgb25seSB3aGVuIHRoZSBgYFNwb3RBbGxvY2F0aW9uU3RyYXRlZ3lgYCBpcyBgYGxvd2VzdC1wcmljZWBgLiBWYWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAx4oCTMjAuXG4gKiAgRGVmYXVsdDogMlxuICovXG5TcG90SW5zdGFuY2VQb29scz86IG51bWJlclxuLyoqXG4gKiBUaGUgYWxsb2NhdGlvbiBzdHJhdGVneSB0byBhcHBseSB0byB5b3VyIFNwb3QgSW5zdGFuY2VzIHdoZW4gdGhleSBhcmUgbGF1bmNoZWQuIFBvc3NpYmxlIGluc3RhbmNlIHR5cGVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBsYXVuY2ggdGVtcGxhdGUgb3ZlcnJpZGVzIHRoYXQgeW91IHNwZWNpZnkuXG4gKiAgVGhlIGZvbGxvd2luZyBsaXN0cyB0aGUgdmFsaWQgdmFsdWVzOlxuICogICArIGNhcGFjaXR5LW9wdGltaXplZCBSZXF1ZXN0cyBTcG90IEluc3RhbmNlcyB1c2luZyBwb29scyB0aGF0IGFyZSBvcHRpbWFsbHkgY2hvc2VuIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgU3BvdCBjYXBhY2l0eS4gVGhpcyBzdHJhdGVneSBoYXMgdGhlIGxvd2VzdCByaXNrIG9mIGludGVycnVwdGlvbi4gVG8gZ2l2ZSBjZXJ0YWluIGluc3RhbmNlIHR5cGVzIGEgaGlnaGVyIGNoYW5jZSBvZiBsYXVuY2hpbmcgZmlyc3QsIHVzZSBjYXBhY2l0eS1vcHRpbWl6ZWQtcHJpb3JpdGl6ZWQuICsgY2FwYWNpdHktb3B0aW1pemVkLXByaW9yaXRpemVkIFlvdSBzZXQgdGhlIG9yZGVyIG9mIGluc3RhbmNlIHR5cGVzIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIG92ZXJyaWRlcyBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0IHByaW9yaXR5IChmcm9tIGZpcnN0IHRvIGxhc3QgaW4gdGhlIGxpc3QpLiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBob25vcnMgdGhlIGluc3RhbmNlIHR5cGUgcHJpb3JpdGllcyBvbiBhIGJlc3QgZWZmb3J0IGJhc2lzIGJ1dCBvcHRpbWl6ZXMgZm9yIGNhcGFjaXR5IGZpcnN0LiBOb3RlIHRoYXQgaWYgdGhlIE9uLURlbWFuZCBhbGxvY2F0aW9uIHN0cmF0ZWd5IGlzIHNldCB0byBwcmlvcml0aXplZCwgdGhlIHNhbWUgcHJpb3JpdHkgaXMgYXBwbGllZCB3aGVuIGZ1bGZpbGxpbmcgT24tRGVtYW5kIGNhcGFjaXR5LiBUaGlzIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBBdXRvIFNjYWxpbmcgZ3JvdXBzIHRoYXQgc3BlY2lmeSBJbnN0YW5jZVJlcXVpcmVtZW50cy4gKyBsb3dlc3QtcHJpY2UgUmVxdWVzdHMgU3BvdCBJbnN0YW5jZXMgdXNpbmcgdGhlIGxvd2VzdCBwcmljZWQgcG9vbHMgd2l0aGluIGFuIEF2YWlsYWJpbGl0eSBab25lLCBhY3Jvc3MgdGhlIG51bWJlciBvZiBTcG90IHBvb2xzIHRoYXQgeW91IHNwZWNpZnkgZm9yIHRoZSBTcG90SW5zdGFuY2VQb29scyBwcm9wZXJ0eS4gVG8gZW5zdXJlIHRoYXQgeW91ciBkZXNpcmVkIGNhcGFjaXR5IGlzIG1ldCwgeW91IG1pZ2h0IHJlY2VpdmUgU3BvdCBJbnN0YW5jZXMgZnJvbSBzZXZlcmFsIHBvb2xzLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLCBidXQgaXQgbWlnaHQgbGVhZCB0byBoaWdoIGludGVycnVwdGlvbiByYXRlcyBiZWNhdXNlIHRoaXMgc3RyYXRlZ3kgb25seSBjb25zaWRlcnMgaW5zdGFuY2UgcHJpY2UgYW5kIG5vdCBhdmFpbGFibGUgY2FwYWNpdHkuICsgcHJpY2UtY2FwYWNpdHktb3B0aW1pemVkIChyZWNvbW1lbmRlZCkgVGhlIHByaWNlIGFuZCBjYXBhY2l0eSBvcHRpbWl6ZWQgYWxsb2NhdGlvbiBzdHJhdGVneSBsb29rcyBhdCBib3RoIHByaWNlIGFuZCBjYXBhY2l0eSB0byBzZWxlY3QgdGhlIFNwb3QgSW5zdGFuY2UgcG9vbHMgdGhhdCBhcmUgdGhlIGxlYXN0IGxpa2VseSB0byBiZSBpbnRlcnJ1cHRlZCBhbmQgaGF2ZSB0aGUgbG93ZXN0IHBvc3NpYmxlIHByaWNlLlxuICovXG5TcG90QWxsb2NhdGlvblN0cmF0ZWd5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIHByaWNlIHBlciB1bml0IGhvdXIgdGhhdCB5b3UgYXJlIHdpbGxpbmcgdG8gcGF5IGZvciBhIFNwb3QgSW5zdGFuY2UuIElmIHlvdXIgbWF4aW11bSBwcmljZSBpcyBsb3dlciB0aGFuIHRoZSBTcG90IHByaWNlIGZvciB0aGUgaW5zdGFuY2UgdHlwZXMgdGhhdCB5b3Ugc2VsZWN0ZWQsIHlvdXIgU3BvdCBJbnN0YW5jZXMgYXJlIG5vdCBsYXVuY2hlZC4gV2UgZG8gbm90IHJlY29tbWVuZCBzcGVjaWZ5aW5nIGEgbWF4aW11bSBwcmljZSBiZWNhdXNlIGl0IGNhbiBsZWFkIHRvIGluY3JlYXNlZCBpbnRlcnJ1cHRpb25zLiBXaGVuIFNwb3QgSW5zdGFuY2VzIGxhdW5jaCwgeW91IHBheSB0aGUgY3VycmVudCBTcG90IHByaWNlLiBUbyByZW1vdmUgYSBtYXhpbXVtIHByaWNlIHRoYXQgeW91IHByZXZpb3VzbHkgc2V0LCBpbmNsdWRlIHRoZSBwcm9wZXJ0eSBidXQgc3BlY2lmeSBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGZvciB0aGUgdmFsdWUuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgbWF4aW11bSBwcmljZSwgeW91ciBpbnN0YW5jZXMgd2lsbCBiZSBpbnRlcnJ1cHRlZCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBpZiB5b3UgZG8gbm90IHNwZWNpZnkgb25lLlxuICogICBWYWxpZCBSYW5nZTogTWluaW11bSB2YWx1ZSBvZiAwLjAwMVxuICovXG5TcG90TWF4UHJpY2U/OiBzdHJpbmdcbn1cbi8qKlxuICogT25lIG9yIG1vcmUgbGF1bmNoIHRlbXBsYXRlcyBhbmQgdGhlIGluc3RhbmNlIHR5cGVzIChvdmVycmlkZXMpIHRoYXQgYXJlIHVzZWQgdG8gbGF1bmNoIEVDMiBpbnN0YW5jZXMgdG8gZnVsZmlsbCBPbi1EZW1hbmQgYW5kIFNwb3QgY2FwYWNpdGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZSB7XG5MYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb246IExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbjFcbi8qKlxuICogQW55IHByb3BlcnRpZXMgdGhhdCB5b3Ugc3BlY2lmeSBvdmVycmlkZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGluIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cbk92ZXJyaWRlcz86IExhdW5jaFRlbXBsYXRlT3ZlcnJpZGVzW11cbn1cbi8qKlxuICogVGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24xIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlSURgYCwgYnV0IG5vdCBib3RoLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgU3BlY2lmeWluZyBgYCRMYXRlc3RgYCBvciBgYCREZWZhdWx0YGAgZm9yIHRoZSB0ZW1wbGF0ZSB2ZXJzaW9uIG51bWJlciBpcyBub3Qgc3VwcG9ydGVkLiBIb3dldmVyLCB5b3UgY2FuIHNwZWNpZnkgYGBMYXRlc3RWZXJzaW9uTnVtYmVyYGAgb3IgYGBEZWZhdWx0VmVyc2lvbk51bWJlcmBgIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBpbnRyaW5zaWMgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0ZuOjpHZXRBdHRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2ludHJpbnNpYy1mdW5jdGlvbi1yZWZlcmVuY2UtZ2V0YXR0Lmh0bWwpLlxuICogICBGb3IgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgZnVuY3Rpb24sIHNlZSB0aGUgW0V4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sI2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwYGAgcmVzb3VyY2UuXG4gKi9cblZlcnNpb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBgYExhdW5jaFRlbXBsYXRlSURgYCBvciB0aGUgYGBMYXVuY2hUZW1wbGF0ZU5hbWVgYCwgYnV0IG5vdCBib3RoLlxuICovXG5MYXVuY2hUZW1wbGF0ZUlkPzogc3RyaW5nXG59XG4vKipcbiAqIFVzZSB0aGlzIHN0cnVjdHVyZSB0byBsZXQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZG8gdGhlIGZvbGxvd2luZyB3aGVuIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgaGFzIGEgbWl4ZWQgaW5zdGFuY2VzIHBvbGljeTpcbiAqICAgKyAgT3ZlcnJpZGUgdGhlIGluc3RhbmNlIHR5cGUgdGhhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICAgKyAgVXNlIG11bHRpcGxlIGluc3RhbmNlIHR5cGVzLlxuICogICBcbiAqICBTcGVjaWZ5IHRoZSBpbnN0YW5jZSB0eXBlcyB0aGF0IHlvdSB3YW50LCBvciBkZWZpbmUgeW91ciBpbnN0YW5jZSByZXF1aXJlbWVudHMgaW5zdGVhZCBhbmQgbGV0IEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHByb3Zpc2lvbiB0aGUgYXZhaWxhYmxlIGluc3RhbmNlIHR5cGVzIHRoYXQgbWVldCB5b3VyIHJlcXVpcmVtZW50cy4gVGhpcyBjYW4gcHJvdmlkZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aXRoIGEgbGFyZ2VyIHNlbGVjdGlvbiBvZiBpbnN0YW5jZSB0eXBlcyB0byBjaG9vc2UgZnJvbSB3aGVuIGZ1bGZpbGxpbmcgU3BvdCBhbmQgT24tRGVtYW5kIGNhcGFjaXRpZXMuIFlvdSBjYW4gdmlldyB3aGljaCBpbnN0YW5jZSB0eXBlcyBhcmUgbWF0Y2hlZCBiZWZvcmUgeW91IGFwcGx5IHRoZSBpbnN0YW5jZSByZXF1aXJlbWVudHMgdG8geW91ciBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKiAgQWZ0ZXIgeW91IGRlZmluZSB5b3VyIGluc3RhbmNlIHJlcXVpcmVtZW50cywgeW91IGRvbid0IGhhdmUgdG8ga2VlcCB1cGRhdGluZyB0aGVzZSBzZXR0aW5ncyB0byBnZXQgbmV3IEVDMiBpbnN0YW5jZSB0eXBlcyBhdXRvbWF0aWNhbGx5LiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB1c2VzIHRoZSBpbnN0YW5jZSByZXF1aXJlbWVudHMgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cCB0byBkZXRlcm1pbmUgd2hldGhlciBhIG5ldyBFQzIgaW5zdGFuY2UgdHlwZSBjYW4gYmUgdXNlZC5cbiAqICBgYExhdW5jaFRlbXBsYXRlT3ZlcnJpZGVzYGAgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXAgTGF1bmNoVGVtcGxhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtbGF1bmNodGVtcGxhdGUuaHRtbCkgcHJvcGVydHkgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZU92ZXJyaWRlcyB7XG5MYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24/OiBMYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb24yXG4vKipcbiAqIElmIHlvdSBwcm92aWRlIGEgbGlzdCBvZiBpbnN0YW5jZSB0eXBlcyB0byB1c2UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNhcGFjaXR5IHVuaXRzIHByb3ZpZGVkIGJ5IGVhY2ggaW5zdGFuY2UgdHlwZSBpbiB0ZXJtcyBvZiB2aXJ0dWFsIENQVXMsIG1lbW9yeSwgc3RvcmFnZSwgdGhyb3VnaHB1dCwgb3Igb3RoZXIgcmVsYXRpdmUgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWMuIFdoZW4gYSBTcG90IG9yIE9uLURlbWFuZCBJbnN0YW5jZSBpcyBsYXVuY2hlZCwgdGhlIGNhcGFjaXR5IHVuaXRzIGNvdW50IHRvd2FyZCB0aGUgZGVzaXJlZCBjYXBhY2l0eS4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgbGF1bmNoZXMgaW5zdGFuY2VzIHVudGlsIHRoZSBkZXNpcmVkIGNhcGFjaXR5IGlzIHRvdGFsbHkgZnVsZmlsbGVkLCBldmVuIGlmIHRoaXMgcmVzdWx0cyBpbiBhbiBvdmVyYWdlLiBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIHR3byB1bml0cyByZW1haW5pbmcgdG8gZnVsZmlsbCBjYXBhY2l0eSwgYW5kIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGNhbiBvbmx5IGxhdW5jaCBhbiBpbnN0YW5jZSB3aXRoIGEgYGBXZWlnaHRlZENhcGFjaXR5YGAgb2YgZml2ZSB1bml0cywgdGhlIGluc3RhbmNlIGlzIGxhdW5jaGVkLCBhbmQgdGhlIGRlc2lyZWQgY2FwYWNpdHkgaXMgZXhjZWVkZWQgYnkgdGhyZWUgdW5pdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyZSBpbnN0YW5jZSB3ZWlnaHRpbmcgZm9yIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLW1peGVkLWluc3RhbmNlcy1ncm91cHMtaW5zdGFuY2Utd2VpZ2h0aW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIG9mIDEtOTk5LiBcbiAqICBJZiB5b3Ugc3BlY2lmeSBhIHZhbHVlIGZvciBgYFdlaWdodGVkQ2FwYWNpdHlgYCBmb3Igb25lIGluc3RhbmNlIHR5cGUsIHlvdSBtdXN0IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYGBXZWlnaHRlZENhcGFjaXR5YGAgZm9yIGFsbCBvZiB0aGVtLlxuICogICBFdmVyeSBBdXRvIFNjYWxpbmcgZ3JvdXAgaGFzIHRocmVlIHNpemUgcGFyYW1ldGVycyAoYGBEZXNpcmVkQ2FwYWNpdHlgYCwgYGBNYXhTaXplYGAsIGFuZCBgYE1pblNpemVgYCkuIFVzdWFsbHksIHlvdSBzZXQgdGhlc2Ugc2l6ZXMgYmFzZWQgb24gYSBzcGVjaWZpYyBudW1iZXIgb2YgaW5zdGFuY2VzLiBIb3dldmVyLCBpZiB5b3UgY29uZmlndXJlIGEgbWl4ZWQgaW5zdGFuY2VzIHBvbGljeSB0aGF0IGRlZmluZXMgd2VpZ2h0cyBmb3IgdGhlIGluc3RhbmNlIHR5cGVzLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZXNlIHNpemVzIHdpdGggdGhlIHNhbWUgdW5pdHMgdGhhdCB5b3UgdXNlIGZvciB3ZWlnaHRpbmcgaW5zdGFuY2VzLlxuICovXG5XZWlnaHRlZENhcGFjaXR5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgQW1hem9uIE1hY2hpbmUgSW1hZ2UgKEFNSSkgdG8gdXNlIGZvciBpbnN0YW5jZXMgbGF1bmNoZWQgd2l0aCB0aGlzIG92ZXJyaWRlLiBXaGVuIHVzaW5nIEluc3RhbmNlIFJlZnJlc2ggd2l0aCBgYFJlcGxhY2VSb290Vm9sdW1lYGAgc3RyYXRlZ3ksIHRoaXMgc3BlY2lmaWVzIHRoZSBBTUkgZm9yIHJvb3Qgdm9sdW1lIHJlcGxhY2VtZW50IG9wZXJhdGlvbnMuIFxuICogICBGb3IgYGBSZXBsYWNlUm9vdFZvbHVtZWBgIG9wZXJhdGlvbnM6IFxuICogICArICBBbGwgb3ZlcnJpZGVzIGluIHRoZSBgYE1peGVkSW5zdGFuY2VzUG9saWN5YGAgbXVzdCBzcGVjaWZ5IGFuIEltYWdlSWRcbiAqICAgKyAgVGhlIEFNSSBtdXN0IGNvbnRhaW4gb25seSBhIHNpbmdsZSByb290IHZvbHVtZVxuICogICArICBSb290IHZvbHVtZSByZXBsYWNlbWVudCBkb2Vzbid0IHN1cHBvcnQgbXVsdGktdm9sdW1lIEFNSXNcbiAqL1xuSW1hZ2VJZD86IHN0cmluZ1xuSW5zdGFuY2VSZXF1aXJlbWVudHM/OiBJbnN0YW5jZVJlcXVpcmVtZW50c1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZSwgc3VjaCBhcyBgYG0zLnhsYXJnZWBgLiBZb3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbmNlIHR5cGUgdGhhdCBpcyBzdXBwb3J0ZWQgaW4geW91ciByZXF1ZXN0ZWQgUmVnaW9uIGFuZCBBdmFpbGFiaWxpdHkgWm9uZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0luc3RhbmNlIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2UtdHlwZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIFlvdSBjYW4gc3BlY2lmeSB1cCB0byA0MCBpbnN0YW5jZSB0eXBlcyBwZXIgQXV0byBTY2FsaW5nIGdyb3VwLlxuICovXG5JbnN0YW5jZVR5cGU/OiBzdHJpbmdcbn1cbi8qKlxuICogUHJvdmlkZXMgYSBsYXVuY2ggdGVtcGxhdGUgZm9yIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UgdHlwZSBvciBzZXQgb2YgaW5zdGFuY2UgcmVxdWlyZW1lbnRzLiBGb3IgZXhhbXBsZSwgc29tZSBpbnN0YW5jZSB0eXBlcyBtaWdodCByZXF1aXJlIGEgbGF1bmNoIHRlbXBsYXRlIHdpdGggYSBkaWZmZXJlbnQgQU1JLiBJZiBub3QgcHJvdmlkZWQsIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHVzZXMgdGhlIGxhdW5jaCB0ZW1wbGF0ZSB0aGF0J3Mgc3BlY2lmaWVkIGluIHRoZSBgYExhdW5jaFRlbXBsYXRlYGAgZGVmaW5pdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeWluZyBhIGRpZmZlcmVudCBsYXVuY2ggdGVtcGxhdGUgZm9yIGFuIGluc3RhbmNlIHR5cGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWl4ZWQtaW5zdGFuY2VzLWdyb3Vwcy1sYXVuY2gtdGVtcGxhdGUtb3ZlcnJpZGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFxuICogIFlvdSBjYW4gc3BlY2lmeSB1cCB0byAyMCBsYXVuY2ggdGVtcGxhdGVzIHBlciBBdXRvIFNjYWxpbmcgZ3JvdXAuIFRoZSBsYXVuY2ggdGVtcGxhdGVzIHNwZWNpZmllZCBpbiB0aGUgb3ZlcnJpZGVzIGFuZCBpbiB0aGUgYGBMYXVuY2hUZW1wbGF0ZWBgIGRlZmluaXRpb24gY291bnQgdG93YXJkcyB0aGlzIGxpbWl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbjIge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVOYW1lYGAgb3IgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqICBTcGVjaWZ5aW5nIGBgJExhdGVzdGBgIG9yIGBgJERlZmF1bHRgYCBmb3IgdGhlIHRlbXBsYXRlIHZlcnNpb24gbnVtYmVyIGlzIG5vdCBzdXBwb3J0ZWQuIEhvd2V2ZXIsIHlvdSBjYW4gc3BlY2lmeSBgYExhdGVzdFZlcnNpb25OdW1iZXJgYCBvciBgYERlZmF1bHRWZXJzaW9uTnVtYmVyYGAgdXNpbmcgdGhlIGBgRm46OkdldEF0dGBgIGludHJpbnNpYyBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRm46OkdldEF0dF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvaW50cmluc2ljLWZ1bmN0aW9uLXJlZmVyZW5jZS1nZXRhdHQuaHRtbCkuXG4gKiAgIEZvciBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBgYEZuOjpHZXRBdHRgYCBmdW5jdGlvbiwgc2VlIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqL1xuVmVyc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgdGhlIGBgTGF1bmNoVGVtcGxhdGVJRGBgIG9yIHRoZSBgYExhdW5jaFRlbXBsYXRlTmFtZWBgLCBidXQgbm90IGJvdGguXG4gKi9cbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGluc3RhbmNlIHJlcXVpcmVtZW50cy4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgdXNlcyB5b3VyIHNwZWNpZmllZCByZXF1aXJlbWVudHMgdG8gaWRlbnRpZnkgaW5zdGFuY2UgdHlwZXMuIFRoZW4sIGl0IHVzZXMgeW91ciBPbi1EZW1hbmQgYW5kIFNwb3QgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIHRvIGxhdW5jaCBpbnN0YW5jZXMgZnJvbSB0aGVzZSBpbnN0YW5jZSB0eXBlcy5cbiAqICBZb3UgY2FuIHNwZWNpZnkgdXAgdG8gZm91ciBzZXBhcmF0ZSBzZXRzIG9mIGluc3RhbmNlIHJlcXVpcmVtZW50cyBwZXIgQXV0byBTY2FsaW5nIGdyb3VwLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJvdmlzaW9uaW5nIGluc3RhbmNlcyBmcm9tIGRpZmZlcmVudCBBbWF6b24gTWFjaGluZSBJbWFnZXMgKEFNSXMpIGluIHRoZSBzYW1lIEF1dG8gU2NhbGluZyBncm91cC4gVG8gZG8gdGhpcywgY3JlYXRlIHRoZSBBTUlzIGFuZCBjcmVhdGUgYSBuZXcgbGF1bmNoIHRlbXBsYXRlIGZvciBlYWNoIEFNSS4gVGhlbiwgY3JlYXRlIGEgY29tcGF0aWJsZSBzZXQgb2YgaW5zdGFuY2UgcmVxdWlyZW1lbnRzIGZvciBlYWNoIGxhdW5jaCB0ZW1wbGF0ZS4gXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgSW5zdGFuY2VSZXF1aXJlbWVudHNgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVJlcXVpcmVtZW50cyB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGN1cnJlbnQgb3IgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBhcmUgaW5jbHVkZWQuXG4gKiAgICsgIEZvciBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBjdXJyZW50YGAuIFRoZSBjdXJyZW50IGdlbmVyYXRpb24gaW5jbHVkZXMgRUMyIGluc3RhbmNlIHR5cGVzIGN1cnJlbnRseSByZWNvbW1lbmRlZCBmb3IgdXNlLiBUaGlzIHR5cGljYWxseSBpbmNsdWRlcyB0aGUgbGF0ZXN0IHR3byB0byB0aHJlZSBnZW5lcmF0aW9ucyBpbiBlYWNoIGluc3RhbmNlIGZhbWlseS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgICsgIEZvciBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzLCBzcGVjaWZ5IGBgcHJldmlvdXNgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGN1cnJlbnQgb3IgcHJldmlvdXMgZ2VuZXJhdGlvblxuICovXG5JbnN0YW5jZUdlbmVyYXRpb25zPzogc3RyaW5nW11cbi8qKlxuICogTGlzdHMgdGhlIGFjY2VsZXJhdG9yIHR5cGVzIHRoYXQgbXVzdCBiZSBvbiBhbiBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBHUFUgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgZ3B1YGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEZQR0EgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgZnBnYWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbmZlcmVuY2UgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgaW5mZXJlbmNlYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBhY2NlbGVyYXRvciB0eXBlXG4gKi9cbkFjY2VsZXJhdG9yVHlwZXM/OiBzdHJpbmdbXVxuTWVtb3J5R2lCUGVyVkNwdT86IE1lbW9yeUdpQlBlclZDcHVSZXF1ZXN0XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlIHR5cGVzIG11c3QgaGF2ZSBhY2NlbGVyYXRvcnMgYnkgc3BlY2lmaWMgbWFudWZhY3R1cmVycy5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIGRldmljZXMsIHNwZWNpZnkgYGBudmlkaWFgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQU1EIGRldmljZXMsIHNwZWNpZnkgYGBhbWRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQVdTIGRldmljZXMsIHNwZWNpZnkgYGBhbWF6b24td2ViLXNlcnZpY2VzYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBkZXZpY2VzLCBzcGVjaWZ5IGBgeGlsaW54YGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQWNjZWxlcmF0b3JNYW51ZmFjdHVyZXJzPzogc3RyaW5nW11cblZDcHVDb3VudDogVkNwdUNvdW50UmVxdWVzdFxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyB3aXRoIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2Ugc3RvcmVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9JbnN0YW5jZVN0b3JhZ2UuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIERlZmF1bHQ6IGBgaW5jbHVkZWRgYFxuICovXG5Mb2NhbFN0b3JhZ2U/OiBzdHJpbmdcbi8qKlxuICogTGlzdHMgd2hpY2ggc3BlY2lmaWMgQ1BVIG1hbnVmYWN0dXJlcnMgdG8gaW5jbHVkZS5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggSW50ZWwgQ1BVcywgc3BlY2lmeSBgYGludGVsYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBDUFVzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFXUyBDUFVzLCBzcGVjaWZ5IGBgYW1hem9uLXdlYi1zZXJ2aWNlc2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBcHBsZSBDUFVzLCBzcGVjaWZ5IGBgYXBwbGVgYC5cbiAqICAgXG4gKiAgIERvbid0IGNvbmZ1c2UgdGhlIENQVSBoYXJkd2FyZSBtYW51ZmFjdHVyZXIgd2l0aCB0aGUgQ1BVIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgd2l0aCBhIGNvbXBhdGlibGUgQ1BVIGFyY2hpdGVjdHVyZSBiYXNlZCBvbiB0aGUgQW1hem9uIE1hY2hpbmUgSW1hZ2UgKEFNSSkgdGhhdCB5b3Ugc3BlY2lmeSBpbiB5b3VyIGxhdW5jaCB0ZW1wbGF0ZS4gXG4gKiAgIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQ3B1TWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuXG4gKiAgRGVmYXVsdDogYGBleGNsdWRlZGBgXG4gKi9cbkJhcmVNZXRhbD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZSB0eXBlcyBtdXN0IHByb3ZpZGUgT24tRGVtYW5kIEluc3RhbmNlIGhpYmVybmF0aW9uIHN1cHBvcnQuXG4gKiAgRGVmYXVsdDogYGBmYWxzZWBgXG4gKi9cblJlcXVpcmVIaWJlcm5hdGVTdXBwb3J0PzogYm9vbGVhblxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIG9mIGFuIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlLiBUaGUgaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gZWl0aGVyIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBvciwgZmFpbGluZyB0aGF0LCB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIHNlbGVjdHMgaW5zdGFuY2UgdHlwZXMgd2l0aCB5b3VyIGF0dHJpYnV0ZXMsIHdlIHdpbGwgZXhjbHVkZSBpbnN0YW5jZSB0eXBlcyB3aG9zZSBwcmljZSBleGNlZWRzIHlvdXIgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAqICBUaGUgcGFyYW1ldGVyIGFjY2VwdHMgYW4gaW50ZWdlciwgd2hpY2ggQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYERlc2lyZWRDYXBhY2l0eVR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGJhc2VkIG9uIHRoZSBwZXItdkNQVSBvciBwZXItbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS4gXG4gKiAgIE9ubHkgb25lIG9mIGBgU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZWBgIG9yIGBgTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZWBgIGNhbiBiZSBzcGVjaWZpZWQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGVpdGhlciwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcGx5IG9wdGltYWwgcHJpY2UgcHJvdGVjdGlvbiB0byBjb25zaXN0ZW50bHkgc2VsZWN0IGZyb20gYSB3aWRlIHJhbmdlIG9mIGluc3RhbmNlIHR5cGVzLiBUbyBpbmRpY2F0ZSBubyBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIG1lYW5pbmcgeW91IHdhbnQgdG8gY29uc2lkZXIgYWxsIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLCBpbmNsdWRlIG9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFuZCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLlxuICovXG5NYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlPzogbnVtYmVyXG4vKipcbiAqIFtQcmljZSBwcm90ZWN0aW9uXSBUaGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIE9uLURlbWFuZCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZS4gVGhlIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlIGlzIHRoZSBwcmljZSBvZiB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIHdpdGggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgbm8gY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSBtYXRjaGVzIHlvdXIgYXR0cmlidXRlcywgdGhlbiB0aGUgaWRlbnRpZmllZCBwcmljZSBpcyBmcm9tIGVpdGhlciB0aGUgbG93ZXN0IHByaWNlZCBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgb3IsIGZhaWxpbmcgdGhhdCwgdGhlIGxvd2VzdCBwcmljZWQgcHJldmlvdXMgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcy4gV2hlbiBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCB3ZSB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuIFxuICogIFRoZSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBpbnRlZ2VyLCB3aGljaCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS5cbiAqICBUbyB0dXJuIG9mZiBwcmljZSBwcm90ZWN0aW9uLCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLiBcbiAqICBJZiB5b3Ugc2V0IGBgRGVzaXJlZENhcGFjaXR5VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXIgaW5zdGFuY2UgcHJpY2UuIFxuICogIERlZmF1bHQ6IGBgMjBgYFxuICovXG5PbkRlbWFuZE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuTWVtb3J5TWlCOiBNZW1vcnlNaUJSZXF1ZXN0XG4vKipcbiAqIEluZGljYXRlcyB0aGUgdHlwZSBvZiBsb2NhbCBzdG9yYWdlIHRoYXQgaXMgcmVxdWlyZWQuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIGhhcmQgZGlzayBkcml2ZSAoSEREKSBzdG9yYWdlLCBzcGVjaWZ5IGBgaGRkYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIHNvbGlkIHN0YXRlIGRyaXZlIChTU0QpIHN0b3JhZ2UsIHNwZWNpZnkgYGBzc2RgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGxvY2FsIHN0b3JhZ2UgdHlwZVxuICovXG5Mb2NhbFN0b3JhZ2VUeXBlcz86IHN0cmluZ1tdXG5OZXR3b3JrSW50ZXJmYWNlQ291bnQ/OiBOZXR3b3JrSW50ZXJmYWNlQ291bnRSZXF1ZXN0XG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBleGNsdWRlLiBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gZXhjbHVkZSBhbiBpbnN0YW5jZSBmYW1pbHksIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC4gXG4gKiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGBgYzUqYGAsIHlvdSBhcmUgZXhjbHVkaW5nIHRoZSBlbnRpcmUgQzUgaW5zdGFuY2UgZmFtaWx5LCB3aGljaCBpbmNsdWRlcyBhbGwgQzVhIGFuZCBDNW4gaW5zdGFuY2UgdHlwZXMuIElmIHlvdSBzcGVjaWZ5IGBgbTVhLipgYCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBleGNsdWRlIGFsbCB0aGUgTTVhIGluc3RhbmNlIHR5cGVzLCBidXQgbm90IHRoZSBNNW4gaW5zdGFuY2UgdHlwZXMuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgQWxsb3dlZEluc3RhbmNlVHlwZXNgYC5cbiAqICAgRGVmYXVsdDogTm8gZXhjbHVkZWQgaW5zdGFuY2UgdHlwZXNcbiAqL1xuRXhjbHVkZWRJbnN0YW5jZVR5cGVzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGVzIHRvIGFwcGx5IHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMgYWdhaW5zdC4gQWxsIG90aGVyIGluc3RhbmNlIHR5cGVzIGFyZSBpZ25vcmVkLCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gYWxsb3cgYW4gaW5zdGFuY2UgdHlwZSwgc2l6ZSwgb3IgZ2VuZXJhdGlvbi4gVGhlIGZvbGxvd2luZyBhcmUgZXhhbXBsZXM6IGBgbTUuOHhsYXJnZWBgLCBgYGM1Ki4qYGAsIGBgbTVhLipgYCwgYGByKmBgLCBgYCozKmBgLlxuICogIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSBgYGM1KmBgLCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyB3aWxsIGFsbG93IHRoZSBlbnRpcmUgQzUgaW5zdGFuY2UgZmFtaWx5LCB3aGljaCBpbmNsdWRlcyBhbGwgQzVhIGFuZCBDNW4gaW5zdGFuY2UgdHlwZXMuIElmIHlvdSBzcGVjaWZ5IGBgbTVhLipgYCwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBhbGxvdyBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAsIHlvdSBjYW4ndCBzcGVjaWZ5IGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IEFsbCBpbnN0YW5jZSB0eXBlc1xuICovXG5BbGxvd2VkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG5BY2NlbGVyYXRvckNvdW50PzogQWNjZWxlcmF0b3JDb3VudFJlcXVlc3Rcbk5ldHdvcmtCYW5kd2lkdGhHYnBzPzogTmV0d29ya0JhbmR3aWR0aEdicHNSZXF1ZXN0XG5CYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9ycz86IEJhc2VsaW5lUGVyZm9ybWFuY2VGYWN0b3JzUmVxdWVzdFxuQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzPzogQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzUmVxdWVzdFxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIGhpZ2hlciB0aGFuIGFuIGlkZW50aWZpZWQgU3BvdCBwcmljZS4gVGhlIGlkZW50aWZpZWQgU3BvdCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgcHJpY2UgaXMgZnJvbSBlaXRoZXIgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIG9yLCBmYWlsaW5nIHRoYXQsIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgc2VsZWN0cyBpbnN0YW5jZSB0eXBlcyB3aXRoIHlvdXIgYXR0cmlidXRlcywgd2Ugd2lsbCBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdob3NlIHByaWNlIGV4Y2VlZHMgeW91ciBzcGVjaWZpZWQgdGhyZXNob2xkLlxuICogIFRoZSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBpbnRlZ2VyLCB3aGljaCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBpbnRlcnByZXRzIGFzIGEgcGVyY2VudGFnZS4gXG4gKiAgSWYgeW91IHNldCBgYERlc2lyZWRDYXBhY2l0eVR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGJhc2VkIG9uIHRoZSBwZXItdkNQVSBvciBwZXItbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS4gXG4gKiAgIE9ubHkgb25lIG9mIGBgU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZWBgIG9yIGBgTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZWBgIGNhbiBiZSBzcGVjaWZpZWQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGVpdGhlciwgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcGx5IG9wdGltYWwgcHJpY2UgcHJvdGVjdGlvbiB0byBjb25zaXN0ZW50bHkgc2VsZWN0IGZyb20gYSB3aWRlIHJhbmdlIG9mIGluc3RhbmNlIHR5cGVzLiBUbyBpbmRpY2F0ZSBubyBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIG1lYW5pbmcgeW91IHdhbnQgdG8gY29uc2lkZXIgYWxsIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLCBpbmNsdWRlIG9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFuZCBzcGVjaWZ5IGEgaGlnaCB2YWx1ZSwgc3VjaCBhcyBgYDk5OTk5OWBgLlxuICovXG5TcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlPzogbnVtYmVyXG4vKipcbiAqIExpc3RzIHRoZSBhY2NlbGVyYXRvcnMgdGhhdCBtdXN0IGJlIG9uIGFuIGluc3RhbmNlIHR5cGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBBMTAwIEdQVXMsIHNwZWNpZnkgYGBhMTAwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBWMTAwIEdQVXMsIHNwZWNpZnkgYGB2MTAwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBLODAgR1BVcywgc3BlY2lmeSBgYGs4MGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVDQgR1BVcywgc3BlY2lmeSBgYHQ0YGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBNNjAgR1BVcywgc3BlY2lmeSBgYG02MGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgUmFkZW9uIFBybyBWNTIwIEdQVXMsIHNwZWNpZnkgYGByYWRlb24tcHJvLXY1MjBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggWGlsaW54IFZVOVAgRlBHQXMsIHNwZWNpZnkgYGB2dTlwYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBhY2NlbGVyYXRvclxuICovXG5BY2NlbGVyYXRvck5hbWVzPzogc3RyaW5nW11cbkFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUI/OiBBY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCUmVxdWVzdFxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBidXJzdGFibGUgcGVyZm9ybWFuY2UgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0J1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9idXJzdGFibGUtcGVyZm9ybWFuY2UtaW5zdGFuY2VzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBEZWZhdWx0OiBgYGV4Y2x1ZGVkYGBcbiAqL1xuQnVyc3RhYmxlUGVyZm9ybWFuY2U/OiBzdHJpbmdcblRvdGFsTG9jYWxTdG9yYWdlR0I/OiBUb3RhbExvY2FsU3RvcmFnZUdCUmVxdWVzdFxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBHaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeUdpQlBlclZDcHVSZXF1ZXN0IHtcbi8qKlxuICogVGhlIG1lbW9yeSBtaW5pbXVtIGluIEdpQi5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtZW1vcnkgbWF4aW11bSBpbiBHaUIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgdkNQVXMgZm9yIGFuIGluc3RhbmNlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVkNwdUNvdW50UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGluc3RhbmNlIG1lbW9yeSBzaXplIGZvciBhbiBpbnN0YW5jZSB0eXBlLCBpbiBNaUIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5TWlCUmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtZW1vcnkgbWluaW11bSBpbiBNaUIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWVtb3J5IG1heGltdW0gaW4gTWlCLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIG5ldHdvcmsgaW50ZXJmYWNlcyBmb3IgYW4gaW5zdGFuY2UgdHlwZS5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya0ludGVyZmFjZUNvdW50UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBuZXR3b3JrIGludGVyZmFjZXMuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIGFjY2VsZXJhdG9ycyAoR1BVcywgRlBHQXMsIG9yIEFXUyBJbmZlcmVudGlhIGNoaXBzKSBmb3IgYW4gaW5zdGFuY2UgdHlwZS5cbiAqICBUbyBleGNsdWRlIGFjY2VsZXJhdG9yLWVuYWJsZWQgaW5zdGFuY2UgdHlwZXMsIHNldCBgYE1heGBgIHRvIGBgMGBgLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRvckNvdW50UmVxdWVzdCB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIHZhbHVlLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gdmFsdWUuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbmV0d29yayBiYW5kd2lkdGgsIGluIGdpZ2FiaXRzIHBlciBzZWNvbmQgKEdicHMpLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQmFuZHdpZHRoR2Jwc1JlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgbmV0d29yayBiYW5kd2lkdGgsIGluIGdpZ2FiaXRzIHBlciBzZWNvbmQgKEdicHMpLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIG5ldHdvcmsgYmFuZHdpZHRoLCBpbiBnaWdhYml0cyBwZXIgc2Vjb25kIChHYnBzKS5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBiYXNlbGluZSBwZXJmb3JtYW5jZSBmYWN0b3JzIGZvciB0aGUgaW5zdGFuY2UgcmVxdWlyZW1lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lUGVyZm9ybWFuY2VGYWN0b3JzUmVxdWVzdCB7XG5DcHU/OiBDcHVQZXJmb3JtYW5jZUZhY3RvclJlcXVlc3Rcbn1cbi8qKlxuICogVGhlIENQVSBwZXJmb3JtYW5jZSB0byBjb25zaWRlciwgdXNpbmcgYW4gaW5zdGFuY2UgZmFtaWx5IGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1UGVyZm9ybWFuY2VGYWN0b3JSZXF1ZXN0IHtcblJlZmVyZW5jZXM/OiBQZXJmb3JtYW5jZUZhY3RvclJlZmVyZW5jZVNldFJlcXVlc3Rcbn1cbi8qKlxuICogU3BlY2lmeSBhbiBpbnN0YW5jZSBmYW1pbHkgdG8gdXNlIGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UgZm9yIENQVSBwZXJmb3JtYW5jZS4gQWxsIGluc3RhbmNlIHR5cGVzIHRoYXQgQWxsIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcyB3aWxsIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIENQVSBwZXJmb3JtYW5jZSBvZiB0aGUgcmVmZXJlbmNlZCBpbnN0YW5jZSBmYW1pbHksIHJlZ2FyZGxlc3Mgb2YgQ1BVIG1hbnVmYWN0dXJlciBvciBhcmNoaXRlY3R1cmUgZGlmZmVyZW5jZXMuIFxuICogICBDdXJyZW50bHkgb25seSBvbmUgaW5zdGFuY2UgZmFtaWx5IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVyZm9ybWFuY2VGYWN0b3JSZWZlcmVuY2VSZXF1ZXN0IHtcbi8qKlxuICogVGhlIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgYSBiYXNlbGluZSByZWZlcmVuY2UuIFxuICogICBNYWtlIHN1cmUgdGhhdCB5b3Ugc3BlY2lmeSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhlIGluc3RhbmNlIGZhbWlseS4gVGhlIGluc3RhbmNlIGZhbWlseSBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgcGVyaW9kICguKSBpbiB0aGUgaW5zdGFuY2UgdHlwZSBuYW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIGluc3RhbmNlIGBgYzZpLmxhcmdlYGAsIHRoZSBpbnN0YW5jZSBmYW1pbHkgaXMgYGBjNmlgYCwgbm90IGBgYzZgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiBpbnN0YW5jZSB0eXBlIG5hbWluZyBjb252ZW50aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3QvaW5zdGFuY2V0eXBlcy9pbnN0YW5jZS10eXBlLW5hbWVzLmh0bWwpIGluICpBbWF6b24gRUMyIEluc3RhbmNlIFR5cGVzKi5cbiAqICAgVGhlIGZvbGxvd2luZyBpbnN0YW5jZSB0eXBlcyBhcmUgKm5vdCBzdXBwb3J0ZWQqIGZvciBwZXJmb3JtYW5jZSBwcm90ZWN0aW9uLlxuICogICArICAgYGBjMWBgIFxuICogICArICAgYGBnM3wgZzNzYGAgXG4gKiAgICsgICBgYGhwYzdnYGAgXG4gKiAgICsgICBgYG0xfCBtMmBgIFxuICogICArICAgYGBtYWMxIHwgbWFjMiB8IG1hYzItbTF1bHRyYSB8IG1hYzItbTIgfCBtYWMyLW0ycHJvYGAgXG4gKiAgICsgICBgYHAzZG4gfCBwNGQgfCBwNWBgIFxuICogICArICAgYGB0MWBgIFxuICogICArICAgYGB1LTEydGIxIHwgdS0xOHRiMSB8IHUtMjR0YjEgfCB1LTN0YjEgfCB1LTZ0YjEgfCB1LTl0YjEgfCB1N2ktMTJ0YiB8IHU3aW4tMTZ0YiB8IHU3aW4tMjR0YiB8IHU3aW4tMzJ0YmBgIFxuICogICBcbiAqICBJZiB5b3UgcGVyZm9ybWFuY2UgcHJvdGVjdGlvbiBieSBzcGVjaWZ5aW5nIGEgc3VwcG9ydGVkIGluc3RhbmNlIGZhbWlseSwgdGhlIHJldHVybmVkIGluc3RhbmNlIHR5cGVzIHdpbGwgZXhjbHVkZSB0aGUgcHJlY2VkaW5nIHVuc3VwcG9ydGVkIGluc3RhbmNlIGZhbWlsaWVzLlxuICogIElmIHlvdSBzcGVjaWZ5IGFuIHVuc3VwcG9ydGVkIGluc3RhbmNlIGZhbWlseSBhcyBhIHZhbHVlIGZvciBiYXNlbGluZSBwZXJmb3JtYW5jZSwgdGhlIEFQSSByZXR1cm5zIGFuIGVtcHR5IHJlc3BvbnNlLlxuICovXG5JbnN0YW5jZUZhbWlseT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBiYXNlbGluZSBiYW5kd2lkdGggcGVyZm9ybWFuY2UgZm9yIGFuIGluc3RhbmNlIHR5cGUsIGluIE1icHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlPigJNvcHRpbWl6ZWQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWJzLW9wdGltaXplZC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwc1JlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWluaW11bSB2YWx1ZSBpbiBNYnBzLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gdmFsdWUgaW4gTWJwcy5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHRvdGFsIG1lbW9yeSBzaXplIGZvciB0aGUgYWNjZWxlcmF0b3JzIG9uIGFuIGluc3RhbmNlIHR5cGUsIGluIE1pQi5cbiAqICBEZWZhdWx0OiBObyBtaW5pbXVtIG9yIG1heGltdW0gbGltaXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlJlcXVlc3Qge1xuLyoqXG4gKiBUaGUgbWVtb3J5IG1pbmltdW0gaW4gTWlCLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1lbW9yeSBtYXhpbXVtIGluIE1pQi5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHRvdGFsIGxvY2FsIHN0b3JhZ2Ugc2l6ZSBmb3IgYW4gaW5zdGFuY2UgdHlwZSwgaW4gR0IuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvdGFsTG9jYWxTdG9yYWdlR0JSZXF1ZXN0IHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgbWluaW11bSBpbiBHQi5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBzdG9yYWdlIG1heGltdW0gaW4gR0IuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBBIHN0cnVjdHVyZSB0aGF0IHNwZWNpZmllcyBhIHRhZyBmb3IgdGhlIGBgVGFnc2BgIHByb3BlcnR5IG9mIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sKSByZXNvdXJjZS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtUYWcgQXV0byBTY2FsaW5nIGdyb3VwcyBhbmQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hdXRvc2NhbGluZy10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFlvdSBjYW4gZmluZCBhIHNhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0IGluIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqICBDbG91ZEZvcm1hdGlvbiBhZGRzIHRoZSBmb2xsb3dpbmcgdGFncyB0byBhbGwgQXV0byBTY2FsaW5nIGdyb3VwcyBhbmQgYXNzb2NpYXRlZCBpbnN0YW5jZXM6IFxuICogICArICBhd3M6Y2xvdWRmb3JtYXRpb246c3RhY2stbmFtZVxuICogICArICBhd3M6Y2xvdWRmb3JtYXRpb246c3RhY2staWRcbiAqICAgKyAgYXdzOmNsb3VkZm9ybWF0aW9uOmxvZ2ljYWwtaWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdQcm9wZXJ0eSB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIFNldCB0byBgYHRydWVgYCBpZiB5b3Ugd2FudCBDbG91ZEZvcm1hdGlvbiB0byBjb3B5IHRoZSB0YWcgdG8gRUMyIGluc3RhbmNlcyB0aGF0IGFyZSBsYXVuY2hlZCBhcyBwYXJ0IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuIFNldCB0byBgYGZhbHNlYGAgaWYgeW91IHdhbnQgdGhlIHRhZyBhdHRhY2hlZCBvbmx5IHRvIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgYW5kIG5vdCBjb3BpZWQgdG8gYW55IGluc3RhbmNlcyBsYXVuY2hlZCBhcyBwYXJ0IG9mIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cblByb3BhZ2F0ZUF0TGF1bmNoOiBib29sZWFuXG59XG4vKipcbiAqIEEgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIGFuIEFtYXpvbiBTTlMgbm90aWZpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgYE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25zYGAgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sKSByZXNvdXJjZS5cbiAqICBGb3IgYW4gZXhhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0LCBzZWUgW0NvbmZpZ3VyZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3F1aWNrcmVmLWVjMi1hdXRvLXNjYWxpbmcuaHRtbCkuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbR2V0IEFtYXpvbiBTTlMgbm90aWZpY2F0aW9ucyB3aGVuIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwIHNjYWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvQVNHZXR0aW5nTm90aWZpY2F0aW9ucy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24xIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU05TIHRvcGljLlxuICovXG5Ub3BpY0FSTjogKHN0cmluZyB8IHN0cmluZ1tdKVxuLyoqXG4gKiBBIGxpc3Qgb2YgZXZlbnQgdHlwZXMgdGhhdCBzZW5kIGEgbm90aWZpY2F0aW9uLiBFdmVudCB0eXBlcyBjYW4gaW5jbHVkZSBhbnkgb2YgdGhlIGZvbGxvd2luZyB0eXBlcy4gXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjpcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX0xBVU5DSGBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpFQzJfSU5TVEFOQ0VfTEFVTkNIX0VSUk9SYGAgXG4gKiAgICsgICBgYGF1dG9zY2FsaW5nOkVDMl9JTlNUQU5DRV9URVJNSU5BVEVgYCBcbiAqICAgKyAgIGBgYXV0b3NjYWxpbmc6RUMyX0lOU1RBTkNFX1RFUk1JTkFURV9FUlJPUmBgIFxuICogICArICAgYGBhdXRvc2NhbGluZzpURVNUX05PVElGSUNBVElPTmBgXG4gKi9cbk5vdGlmaWNhdGlvblR5cGVzPzogc3RyaW5nW11cbn1cbi8qKlxuICogVGhlIEVDMiBpbnN0YW5jZSBjYXBhY2l0eSBkaXN0cmlidXRpb24gYWNyb3NzIEF2YWlsYWJpbGl0eSBab25lcyBmb3IgdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmFpbGFiaWxpdHlab25lRGlzdHJpYnV0aW9uIHtcbi8qKlxuICogSWYgbGF1bmNoZXMgZmFpbCBpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSwgdGhlIGZvbGxvd2luZyBzdHJhdGVnaWVzIGFyZSBhdmFpbGFibGUuIFRoZSBkZWZhdWx0IGlzIGBgYmFsYW5jZWQtYmVzdC1lZmZvcnRgYC4gXG4gKiAgICsgIGBgYmFsYW5jZWQtb25seWBgIC0gSWYgbGF1bmNoZXMgZmFpbCBpbiBhbiBBdmFpbGFiaWxpdHkgWm9uZSwgQXV0byBTY2FsaW5nIHdpbGwgY29udGludWUgdG8gYXR0ZW1wdCB0byBsYXVuY2ggaW4gdGhlIHVuaGVhbHRoeSB6b25lIHRvIHByZXNlcnZlIGEgYmFsYW5jZWQgZGlzdHJpYnV0aW9uLlxuICogICArICBgYGJhbGFuY2VkLWJlc3QtZWZmb3J0YGAgLSBJZiBsYXVuY2hlcyBmYWlsIGluIGFuIEF2YWlsYWJpbGl0eSBab25lLCBBdXRvIFNjYWxpbmcgd2lsbCBhdHRlbXB0IHRvIGxhdW5jaCBpbiBhbm90aGVyIGhlYWx0aHkgQXZhaWxhYmlsaXR5IFpvbmUgaW5zdGVhZC5cbiAqL1xuQ2FwYWNpdHlEaXN0cmlidXRpb25TdHJhdGVneT86IChcImJhbGFuY2VkLWJlc3QtZWZmb3J0XCIgfCBcImJhbGFuY2VkLW9ubHlcIilcbn1cbi8qKlxuICogYGBNZXRyaWNzQ29sbGVjdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkF1dG9TY2FsaW5nOjpBdXRvU2NhbGluZ0dyb3VwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXV0b3NjYWxpbmctYXV0b3NjYWxpbmdncm91cC5odG1sKSByZXNvdXJjZSB0aGF0IGRlc2NyaWJlcyB0aGUgZ3JvdXAgbWV0cmljcyB0aGF0IGFuIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwIHNlbmRzIHRvIEFtYXpvbiBDbG91ZFdhdGNoLiBUaGVzZSBtZXRyaWNzIGRlc2NyaWJlIHRoZSBncm91cCByYXRoZXIgdGhhbiBhbnkgb2YgaXRzIGluc3RhbmNlcy4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTW9uaXRvciBDbG91ZFdhdGNoIG1ldHJpY3MgZm9yIHlvdXIgQXV0byBTY2FsaW5nIGdyb3VwcyBhbmQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hcy1pbnN0YW5jZS1tb25pdG9yaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouIFlvdSBjYW4gZmluZCBhIHNhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0IGluIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hdXRvc2NhbGluZy1hdXRvc2NhbGluZ2dyb3VwLmh0bWwjYXdzLXJlc291cmNlLWF1dG9zY2FsaW5nLWF1dG9zY2FsaW5nZ3JvdXAtLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXV0b1NjYWxpbmc6OkF1dG9TY2FsaW5nR3JvdXBgYCByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzQ29sbGVjdGlvbiB7XG4vKipcbiAqIElkZW50aWZpZXMgdGhlIG1ldHJpY3MgdG8gZW5hYmxlLlxuICogIFlvdSBjYW4gc3BlY2lmeSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIG1ldHJpY3M6XG4gKiAgICsgICBgYEdyb3VwTWluU2l6ZWBgIFxuICogICArICAgYGBHcm91cE1heFNpemVgYCBcbiAqICAgKyAgIGBgR3JvdXBEZXNpcmVkQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBJblNlcnZpY2VJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBQZW5kaW5nSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwU3RhbmRieUluc3RhbmNlc2BgIFxuICogICArICAgYGBHcm91cFRlcm1pbmF0aW5nSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYEdyb3VwVG90YWxJbnN0YW5jZXNgYCBcbiAqICAgKyAgIGBgR3JvdXBJblNlcnZpY2VDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFBlbmRpbmdDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFN0YW5kYnlDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cFRlcm1pbmF0aW5nQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgR3JvdXBUb3RhbENhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sRGVzaXJlZENhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sV2FybWVkQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xQZW5kaW5nQ2FwYWNpdHlgYCBcbiAqICAgKyAgIGBgV2FybVBvb2xUZXJtaW5hdGluZ0NhcGFjaXR5YGAgXG4gKiAgICsgICBgYFdhcm1Qb29sVG90YWxDYXBhY2l0eWBgIFxuICogICArICAgYGBHcm91cEFuZFdhcm1Qb29sRGVzaXJlZENhcGFjaXR5YGAgXG4gKiAgICsgICBgYEdyb3VwQW5kV2FybVBvb2xUb3RhbENhcGFjaXR5YGAgXG4gKiAgIFxuICogIElmIHlvdSBzcGVjaWZ5IGBgR3JhbnVsYXJpdHlgYCBhbmQgZG9uJ3Qgc3BlY2lmeSBhbnkgbWV0cmljcywgYWxsIG1ldHJpY3MgYXJlIGVuYWJsZWQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIENsb3VkV2F0Y2ggbWV0cmljcyBmb3IgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2VjMi1hdXRvLXNjYWxpbmctbWV0cmljcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5NZXRyaWNzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIGZyZXF1ZW5jeSBhdCB3aGljaCBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBzZW5kcyBhZ2dyZWdhdGVkIGRhdGEgdG8gQ2xvdWRXYXRjaC4gVGhlIG9ubHkgdmFsaWQgdmFsdWUgaXMgYGAxTWludXRlYGAuXG4gKi9cbkdyYW51bGFyaXR5OiBzdHJpbmdcbn1cbi8qKlxuICogQW4gaW5zdGFuY2UgbWFpbnRlbmFuY2UgcG9saWN5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXQgaW5zdGFuY2UgbWFpbnRlbmFuY2UgcG9saWN5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9lYzItYXV0by1zY2FsaW5nLWluc3RhbmNlLW1haW50ZW5hbmNlLXBvbGljeS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlTWFpbnRlbmFuY2VQb2xpY3kge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHVwcGVyIHRocmVzaG9sZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGRlc2lyZWQgY2FwYWNpdHkgb2YgdGhlIEF1dG8gU2NhbGluZyBncm91cC4gSXQgcmVwcmVzZW50cyB0aGUgbWF4aW11bSBwZXJjZW50YWdlIG9mIHRoZSBncm91cCB0aGF0IGNhbiBiZSBpbiBzZXJ2aWNlIGFuZCBoZWFsdGh5LCBvciBwZW5kaW5nLCB0byBzdXBwb3J0IHlvdXIgd29ya2xvYWQgd2hlbiByZXBsYWNpbmcgaW5zdGFuY2VzLiBWYWx1ZSByYW5nZSBpcyAxMDAgdG8gMjAwLiBUbyBjbGVhciBhIHByZXZpb3VzbHkgc2V0IHZhbHVlLCBzcGVjaWZ5IGEgdmFsdWUgb2YgYGAtMWBgLlxuICogIEJvdGggYGBNaW5IZWFsdGh5UGVyY2VudGFnZWBgIGFuZCBgYE1heEhlYWx0aHlQZXJjZW50YWdlYGAgbXVzdCBiZSBzcGVjaWZpZWQsIGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAxMDAuIEEgbGFyZ2UgcmFuZ2UgaW5jcmVhc2VzIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIHRoYXQgY2FuIGJlIHJlcGxhY2VkIGF0IHRoZSBzYW1lIHRpbWUuXG4gKi9cbk1heEhlYWx0aHlQZXJjZW50YWdlPzogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbG93ZXIgdGhyZXNob2xkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZGVzaXJlZCBjYXBhY2l0eSBvZiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLiBJdCByZXByZXNlbnRzIHRoZSBtaW5pbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGdyb3VwIHRvIGtlZXAgaW4gc2VydmljZSwgaGVhbHRoeSwgYW5kIHJlYWR5IHRvIHVzZSB0byBzdXBwb3J0IHlvdXIgd29ya2xvYWQgd2hlbiByZXBsYWNpbmcgaW5zdGFuY2VzLiBWYWx1ZSByYW5nZSBpcyAwIHRvIDEwMC4gVG8gY2xlYXIgYSBwcmV2aW91c2x5IHNldCB2YWx1ZSwgc3BlY2lmeSBhIHZhbHVlIG9mIGBgLTFgYC5cbiAqL1xuTWluSGVhbHRoeVBlcmNlbnRhZ2U/OiBudW1iZXJcbn1cbi8qKlxuICogSWRlbnRpZnlpbmcgaW5mb3JtYXRpb24gZm9yIGEgdHJhZmZpYyBzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhZmZpY1NvdXJjZUlkZW50aWZpZXIge1xuLyoqXG4gKiBQcm92aWRlcyBhZGRpdGlvbmFsIGNvbnRleHQgZm9yIHRoZSB2YWx1ZSBvZiBgYElkZW50aWZpZXJgYC5cbiAqICBUaGUgZm9sbG93aW5nIGxpc3RzIHRoZSB2YWxpZCB2YWx1ZXM6XG4gKiAgICsgIGBgZWxiYGAgaWYgYGBJZGVudGlmaWVyYGAgaXMgdGhlIG5hbWUgb2YgYSBDbGFzc2ljIExvYWQgQmFsYW5jZXIuXG4gKiAgICsgIGBgZWxidjJgYCBpZiBgYElkZW50aWZpZXJgYCBpcyB0aGUgQVJOIG9mIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIsIEdhdGV3YXkgTG9hZCBCYWxhbmNlciwgb3IgTmV0d29yayBMb2FkIEJhbGFuY2VyIHRhcmdldCBncm91cC5cbiAqICAgKyAgYGB2cGMtbGF0dGljZWBgIGlmIGBgSWRlbnRpZmllcmBgIGlzIHRoZSBBUk4gb2YgYSBWUEMgTGF0dGljZSB0YXJnZXQgZ3JvdXAuXG4gKiAgIFxuICogIFJlcXVpcmVkIGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBuYW1lIG9mIGEgQ2xhc3NpYyBMb2FkIEJhbGFuY2VyLlxuICovXG5UeXBlOiBzdHJpbmdcbi8qKlxuICogSWRlbnRpZmllcyB0aGUgdHJhZmZpYyBzb3VyY2UuXG4gKiAgRm9yIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJzLCBHYXRld2F5IExvYWQgQmFsYW5jZXJzLCBOZXR3b3JrIExvYWQgQmFsYW5jZXJzLCBhbmQgVlBDIExhdHRpY2UsIHRoaXMgd2lsbCBiZSB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIGEgdGFyZ2V0IGdyb3VwIGluIHRoaXMgYWNjb3VudCBhbmQgUmVnaW9uLiBGb3IgQ2xhc3NpYyBMb2FkIEJhbGFuY2VycywgdGhpcyB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBDbGFzc2ljIExvYWQgQmFsYW5jZXIgaW4gdGhpcyBhY2NvdW50IGFuZCBSZWdpb24uXG4gKiAgRm9yIGV4YW1wbGU6IFxuICogICArICBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIEFSTjogYGBhcm46YXdzOmVsYXN0aWNsb2FkYmFsYW5jaW5nOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6dGFyZ2V0Z3JvdXAvbXktdGFyZ2V0cy8xMjM0NTY3ODkwMTIzNDU2YGBcbiAqICAgKyAgQ2xhc3NpYyBMb2FkIEJhbGFuY2VyIG5hbWU6IGBgbXktY2xhc3NpYy1sb2FkLWJhbGFuY2VyYGBcbiAqICAgKyAgVlBDIExhdHRpY2UgQVJOOiBgYGFybjphd3M6dnBjLWxhdHRpY2U6dXMtd2VzdC0yOjEyMzQ1Njc4OTAxMjp0YXJnZXRncm91cC90Zy0xMjM0NTY3ODkwMTIzNDU2YGBcbiAqICAgXG4gKiAgVG8gZ2V0IHRoZSBBUk4gb2YgYSB0YXJnZXQgZ3JvdXAgZm9yIGEgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciwgR2F0ZXdheSBMb2FkIEJhbGFuY2VyLCBvciBOZXR3b3JrIExvYWQgQmFsYW5jZXIsIG9yIHRoZSBuYW1lIG9mIGEgQ2xhc3NpYyBMb2FkIEJhbGFuY2VyLCB1c2UgdGhlIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgW0Rlc2NyaWJlVGFyZ2V0R3JvdXBzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVUYXJnZXRHcm91cHMuaHRtbCkgYW5kIFtEZXNjcmliZUxvYWRCYWxhbmNlcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUxvYWRCYWxhbmNlcnMuaHRtbCkgQVBJIG9wZXJhdGlvbnMuXG4gKiAgVG8gZ2V0IHRoZSBBUk4gb2YgYSB0YXJnZXQgZ3JvdXAgZm9yIFZQQyBMYXR0aWNlLCB1c2UgdGhlIFZQQyBMYXR0aWNlIFtHZXRUYXJnZXRHcm91cF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy1sYXR0aWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFRhcmdldEdyb3VwLmh0bWwpIEFQSSBvcGVyYXRpb24uXG4gKi9cbklkZW50aWZpZXI6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgY2FwYWNpdHkgcmVzZXJ2YXRpb24gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBjYXBhY2l0eSByZXNlcnZhdGlvbiBwcmVmZXJlbmNlLiBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGF2YWlsYWJsZTogXG4gKiAgICsgIGBgY2FwYWNpdHktcmVzZXJ2YXRpb25zLW9ubHlgYCAtIEF1dG8gU2NhbGluZyB3aWxsIG9ubHkgbGF1bmNoIGluc3RhbmNlcyBpbnRvIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gb3IgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcmVzb3VyY2UgZ3JvdXAuIElmIGNhcGFjaXR5IGlzbid0IGF2YWlsYWJsZSwgaW5zdGFuY2VzIHdpbGwgZmFpbCB0byBsYXVuY2guXG4gKiAgICsgIGBgY2FwYWNpdHktcmVzZXJ2YXRpb25zLWZpcnN0YGAgLSBBdXRvIFNjYWxpbmcgd2lsbCB0cnkgdG8gbGF1bmNoIGluc3RhbmNlcyBpbnRvIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gb3IgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcmVzb3VyY2UgZ3JvdXAgZmlyc3QuIElmIGNhcGFjaXR5IGlzbid0IGF2YWlsYWJsZSwgaW5zdGFuY2VzIHdpbGwgcnVuIGluIE9uLURlbWFuZCBjYXBhY2l0eS5cbiAqICAgKyAgYGBub25lYGAgLSBBdXRvIFNjYWxpbmcgd2lsbCBub3QgbGF1bmNoIGluc3RhbmNlcyBpbnRvIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24uIEluc3RhbmNlcyB3aWxsIHJ1biBpbiBPbi1EZW1hbmQgY2FwYWNpdHkuIFxuICogICArICBgYGRlZmF1bHRgYCAtIEF1dG8gU2NhbGluZyB1c2VzIHRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiBwcmVmZXJlbmNlIGZyb20geW91ciBsYXVuY2ggdGVtcGxhdGUgb3IgYW4gb3BlbiBDYXBhY2l0eSBSZXNlcnZhdGlvbi5cbiAqL1xuQ2FwYWNpdHlSZXNlcnZhdGlvblByZWZlcmVuY2U6IHN0cmluZ1xuQ2FwYWNpdHlSZXNlcnZhdGlvblRhcmdldD86IENhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXRcbn1cbi8qKlxuICogRGVzY3JpYmVzIGEgdGFyZ2V0IENhcGFjaXR5IFJlc2VydmF0aW9uIG9yIENhcGFjaXR5IFJlc2VydmF0aW9uIHJlc291cmNlIGdyb3VwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXQge1xuQ2FwYWNpdHlSZXNlcnZhdGlvbklkcz86IENhcGFjaXR5UmVzZXJ2YXRpb25JZHNcbkNhcGFjaXR5UmVzZXJ2YXRpb25SZXNvdXJjZUdyb3VwQXJucz86IENhcGFjaXR5UmVzZXJ2YXRpb25SZXNvdXJjZUdyb3VwQXJuc1xufVxuIl19
|
|
@@ -44,6 +44,7 @@ export interface _AWS_CASES_FIELD {
|
|
|
44
44
|
LastModifiedTime?: string;
|
|
45
45
|
Tags?: Tags;
|
|
46
46
|
Type: FieldType;
|
|
47
|
+
Attributes?: FieldAttributes;
|
|
47
48
|
}
|
|
48
49
|
export interface Tag {
|
|
49
50
|
/**
|
|
@@ -55,3 +56,18 @@ export interface Tag {
|
|
|
55
56
|
*/
|
|
56
57
|
Value: string;
|
|
57
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Field-type specific attributes that control rendering and validation behavior
|
|
61
|
+
*/
|
|
62
|
+
export interface FieldAttributes {
|
|
63
|
+
Text?: TextAttributes;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Field attributes for Text field type
|
|
67
|
+
*/
|
|
68
|
+
export interface TextAttributes {
|
|
69
|
+
/**
|
|
70
|
+
* Attribute that defines rendering component and validation
|
|
71
|
+
*/
|
|
72
|
+
IsMultiline: boolean;
|
|
73
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNhc2VzLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWNhc2VzLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSB0YWdzIHRoYXQgeW91IGF0dGFjaCB0byB0aGlzIGZpZWxkLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBvZiB0aGUgZmllbGQsIHdoaWNoIGRldGVybWluZXMgdmFsaWRhdGlvbiBydWxlcywgaW5wdXQgY29uc3RyYWludHMsIGFuZCBkaXNwbGF5IGZvcm1hdC4gRWFjaCB0eXBlIGhhcyBzcGVjaWZpYyBjb25zdHJhaW50czogVGV4dCAoc3RyaW5nIGlucHV0KSwgTnVtYmVyIChudW1lcmljIHZhbHVlcyksIEJvb2xlYW4gKHRydWUvZmFsc2UpLCBEYXRlVGltZSAoZGF0ZS90aW1lIHBpY2tlciksIFNpbmdsZVNlbGVjdCAoZHJvcGRvd24gb3B0aW9ucyksIFVybCAoVVJMIHZhbGlkYXRpb24pLCBVc2VyIChBbWF6b24gQ29ubmVjdCB1c2VyIHNlbGVjdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9IChcIlRleHRcIiB8IFwiTnVtYmVyXCIgfCBcIkJvb2xlYW5cIiB8IFwiRGF0ZVRpbWVcIiB8IFwiU2luZ2xlU2VsZWN0XCIgfCBcIlVybFwiIHwgXCJVc2VyXCIpXG5cbi8qKlxuICogQSBmaWVsZCBpbiB0aGUgQ2FzZXMgZG9tYWluLiBUaGlzIGZpZWxkIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBjYXNlIG9iamVjdCBtb2RlbCAodGhhdCBpcywgZGVmaW5lcyB3aGF0IGRhdGEgY2FuIGJlIGNhcHR1cmVkIG9uIGNhc2VzKSBpbiBhIENhc2VzIGRvbWFpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0NBU0VTX0ZJRUxEIHtcbi8qKlxuICogQSBkZXNjcmlwdGlvbiBleHBsYWluaW5nIHRoZSBwdXJwb3NlIGFuZCB1c2FnZSBvZiB0aGlzIGZpZWxkIGluIGNhc2VzLiBIZWxwcyBhZ2VudHMgYW5kIGFkbWluaXN0cmF0b3JzIHVuZGVyc3RhbmQgd2hhdCBpbmZvcm1hdGlvbiBzaG91bGQgYmUgY2FwdHVyZWQgaW4gdGhpcyBmaWVsZC5cbiAqL1xuRGVzY3JpcHRpb24/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNhc2VzLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWNhc2VzLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSB0YWdzIHRoYXQgeW91IGF0dGFjaCB0byB0aGlzIGZpZWxkLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBvZiB0aGUgZmllbGQsIHdoaWNoIGRldGVybWluZXMgdmFsaWRhdGlvbiBydWxlcywgaW5wdXQgY29uc3RyYWludHMsIGFuZCBkaXNwbGF5IGZvcm1hdC4gRWFjaCB0eXBlIGhhcyBzcGVjaWZpYyBjb25zdHJhaW50czogVGV4dCAoc3RyaW5nIGlucHV0KSwgTnVtYmVyIChudW1lcmljIHZhbHVlcyksIEJvb2xlYW4gKHRydWUvZmFsc2UpLCBEYXRlVGltZSAoZGF0ZS90aW1lIHBpY2tlciksIFNpbmdsZVNlbGVjdCAoZHJvcGRvd24gb3B0aW9ucyksIFVybCAoVVJMIHZhbGlkYXRpb24pLCBVc2VyIChBbWF6b24gQ29ubmVjdCB1c2VyIHNlbGVjdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9IChcIlRleHRcIiB8IFwiTnVtYmVyXCIgfCBcIkJvb2xlYW5cIiB8IFwiRGF0ZVRpbWVcIiB8IFwiU2luZ2xlU2VsZWN0XCIgfCBcIlVybFwiIHwgXCJVc2VyXCIpXG5cbi8qKlxuICogQSBmaWVsZCBpbiB0aGUgQ2FzZXMgZG9tYWluLiBUaGlzIGZpZWxkIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBjYXNlIG9iamVjdCBtb2RlbCAodGhhdCBpcywgZGVmaW5lcyB3aGF0IGRhdGEgY2FuIGJlIGNhcHR1cmVkIG9uIGNhc2VzKSBpbiBhIENhc2VzIGRvbWFpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0NBU0VTX0ZJRUxEIHtcbi8qKlxuICogQSBkZXNjcmlwdGlvbiBleHBsYWluaW5nIHRoZSBwdXJwb3NlIGFuZCB1c2FnZSBvZiB0aGlzIGZpZWxkIGluIGNhc2VzLiBIZWxwcyBhZ2VudHMgYW5kIGFkbWluaXN0cmF0b3JzIHVuZGVyc3RhbmQgd2hhdCBpbmZvcm1hdGlvbiBzaG91bGQgYmUgY2FwdHVyZWQgaW4gdGhpcyBmaWVsZC5cbiAqL1xuRGVzY3JpcHRpb24/OiBzdHJpbmdcbi8qKlxuICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBDYXNlcyBkb21haW4uXG4gKi9cbkRvbWFpbklkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgZmllbGQuXG4gKi9cbkZpZWxkQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiBhIGZpZWxkLlxuICovXG5GaWVsZElkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIGZpZWxkIGFzIGl0IGFwcGVhcnMgdG8gYWdlbnRzIGluIHRoZSBjYXNlIGludGVyZmFjZS4gU2hvdWxkIGJlIGRlc2NyaXB0aXZlIGFuZCB1c2VyLWZyaWVuZGx5IChlLmcuLCAnQ3VzdG9tZXIgUHJpb3JpdHkgTGV2ZWwnLCAnSXNzdWUgQ2F0ZWdvcnknKS5cbiAqL1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgaXMgYSBTeXN0ZW0gZmllbGQgKHByZWRlZmluZWQgYnkgQVdTKSBvciBhIEN1c3RvbSBmaWVsZCAoY3JlYXRlZCBieSB5b3VyIG9yZ2FuaXphdGlvbikuIFN5c3RlbSBmaWVsZHMgY2Fubm90IGJlIG1vZGlmaWVkIG9yIGRlbGV0ZWQuXG4gKi9cbk5hbWVzcGFjZT86IChcIlN5c3RlbVwiIHwgXCJDdXN0b21cIilcbi8qKlxuICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIGZpZWxkIHdhcyBjcmVhdGVkLlxuICovXG5DcmVhdGVkVGltZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgZmllbGQgd2FzIGNyZWF0ZWQgb3IgbGFzdCBtb2RpZmllZC5cbiAqL1xuTGFzdE1vZGlmaWVkVGltZT86IHN0cmluZ1xuVGFncz86IFRhZ3NcblR5cGU6IEZpZWxkVHlwZVxuQXR0cmlidXRlcz86IEZpZWxkQXR0cmlidXRlc1xufVxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUga2V5IG5hbWUgb2YgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyOCBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS5cbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIGZvciB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDAgdG8gMjU2IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICovXG5WYWx1ZTogc3RyaW5nXG59XG4vKipcbiAqIEZpZWxkLXR5cGUgc3BlY2lmaWMgYXR0cmlidXRlcyB0aGF0IGNvbnRyb2wgcmVuZGVyaW5nIGFuZCB2YWxpZGF0aW9uIGJlaGF2aW9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRBdHRyaWJ1dGVzIHtcblRleHQ/OiBUZXh0QXR0cmlidXRlc1xufVxuLyoqXG4gKiBGaWVsZCBhdHRyaWJ1dGVzIGZvciBUZXh0IGZpZWxkIHR5cGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXh0QXR0cmlidXRlcyB7XG4vKipcbiAqIEF0dHJpYnV0ZSB0aGF0IGRlZmluZXMgcmVuZGVyaW5nIGNvbXBvbmVudCBhbmQgdmFsaWRhdGlvblxuICovXG5Jc011bHRpbGluZTogYm9vbGVhblxufVxuIl19
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
export type StringCriteriaConditionList = StringCriteriaCondition[];
|
|
2
|
+
export type IntegerCriteriaConditionList = IntegerCriteriaCondition[];
|
|
3
|
+
export type DoubleCriteriaConditionList = DoubleCriteriaCondition[];
|
|
4
|
+
export type ResourceTagsCriteriaConditionList = ResourceTagsCriteriaCondition[];
|
|
5
|
+
/**
|
|
6
|
+
* Creates an AWS Compute Optimizer automation rule that automatically implements recommended actions based on your defined criteria and schedule. Automation rules are global resources that manage automated actions across all AWS Regions where Compute Optimizer Automation is available. Organization-level rules can only be created by the management account or delegated administrator.
|
|
7
|
+
*/
|
|
8
|
+
export interface _AWS_COMPUTEOPTIMIZER_AUTOMATIONRULE {
|
|
9
|
+
/**
|
|
10
|
+
* The Amazon Resource Name (ARN) of the automation rule.
|
|
11
|
+
*/
|
|
12
|
+
RuleArn?: string;
|
|
13
|
+
/**
|
|
14
|
+
* The unique identifier of the automation rule.
|
|
15
|
+
*/
|
|
16
|
+
RuleId?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The name of the automation rule.
|
|
19
|
+
*/
|
|
20
|
+
Name: string;
|
|
21
|
+
/**
|
|
22
|
+
* The description of the automation rule.
|
|
23
|
+
*/
|
|
24
|
+
Description?: string;
|
|
25
|
+
/**
|
|
26
|
+
* The type of automation rule.
|
|
27
|
+
*/
|
|
28
|
+
RuleType: ("AccountRule" | "OrganizationRule");
|
|
29
|
+
/**
|
|
30
|
+
* The revision number of the automation rule.
|
|
31
|
+
*/
|
|
32
|
+
RuleRevision?: string;
|
|
33
|
+
OrganizationConfiguration?: OrganizationConfiguration;
|
|
34
|
+
/**
|
|
35
|
+
* The types of recommended actions this rule will implement.
|
|
36
|
+
*
|
|
37
|
+
* @minItems 1
|
|
38
|
+
*/
|
|
39
|
+
RecommendedActionTypes: ("SnapshotAndDeleteUnattachedEbsVolume" | "UpgradeEbsVolumeType")[];
|
|
40
|
+
/**
|
|
41
|
+
* The AWS account ID that owns the automation rule.
|
|
42
|
+
*/
|
|
43
|
+
AccountId?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Rule priority within its group
|
|
46
|
+
*/
|
|
47
|
+
Priority?: string;
|
|
48
|
+
Schedule: Schedule;
|
|
49
|
+
Criteria?: Criteria;
|
|
50
|
+
/**
|
|
51
|
+
* The status of the automation rule.
|
|
52
|
+
*/
|
|
53
|
+
Status: ("Active" | "Inactive");
|
|
54
|
+
/**
|
|
55
|
+
* The timestamp when the automation rule was created.
|
|
56
|
+
*/
|
|
57
|
+
CreatedTimestamp?: string;
|
|
58
|
+
/**
|
|
59
|
+
* The timestamp when the automation rule was last updated.
|
|
60
|
+
*/
|
|
61
|
+
LastUpdatedTimestamp?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Tags associated with the automation rule.
|
|
64
|
+
*
|
|
65
|
+
* @maxItems 200
|
|
66
|
+
*/
|
|
67
|
+
Tags?: Tag[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Organization configuration for organization rules, including rule apply order and account scope.
|
|
71
|
+
*/
|
|
72
|
+
export interface OrganizationConfiguration {
|
|
73
|
+
/**
|
|
74
|
+
* When the rule should be applied relative to account rules
|
|
75
|
+
*/
|
|
76
|
+
RuleApplyOrder?: ("BeforeAccountRules" | "AfterAccountRules");
|
|
77
|
+
/**
|
|
78
|
+
* List of account IDs where the organization rule applies
|
|
79
|
+
*
|
|
80
|
+
* @minItems 1
|
|
81
|
+
* @maxItems 50
|
|
82
|
+
*/
|
|
83
|
+
AccountIds?: string[];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The schedule configuration for when the rule runs.
|
|
87
|
+
*/
|
|
88
|
+
export interface Schedule {
|
|
89
|
+
/**
|
|
90
|
+
* Schedule expression (e.g., cron or rate expression)
|
|
91
|
+
*/
|
|
92
|
+
ScheduleExpression?: string;
|
|
93
|
+
/**
|
|
94
|
+
* IANA timezone identifier
|
|
95
|
+
*/
|
|
96
|
+
ScheduleExpressionTimezone?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Execution window duration in minutes
|
|
99
|
+
*/
|
|
100
|
+
ExecutionWindowInMinutes?: number;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Filter criteria that specify which recommended actions qualify for implementation.
|
|
104
|
+
*/
|
|
105
|
+
export interface Criteria {
|
|
106
|
+
Region?: StringCriteriaConditionList;
|
|
107
|
+
ResourceArn?: StringCriteriaConditionList;
|
|
108
|
+
EbsVolumeType?: StringCriteriaConditionList;
|
|
109
|
+
EbsVolumeSizeInGib?: IntegerCriteriaConditionList;
|
|
110
|
+
EstimatedMonthlySavings?: DoubleCriteriaConditionList;
|
|
111
|
+
ResourceTag?: ResourceTagsCriteriaConditionList;
|
|
112
|
+
LookBackPeriodInDays?: IntegerCriteriaConditionList;
|
|
113
|
+
RestartNeeded?: StringCriteriaConditionList;
|
|
114
|
+
}
|
|
115
|
+
export interface StringCriteriaCondition {
|
|
116
|
+
Comparison?: ("StringEquals" | "StringNotEquals" | "StringEqualsIgnoreCase" | "StringNotEqualsIgnoreCase" | "StringLike" | "StringNotLike" | "NumericEquals" | "NumericNotEquals" | "NumericLessThan" | "NumericLessThanEquals" | "NumericGreaterThan" | "NumericGreaterThanEquals");
|
|
117
|
+
Values?: string[];
|
|
118
|
+
}
|
|
119
|
+
export interface IntegerCriteriaCondition {
|
|
120
|
+
Comparison?: ("StringEquals" | "StringNotEquals" | "StringEqualsIgnoreCase" | "StringNotEqualsIgnoreCase" | "StringLike" | "StringNotLike" | "NumericEquals" | "NumericNotEquals" | "NumericLessThan" | "NumericLessThanEquals" | "NumericGreaterThan" | "NumericGreaterThanEquals");
|
|
121
|
+
Values?: number[];
|
|
122
|
+
}
|
|
123
|
+
export interface DoubleCriteriaCondition {
|
|
124
|
+
Comparison?: ("StringEquals" | "StringNotEquals" | "StringEqualsIgnoreCase" | "StringNotEqualsIgnoreCase" | "StringLike" | "StringNotLike" | "NumericEquals" | "NumericNotEquals" | "NumericLessThan" | "NumericLessThanEquals" | "NumericGreaterThan" | "NumericGreaterThanEquals");
|
|
125
|
+
Values?: number[];
|
|
126
|
+
}
|
|
127
|
+
export interface ResourceTagsCriteriaCondition {
|
|
128
|
+
Comparison?: ("StringEquals" | "StringNotEquals" | "StringEqualsIgnoreCase" | "StringNotEqualsIgnoreCase" | "StringLike" | "StringNotLike" | "NumericEquals" | "NumericNotEquals" | "NumericLessThan" | "NumericLessThanEquals" | "NumericGreaterThan" | "NumericGreaterThanEquals");
|
|
129
|
+
Key?: string;
|
|
130
|
+
Values?: string[];
|
|
131
|
+
}
|
|
132
|
+
export interface Tag {
|
|
133
|
+
Key: string;
|
|
134
|
+
Value: string;
|
|
135
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNvbXB1dGVvcHRpbWl6ZXItYXV0b21hdGlvbnJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtY29tcHV0ZW9wdGltaXplci1hdXRvbWF0aW9ucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU3RyaW5nQ3JpdGVyaWFDb25kaXRpb25MaXN0ID0gU3RyaW5nQ3JpdGVyaWFDb25kaXRpb25bXVxuZXhwb3J0IHR5cGUgSW50ZWdlckNyaXRlcmlhQ29uZGl0aW9uTGlzdCA9IEludGVnZXJDcml0ZXJpYUNvbmRpdGlvbltdXG5leHBvcnQgdHlwZSBEb3VibGVDcml0ZXJpYUNvbmRpdGlvbkxpc3QgPSBEb3VibGVDcml0ZXJpYUNvbmRpdGlvbltdXG5leHBvcnQgdHlwZSBSZXNvdXJjZVRhZ3NDcml0ZXJpYUNvbmRpdGlvbkxpc3QgPSBSZXNvdXJjZVRhZ3NDcml0ZXJpYUNvbmRpdGlvbltdXG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBV1MgQ29tcHV0ZSBPcHRpbWl6ZXIgYXV0b21hdGlvbiBydWxlIHRoYXQgYXV0b21hdGljYWxseSBpbXBsZW1lbnRzIHJlY29tbWVuZGVkIGFjdGlvbnMgYmFzZWQgb24geW91ciBkZWZpbmVkIGNyaXRlcmlhIGFuZCBzY2hlZHVsZS4gQXV0b21hdGlvbiBydWxlcyBhcmUgZ2xvYmFsIHJlc291cmNlcyB0aGF0IG1hbmFnZSBhdXRvbWF0ZWQgYWN0aW9ucyBhY3Jvc3MgYWxsIEFXUyBSZWdpb25zIHdoZXJlIENvbXB1dGUgT3B0aW1pemVyIEF1dG9tYXRpb24gaXMgYXZhaWxhYmxlLiBPcmdhbml6YXRpb24tbGV2ZWwgcnVsZXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgbWFuYWdlbWVudCBhY2NvdW50IG9yIGRlbGVnYXRlZCBhZG1pbmlzdHJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQ09NUFVURU9QVElNSVpFUl9BVVRPTUFUSU9OUlVMRSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYXV0b21hdGlvbiBydWxlLlxuICovXG5SdWxlQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYXV0b21hdGlvbiBydWxlLlxuICovXG5SdWxlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGF1dG9tYXRpb24gcnVsZS5cbiAqL1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYXV0b21hdGlvbiBydWxlLlxuICovXG5EZXNjcmlwdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBhdXRvbWF0aW9uIHJ1bGUuXG4gKi9cblJ1bGVUeXBlOiAoXCJBY2NvdW50UnVsZVwiIHwgXCJPcmdhbml6YXRpb25SdWxlXCIpXG4vKipcbiAqIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGF1dG9tYXRpb24gcnVsZS5cbiAqL1xuUnVsZVJldmlzaW9uPzogc3RyaW5nXG5Pcmdhbml6YXRpb25Db25maWd1cmF0aW9uPzogT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvblxuLyoqXG4gKiBUaGUgdHlwZXMgb2YgcmVjb21tZW5kZWQgYWN0aW9ucyB0aGlzIHJ1bGUgd2lsbCBpbXBsZW1lbnQuXG4gKiBcbiAqIEBtaW5JdGVtcyAxXG4gKi9cblJlY29tbWVuZGVkQWN0aW9uVHlwZXM6IChcIlNuYXBzaG90QW5kRGVsZXRlVW5hdHRhY2hlZEVic1ZvbHVtZVwiIHwgXCJVcGdyYWRlRWJzVm9sdW1lVHlwZVwiKVtdXG4vKipcbiAqIFRoZSBBV1MgYWNjb3VudCBJRCB0aGF0IG93bnMgdGhlIGF1dG9tYXRpb24gcnVsZS5cbiAqL1xuQWNjb3VudElkPzogc3RyaW5nXG4vKipcbiAqIFJ1bGUgcHJpb3JpdHkgd2l0aGluIGl0cyBncm91cFxuICovXG5Qcmlvcml0eT86IHN0cmluZ1xuU2NoZWR1bGU6IFNjaGVkdWxlXG5Dcml0ZXJpYT86IENyaXRlcmlhXG4vKipcbiAqIFRoZSBzdGF0dXMgb2YgdGhlIGF1dG9tYXRpb24gcnVsZS5cbiAqL1xuU3RhdHVzOiAoXCJBY3RpdmVcIiB8IFwiSW5hY3RpdmVcIilcbi8qKlxuICogVGhlIHRpbWVzdGFtcCB3aGVuIHRoZSBhdXRvbWF0aW9uIHJ1bGUgd2FzIGNyZWF0ZWQuXG4gKi9cbkNyZWF0ZWRUaW1lc3RhbXA/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRpbWVzdGFtcCB3aGVuIHRoZSBhdXRvbWF0aW9uIHJ1bGUgd2FzIGxhc3QgdXBkYXRlZC5cbiAqL1xuTGFzdFVwZGF0ZWRUaW1lc3RhbXA/OiBzdHJpbmdcbi8qKlxuICogVGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIGF1dG9tYXRpb24gcnVsZS5cbiAqIFxuICogQG1heEl0ZW1zIDIwMFxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogT3JnYW5pemF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIG9yZ2FuaXphdGlvbiBydWxlcywgaW5jbHVkaW5nIHJ1bGUgYXBwbHkgb3JkZXIgYW5kIGFjY291bnQgc2NvcGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFdoZW4gdGhlIHJ1bGUgc2hvdWxkIGJlIGFwcGxpZWQgcmVsYXRpdmUgdG8gYWNjb3VudCBydWxlc1xuICovXG5SdWxlQXBwbHlPcmRlcj86IChcIkJlZm9yZUFjY291bnRSdWxlc1wiIHwgXCJBZnRlckFjY291bnRSdWxlc1wiKVxuLyoqXG4gKiBMaXN0IG9mIGFjY291bnQgSURzIHdoZXJlIHRoZSBvcmdhbml6YXRpb24gcnVsZSBhcHBsaWVzXG4gKiBcbiAqIEBtaW5JdGVtcyAxXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuQWNjb3VudElkcz86IHN0cmluZ1tdXG59XG4vKipcbiAqIFRoZSBzY2hlZHVsZSBjb25maWd1cmF0aW9uIGZvciB3aGVuIHRoZSBydWxlIHJ1bnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGUge1xuLyoqXG4gKiBTY2hlZHVsZSBleHByZXNzaW9uIChlLmcuLCBjcm9uIG9yIHJhdGUgZXhwcmVzc2lvbilcbiAqL1xuU2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nXG4vKipcbiAqIElBTkEgdGltZXpvbmUgaWRlbnRpZmllclxuICovXG5TY2hlZHVsZUV4cHJlc3Npb25UaW1lem9uZT86IHN0cmluZ1xuLyoqXG4gKiBFeGVjdXRpb24gd2luZG93IGR1cmF0aW9uIGluIG1pbnV0ZXNcbiAqL1xuRXhlY3V0aW9uV2luZG93SW5NaW51dGVzPzogbnVtYmVyXG59XG4vKipcbiAqIEZpbHRlciBjcml0ZXJpYSB0aGF0IHNwZWNpZnkgd2hpY2ggcmVjb21tZW5kZWQgYWN0aW9ucyBxdWFsaWZ5IGZvciBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYSB7XG5SZWdpb24/OiBTdHJpbmdDcml0ZXJpYUNvbmRpdGlvbkxpc3RcblJlc291cmNlQXJuPzogU3RyaW5nQ3JpdGVyaWFDb25kaXRpb25MaXN0XG5FYnNWb2x1bWVUeXBlPzogU3RyaW5nQ3JpdGVyaWFDb25kaXRpb25MaXN0XG5FYnNWb2x1bWVTaXplSW5HaWI/OiBJbnRlZ2VyQ3JpdGVyaWFDb25kaXRpb25MaXN0XG5Fc3RpbWF0ZWRNb250aGx5U2F2aW5ncz86IERvdWJsZUNyaXRlcmlhQ29uZGl0aW9uTGlzdFxuUmVzb3VyY2VUYWc/OiBSZXNvdXJjZVRhZ3NDcml0ZXJpYUNvbmRpdGlvbkxpc3Rcbkxvb2tCYWNrUGVyaW9kSW5EYXlzPzogSW50ZWdlckNyaXRlcmlhQ29uZGl0aW9uTGlzdFxuUmVzdGFydE5lZWRlZD86IFN0cmluZ0NyaXRlcmlhQ29uZGl0aW9uTGlzdFxufVxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdDcml0ZXJpYUNvbmRpdGlvbiB7XG5Db21wYXJpc29uPzogKFwiU3RyaW5nRXF1YWxzXCIgfCBcIlN0cmluZ05vdEVxdWFsc1wiIHwgXCJTdHJpbmdFcXVhbHNJZ25vcmVDYXNlXCIgfCBcIlN0cmluZ05vdEVxdWFsc0lnbm9yZUNhc2VcIiB8IFwiU3RyaW5nTGlrZVwiIHwgXCJTdHJpbmdOb3RMaWtlXCIgfCBcIk51bWVyaWNFcXVhbHNcIiB8IFwiTnVtZXJpY05vdEVxdWFsc1wiIHwgXCJOdW1lcmljTGVzc1RoYW5cIiB8IFwiTnVtZXJpY0xlc3NUaGFuRXF1YWxzXCIgfCBcIk51bWVyaWNHcmVhdGVyVGhhblwiIHwgXCJOdW1lcmljR3JlYXRlclRoYW5FcXVhbHNcIilcblZhbHVlcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJDcml0ZXJpYUNvbmRpdGlvbiB7XG5Db21wYXJpc29uPzogKFwiU3RyaW5nRXF1YWxzXCIgfCBcIlN0cmluZ05vdEVxdWFsc1wiIHwgXCJTdHJpbmdFcXVhbHNJZ25vcmVDYXNlXCIgfCBcIlN0cmluZ05vdEVxdWFsc0lnbm9yZUNhc2VcIiB8IFwiU3RyaW5nTGlrZVwiIHwgXCJTdHJpbmdOb3RMaWtlXCIgfCBcIk51bWVyaWNFcXVhbHNcIiB8IFwiTnVtZXJpY05vdEVxdWFsc1wiIHwgXCJOdW1lcmljTGVzc1RoYW5cIiB8IFwiTnVtZXJpY0xlc3NUaGFuRXF1YWxzXCIgfCBcIk51bWVyaWNHcmVhdGVyVGhhblwiIHwgXCJOdW1lcmljR3JlYXRlclRoYW5FcXVhbHNcIilcblZhbHVlcz86IG51bWJlcltdXG59XG5leHBvcnQgaW50ZXJmYWNlIERvdWJsZUNyaXRlcmlhQ29uZGl0aW9uIHtcbkNvbXBhcmlzb24/OiAoXCJTdHJpbmdFcXVhbHNcIiB8IFwiU3RyaW5nTm90RXF1YWxzXCIgfCBcIlN0cmluZ0VxdWFsc0lnbm9yZUNhc2VcIiB8IFwiU3RyaW5nTm90RXF1YWxzSWdub3JlQ2FzZVwiIHwgXCJTdHJpbmdMaWtlXCIgfCBcIlN0cmluZ05vdExpa2VcIiB8IFwiTnVtZXJpY0VxdWFsc1wiIHwgXCJOdW1lcmljTm90RXF1YWxzXCIgfCBcIk51bWVyaWNMZXNzVGhhblwiIHwgXCJOdW1lcmljTGVzc1RoYW5FcXVhbHNcIiB8IFwiTnVtZXJpY0dyZWF0ZXJUaGFuXCIgfCBcIk51bWVyaWNHcmVhdGVyVGhhbkVxdWFsc1wiKVxuVmFsdWVzPzogbnVtYmVyW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VUYWdzQ3JpdGVyaWFDb25kaXRpb24ge1xuQ29tcGFyaXNvbj86IChcIlN0cmluZ0VxdWFsc1wiIHwgXCJTdHJpbmdOb3RFcXVhbHNcIiB8IFwiU3RyaW5nRXF1YWxzSWdub3JlQ2FzZVwiIHwgXCJTdHJpbmdOb3RFcXVhbHNJZ25vcmVDYXNlXCIgfCBcIlN0cmluZ0xpa2VcIiB8IFwiU3RyaW5nTm90TGlrZVwiIHwgXCJOdW1lcmljRXF1YWxzXCIgfCBcIk51bWVyaWNOb3RFcXVhbHNcIiB8IFwiTnVtZXJpY0xlc3NUaGFuXCIgfCBcIk51bWVyaWNMZXNzVGhhbkVxdWFsc1wiIHwgXCJOdW1lcmljR3JlYXRlclRoYW5cIiB8IFwiTnVtZXJpY0dyZWF0ZXJUaGFuRXF1YWxzXCIpXG5LZXk/OiBzdHJpbmdcblZhbHVlcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5LZXk6IHN0cmluZ1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
|
|
@@ -53,6 +53,10 @@ export interface _AWS_CUSTOMERPROFILES_INTEGRATION {
|
|
|
53
53
|
* @maxItems 1
|
|
54
54
|
*/
|
|
55
55
|
EventTriggerNames?: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Scope of the integration, such as 'PROFILE' or 'DOMAIN'
|
|
58
|
+
*/
|
|
59
|
+
Scope?: ("PROFILE" | "DOMAIN");
|
|
56
60
|
}
|
|
57
61
|
export interface FlowDefinition {
|
|
58
62
|
FlowName: string;
|