@horietakehiro/aws-cdk-utul 0.33.31 → 0.33.32

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.
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Resource Type definition for AWS::DSQL::Cluster
3
+ */
4
+ export interface _AWS_DSQL_CLUSTER {
5
+ /**
6
+ * Whether deletion protection is enabled in this cluster.
7
+ */
8
+ DeletionProtectionEnabled?: boolean;
9
+ Tags?: Tag[];
10
+ /**
11
+ * The Amazon Resource Name (ARN) for the cluster.
12
+ */
13
+ ResourceArn?: string;
14
+ /**
15
+ * The ID of the created cluster.
16
+ */
17
+ Identifier?: string;
18
+ /**
19
+ * The time of when the cluster was created in ISO-8601 format.
20
+ */
21
+ CreationTime?: string;
22
+ /**
23
+ * The status of the cluster.
24
+ */
25
+ Status?: string;
26
+ }
27
+ /**
28
+ * A map of key and value pairs to use to tag your cluster.
29
+ */
30
+ export interface Tag {
31
+ /**
32
+ * The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
33
+ */
34
+ Key: string;
35
+ /**
36
+ * The value for the tag. You can specify a value that is 1 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
37
+ */
38
+ Value: string;
39
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRzcWwtY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1kc3FsLWNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb3VyY2UgVHlwZSBkZWZpbml0aW9uIGZvciBBV1M6OkRTUUw6OkNsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0RTUUxfQ0xVU1RFUiB7XG4vKipcbiAqIFdoZXRoZXIgZGVsZXRpb24gcHJvdGVjdGlvbiBpcyBlbmFibGVkIGluIHRoaXMgY2x1c3Rlci5cbiAqL1xuRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZD86IGJvb2xlYW5cblRhZ3M/OiBUYWdbXVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBjbHVzdGVyLlxuICovXG5SZXNvdXJjZUFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGNyZWF0ZWQgY2x1c3Rlci5cbiAqL1xuSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGltZSBvZiB3aGVuIHRoZSBjbHVzdGVyIHdhcyBjcmVhdGVkIGluIElTTy04NjAxIGZvcm1hdC5cbiAqL1xuQ3JlYXRpb25UaW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzdGF0dXMgb2YgdGhlIGNsdXN0ZXIuXG4gKi9cblN0YXR1cz86IHN0cmluZ1xufVxuLyoqXG4gKiBBIG1hcCBvZiBrZXkgYW5kIHZhbHVlIHBhaXJzIHRvIHVzZSB0byB0YWcgeW91ciBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSBrZXkgbmFtZSBvZiB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMTI4IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbiJdfQ==
@@ -1,31 +1,41 @@
1
+ /**
2
+ * Value of an enhanced metric
3
+ */
4
+ export type EnhancedMetric = ("IncomingBytes" | "IncomingRecords" | "OutgoingBytes" | "OutgoingRecords" | "WriteProvisionedThroughputExceeded" | "ReadProvisionedThroughputExceeded" | "IteratorAgeMilliseconds" | "ALL");
1
5
  /**
2
6
  * Resource Type definition for AWS::Kinesis::Stream
3
7
  */
4
8
  export interface _AWS_KINESIS_STREAM {
5
- StreamModeDetails?: StreamModeDetails;
6
- StreamEncryption?: StreamEncryption;
7
9
  /**
8
10
  * The Amazon resource name (ARN) of the Kinesis stream
9
11
  */
10
12
  Arn?: string;
11
13
  /**
12
- * The number of hours for the data records that are stored in shards to remain accessible.
14
+ * The name of the Kinesis stream.
13
15
  */
14
- RetentionPeriodHours?: number;
16
+ Name?: string;
15
17
  /**
16
- * An arbitrary set of tags (key–value pairs) to associate with the Kinesis stream.
18
+ * The final list of shard-level metrics
17
19
  *
18
- * @maxItems 50
20
+ * @maxItems 7
19
21
  */
20
- Tags?: Tag[];
22
+ DesiredShardLevelMetrics?: EnhancedMetric[];
21
23
  /**
22
- * The name of the Kinesis stream.
24
+ * The number of hours for the data records that are stored in shards to remain accessible.
23
25
  */
24
- Name?: string;
26
+ RetentionPeriodHours?: number;
25
27
  /**
26
28
  * The number of shards that the stream uses. Required when StreamMode = PROVISIONED is passed.
27
29
  */
28
30
  ShardCount?: number;
31
+ StreamModeDetails?: StreamModeDetails;
32
+ StreamEncryption?: StreamEncryption;
33
+ /**
34
+ * An arbitrary set of tags (key–value pairs) to associate with the Kinesis stream.
35
+ *
36
+ * @maxItems 50
37
+ */
38
+ Tags?: Tag[];
29
39
  }
30
40
  /**
31
41
  * The mode in which the stream is running.
@@ -55,12 +65,12 @@ export interface StreamEncryption {
55
65
  * An arbitrary set of tags (key-value pairs) to associate with the Kinesis stream.
56
66
  */
57
67
  export interface Tag {
58
- /**
59
- * The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
60
- */
61
- Value: string;
62
68
  /**
63
69
  * The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
64
70
  */
65
71
  Key: string;
72
+ /**
73
+ * The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
74
+ */
75
+ Value: string;
66
76
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWtpbmVzaXMtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWtpbmVzaXMtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpLaW5lc2lzOjpTdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0tJTkVTSVNfU1RSRUFNIHtcblN0cmVhbU1vZGVEZXRhaWxzPzogU3RyZWFtTW9kZURldGFpbHNcblN0cmVhbUVuY3J5cHRpb24/OiBTdHJlYW1FbmNyeXB0aW9uXG4vKipcbiAqIFRoZSBBbWF6b24gcmVzb3VyY2UgbmFtZSAoQVJOKSBvZiB0aGUgS2luZXNpcyBzdHJlYW1cbiAqL1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgaG91cnMgZm9yIHRoZSBkYXRhIHJlY29yZHMgdGhhdCBhcmUgc3RvcmVkIGluIHNoYXJkcyB0byByZW1haW4gYWNjZXNzaWJsZS5cbiAqL1xuUmV0ZW50aW9uUGVyaW9kSG91cnM/OiBudW1iZXJcbi8qKlxuICogQW4gYXJiaXRyYXJ5IHNldCBvZiB0YWdzIChrZXnigJN2YWx1ZSBwYWlycykgdG8gYXNzb2NpYXRlIHdpdGggdGhlIEtpbmVzaXMgc3RyZWFtLlxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBLaW5lc2lzIHN0cmVhbS5cbiAqL1xuTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHNoYXJkcyB0aGF0IHRoZSBzdHJlYW0gdXNlcy4gUmVxdWlyZWQgd2hlbiBTdHJlYW1Nb2RlID0gUFJPVklTSU9ORUQgaXMgcGFzc2VkLlxuICovXG5TaGFyZENvdW50PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtb2RlIGluIHdoaWNoIHRoZSBzdHJlYW0gaXMgcnVubmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1Nb2RlRGV0YWlscyB7XG4vKipcbiAqIFRoZSBtb2RlIG9mIHRoZSBzdHJlYW1cbiAqL1xuU3RyZWFtTW9kZTogKFwiT05fREVNQU5EXCIgfCBcIlBST1ZJU0lPTkVEXCIpXG59XG4vKipcbiAqIFdoZW4gc3BlY2lmaWVkLCBlbmFibGVzIG9yIHVwZGF0ZXMgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB1c2luZyBhbiBBV1MgS01TIGtleSBmb3IgYSBzcGVjaWZpZWQgc3RyZWFtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbUVuY3J5cHRpb24ge1xuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiB0eXBlIHRvIHVzZS4gVGhlIG9ubHkgdmFsaWQgdmFsdWUgaXMgS01TLiBcbiAqL1xuRW5jcnlwdGlvblR5cGU6IFwiS01TXCJcbi8qKlxuICogVGhlIEdVSUQgZm9yIHRoZSBjdXN0b21lci1tYW5hZ2VkIEFXUyBLTVMga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4gVGhpcyB2YWx1ZSBjYW4gYmUgYSBnbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciwgYSBmdWxseSBzcGVjaWZpZWQgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgdG8gZWl0aGVyIGFuIGFsaWFzIG9yIGEga2V5LCBvciBhbiBhbGlhcyBuYW1lIHByZWZpeGVkIGJ5IFwiYWxpYXMvXCIuWW91IGNhbiBhbHNvIHVzZSBhIG1hc3RlciBrZXkgb3duZWQgYnkgS2luZXNpcyBEYXRhIFN0cmVhbXMgYnkgc3BlY2lmeWluZyB0aGUgYWxpYXMgYXdzL2tpbmVzaXMuXG4gKi9cbktleUlkOiAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiBzdHJpbmcpXG59XG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgS2luZXNpcyBzdHJlYW0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIHZhbHVlIGZvciB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDAgdG8gMjU1IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXkgbmFtZSBvZiB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMTI4IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICovXG5LZXk6IHN0cmluZ1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWtpbmVzaXMtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWtpbmVzaXMtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhbHVlIG9mIGFuIGVuaGFuY2VkIG1ldHJpY1xuICovXG5leHBvcnQgdHlwZSBFbmhhbmNlZE1ldHJpYyA9IChcIkluY29taW5nQnl0ZXNcIiB8IFwiSW5jb21pbmdSZWNvcmRzXCIgfCBcIk91dGdvaW5nQnl0ZXNcIiB8IFwiT3V0Z29pbmdSZWNvcmRzXCIgfCBcIldyaXRlUHJvdmlzaW9uZWRUaHJvdWdocHV0RXhjZWVkZWRcIiB8IFwiUmVhZFByb3Zpc2lvbmVkVGhyb3VnaHB1dEV4Y2VlZGVkXCIgfCBcIkl0ZXJhdG9yQWdlTWlsbGlzZWNvbmRzXCIgfCBcIkFMTFwiKVxuXG4vKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpLaW5lc2lzOjpTdHJlYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0tJTkVTSVNfU1RSRUFNIHtcbi8qKlxuICogVGhlIEFtYXpvbiByZXNvdXJjZSBuYW1lIChBUk4pIG9mIHRoZSBLaW5lc2lzIHN0cmVhbVxuICovXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIEtpbmVzaXMgc3RyZWFtLlxuICovXG5OYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBmaW5hbCBsaXN0IG9mIHNoYXJkLWxldmVsIG1ldHJpY3NcbiAqIFxuICogQG1heEl0ZW1zIDdcbiAqL1xuRGVzaXJlZFNoYXJkTGV2ZWxNZXRyaWNzPzogRW5oYW5jZWRNZXRyaWNbXVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGhvdXJzIGZvciB0aGUgZGF0YSByZWNvcmRzIHRoYXQgYXJlIHN0b3JlZCBpbiBzaGFyZHMgdG8gcmVtYWluIGFjY2Vzc2libGUuXG4gKi9cblJldGVudGlvblBlcmlvZEhvdXJzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2Ygc2hhcmRzIHRoYXQgdGhlIHN0cmVhbSB1c2VzLiBSZXF1aXJlZCB3aGVuIFN0cmVhbU1vZGUgPSBQUk9WSVNJT05FRCBpcyBwYXNzZWQuXG4gKi9cblNoYXJkQ291bnQ/OiBudW1iZXJcblN0cmVhbU1vZGVEZXRhaWxzPzogU3RyZWFtTW9kZURldGFpbHNcblN0cmVhbUVuY3J5cHRpb24/OiBTdHJlYW1FbmNyeXB0aW9uXG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V54oCTdmFsdWUgcGFpcnMpIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBLaW5lc2lzIHN0cmVhbS5cbiAqIFxuICogQG1heEl0ZW1zIDUwXG4gKi9cblRhZ3M/OiBUYWdbXVxufVxuLyoqXG4gKiBUaGUgbW9kZSBpbiB3aGljaCB0aGUgc3RyZWFtIGlzIHJ1bm5pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtTW9kZURldGFpbHMge1xuLyoqXG4gKiBUaGUgbW9kZSBvZiB0aGUgc3RyZWFtXG4gKi9cblN0cmVhbU1vZGU6IChcIk9OX0RFTUFORFwiIHwgXCJQUk9WSVNJT05FRFwiKVxufVxuLyoqXG4gKiBXaGVuIHNwZWNpZmllZCwgZW5hYmxlcyBvciB1cGRhdGVzIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdXNpbmcgYW4gQVdTIEtNUyBrZXkgZm9yIGEgc3BlY2lmaWVkIHN0cmVhbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1FbmNyeXB0aW9uIHtcbi8qKlxuICogVGhlIGVuY3J5cHRpb24gdHlwZSB0byB1c2UuIFRoZSBvbmx5IHZhbGlkIHZhbHVlIGlzIEtNUy4gXG4gKi9cbkVuY3J5cHRpb25UeXBlOiBcIktNU1wiXG4vKipcbiAqIFRoZSBHVUlEIGZvciB0aGUgY3VzdG9tZXItbWFuYWdlZCBBV1MgS01TIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpb24uIFRoaXMgdmFsdWUgY2FuIGJlIGEgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIsIGEgZnVsbHkgc3BlY2lmaWVkIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIHRvIGVpdGhlciBhbiBhbGlhcyBvciBhIGtleSwgb3IgYW4gYWxpYXMgbmFtZSBwcmVmaXhlZCBieSBcImFsaWFzL1wiLllvdSBjYW4gYWxzbyB1c2UgYSBtYXN0ZXIga2V5IG93bmVkIGJ5IEtpbmVzaXMgRGF0YSBTdHJlYW1zIGJ5IHNwZWNpZnlpbmcgdGhlIGFsaWFzIGF3cy9raW5lc2lzLlxuICovXG5LZXlJZDogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxufVxuLyoqXG4gKiBBbiBhcmJpdHJhcnkgc2V0IG9mIHRhZ3MgKGtleS12YWx1ZSBwYWlycykgdG8gYXNzb2NpYXRlIHdpdGggdGhlIEtpbmVzaXMgc3RyZWFtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSBrZXkgbmFtZSBvZiB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMTI4IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMCB0byAyNTUgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbiJdfQ==
@@ -496,14 +496,6 @@ export interface Endpoint {
496
496
  */
497
497
  Port?: string;
498
498
  }
499
- /**
500
- * This data type represents the information you need to connect to an Amazon RDS DB instance. This data type is used as a response element in the following actions:
501
- * + ``CreateDBInstance``
502
- * + ``DescribeDBInstances``
503
- * + ``DeleteDBInstance``
504
- *
505
- * For the data structure that represents Amazon Aurora DB cluster endpoints, see ``DBClusterEndpoint``.
506
- */
507
499
  export interface ReadEndpoint {
508
500
  /**
509
501
  * The host address of the reader endpoint.
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXJkcy1kYmNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtcmRzLWRiY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXIgb3IgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyBhbiBBdXJvcmEgREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmEuQ3JlYXRlSW5zdGFuY2UuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGEgTXVsdGktQVogREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhIE11bHRpLUFaIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9jcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgIFlvdSBjYW4gb25seSBjcmVhdGUgdGhpcyByZXNvdXJjZSBpbiBBV1MgUmVnaW9ucyB3aGVyZSBBbWF6b24gQXVyb3JhIG9yIE11bHRpLUFaIERCIGNsdXN0ZXJzIGFyZSBzdXBwb3J0ZWQuXG4gKiAgICAqVXBkYXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFdoZW4gcHJvcGVydGllcyBsYWJlbGVkIFwiKlVwZGF0ZSByZXF1aXJlczoqIFtSZXBsYWNlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXJlcGxhY2VtZW50KVwiIGFyZSB1cGRhdGVkLCBBV1MgQ2xvdWRGb3JtYXRpb24gZmlyc3QgY3JlYXRlcyBhIHJlcGxhY2VtZW50IERCIGNsdXN0ZXIsIHRoZW4gY2hhbmdlcyByZWZlcmVuY2VzIGZyb20gb3RoZXIgZGVwZW5kZW50IHJlc291cmNlcyB0byBwb2ludCB0byB0aGUgcmVwbGFjZW1lbnQgREIgY2x1c3RlciwgYW5kIGZpbmFsbHkgZGVsZXRlcyB0aGUgb2xkIERCIGNsdXN0ZXIuXG4gKiAgIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBkYXRhYmFzZSBiZWZvcmUgdXBkYXRpbmcgdGhlIHN0YWNrLiBJZiB5b3UgZG9uJ3QsIHlvdSBsb3NlIHRoZSBkYXRhIHdoZW4gQVdTIENsb3VkRm9ybWF0aW9uIHJlcGxhY2VzIHlvdXIgREIgY2x1c3Rlci4gVG8gcHJlc2VydmUgeW91ciBkYXRhLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOlxuICogICAxLiAgRGVhY3RpdmF0ZSBhbnkgYXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHRoZSBEQiBjbHVzdGVyIHNvIHRoYXQgdGhlcmUncyBubyBhY3Rpdml0eSBvbiB0aGUgREIgaW5zdGFuY2UuXG4gKiAgIDEuICBDcmVhdGUgYSBzbmFwc2hvdCBvZiB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ3JlYXRpbmcgYSBEQiBjbHVzdGVyIHNuYXBzaG90XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9DcmVhdGVTbmFwc2hvdENsdXN0ZXIuaHRtbCkuXG4gKiAgIDEuICBJZiB5b3Ugd2FudCB0byByZXN0b3JlIHlvdXIgREIgY2x1c3RlciB1c2luZyBhIERCIGNsdXN0ZXIgc25hcHNob3QsIG1vZGlmeSB0aGUgdXBkYXRlZCB0ZW1wbGF0ZSB3aXRoIHlvdXIgREIgY2x1c3RlciBjaGFuZ2VzIGFuZCBhZGQgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgd2l0aCB0aGUgSUQgb2YgdGhlIERCIGNsdXN0ZXIgc25hcHNob3QgdGhhdCB5b3Ugd2FudCB0byB1c2UuXG4gKiAgQWZ0ZXIgeW91IHJlc3RvcmUgYSBEQiBjbHVzdGVyIHdpdGggYSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBzYW1lIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgZm9yIGFueSBmdXR1cmUgdXBkYXRlcyB0byB0aGUgREIgY2x1c3Rlci4gV2hlbiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5IGZvciBhbiB1cGRhdGUsIHRoZSBEQiBjbHVzdGVyIGlzIG5vdCByZXN0b3JlZCBmcm9tIHRoZSBEQiBjbHVzdGVyIHNuYXBzaG90IGFnYWluLCBhbmQgdGhlIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGlzIG5vdCBjaGFuZ2VkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgYW4gZW1wdHkgREIgY2x1c3RlciBpcyBjcmVhdGVkLCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC4gSWYgeW91IHNwZWNpZnkgYSBwcm9wZXJ0eSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBzbmFwc2hvdCByZXN0b3JlIHByb3BlcnR5LCBhIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGZyb20gdGhlIHNwZWNpZmllZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC5cbiAqICAgMS4gIFVwZGF0ZSB0aGUgc3RhY2suXG4gKiAgIFxuICogICBDdXJyZW50bHksIHdoZW4geW91IGFyZSB1cGRhdGluZyB0aGUgc3RhY2sgZm9yIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIERCIGNsdXN0ZXIsIHlvdSBjYW4ndCBpbmNsdWRlIGNoYW5nZXMgdG8gYW55IG90aGVyIHByb3BlcnRpZXMgd2hlbiB5b3Ugc3BlY2lmeSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYFByZWZlcnJlZEJhY2t1cFdpbmRvd2BgLCBgYFByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93YGAsIGFuZCBgYFBvcnRgYC4gVGhpcyBsaW1pdGF0aW9uIGRvZXNuJ3QgYXBwbHkgdG8gcHJvdmlzaW9uZWQgREIgY2x1c3RlcnMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgb3RoZXIgcHJvcGVydGllcyBvZiB0aGlzIHJlc291cmNlLCBzZWUgYGBNb2RpZnlEQkNsdXN0ZXJgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgc3RhY2tzLCBzZWUgW0Nsb3VkRm9ybWF0aW9uIFN0YWNrcyBVcGRhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1jZm4tdXBkYXRpbmctc3RhY2tzLmh0bWwpLlxuICogICAqRGVsZXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFRoZSBkZWZhdWx0IGBgRGVsZXRpb25Qb2xpY3lgYCBmb3IgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2VzIGlzIGBgU25hcHNob3RgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHJlc291cmNlcywgc2VlIFtEZWxldGlvblBvbGljeSBBdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtZGVsZXRpb25wb2xpY3kuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19SRFNfREJDTFVTVEVSIHtcbkVuZHBvaW50PzogRW5kcG9pbnRcblJlYWRFbmRwb2ludD86IFJlYWRFbmRwb2ludFxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzIChHaUIpIHRvIGFsbG9jYXRlIHRvIGVhY2ggREIgaW5zdGFuY2UgaW4gdGhlIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICovXG5BbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyXG4vKipcbiAqIFByb3ZpZGVzIGEgbGlzdCBvZiB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIERCIGNsdXN0ZXIuIElBTSByb2xlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBEQiBjbHVzdGVyIGdyYW50IHBlcm1pc3Npb24gZm9yIHRoZSBEQiBjbHVzdGVyIHRvIGFjY2VzcyBvdGhlciBBbWF6b24gV2ViIFNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Bc3NvY2lhdGVkUm9sZXM/OiBEQkNsdXN0ZXJSb2xlW11cbi8qKlxuICogQSBsaXN0IG9mIEF2YWlsYWJpbGl0eSBab25lcyAoQVpzKSB3aGVyZSBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIgY2FuIGJlIGNyZWF0ZWQuIEZvciBpbmZvcm1hdGlvbiBvbiBBV1MgUmVnaW9ucyBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzLCBzZWUgW0Nob29zaW5nIHRoZSBSZWdpb25zIGFuZCBBdmFpbGFiaWxpdHkgWm9uZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9Db25jZXB0cy5SZWdpb25zQW5kQXZhaWxhYmlsaXR5Wm9uZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW11cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgbWlub3IgZW5naW5lIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gdGhlIERCIGNsdXN0ZXIgZHVyaW5nIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuIEJ5IGRlZmF1bHQsIG1pbm9yIGVuZ2luZSB1cGdyYWRlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlclxuICovXG5BdXRvTWlub3JWZXJzaW9uVXBncmFkZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIHRhcmdldCBiYWNrdHJhY2sgd2luZG93LCBpbiBzZWNvbmRzLiBUbyBkaXNhYmxlIGJhY2t0cmFja2luZywgc2V0IHRoaXMgdmFsdWUgdG8gYGAwYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIE15U1FMIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBEZWZhdWx0OiBgYDBgYCBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgSWYgc3BlY2lmaWVkLCB0aGlzIHZhbHVlIG11c3QgYmUgc2V0IHRvIGEgbnVtYmVyIGZyb20gMCB0byAyNTksMjAwICg3MiBob3VycykuXG4gKi9cbkJhY2t0cmFja1dpbmRvdz86IG51bWJlclxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgZm9yIHdoaWNoIGF1dG9tYXRlZCBiYWNrdXBzIGFyZSByZXRhaW5lZC5cbiAqICBEZWZhdWx0OiAxXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgYSB2YWx1ZSBmcm9tIDEgdG8gMzVcbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkJhY2t1cFJldGVudGlvblBlcmlvZD86IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNjYWxhYmlsaXR5IG1vZGUgb2YgdGhlIEF1cm9yYSBEQiBjbHVzdGVyLiBXaGVuIHNldCB0byBgYGxpbWl0bGVzc2BgLCB0aGUgY2x1c3RlciBvcGVyYXRlcyBhcyBhbiBBdXJvcmEgTGltaXRsZXNzIERhdGFiYXNlLCBhbGxvd2luZyB5b3UgdG8gY3JlYXRlIGEgREIgc2hhcmQgZ3JvdXAgZm9yIGhvcml6b250YWwgc2NhbGluZyAoc2hhcmRpbmcpIGNhcGFiaWxpdGllcy4gV2hlbiBzZXQgdG8gYGBzdGFuZGFyZGBgICh0aGUgZGVmYXVsdCksIHRoZSBjbHVzdGVyIHVzZXMgbm9ybWFsIERCIGluc3RhbmNlIGNyZWF0aW9uLlxuICovXG5DbHVzdGVyU2NhbGFiaWxpdHlUeXBlPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0byBjb3B5IGFsbCB0YWdzIGZyb20gdGhlIERCIGNsdXN0ZXIgdG8gc25hcHNob3RzIG9mIHRoZSBEQiBjbHVzdGVyLiBUaGUgZGVmYXVsdCBpcyBub3QgdG8gY29weSB0aGVtLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Db3B5VGFnc1RvU25hcHNob3Q/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtb2RlIG9mIERhdGFiYXNlIEluc2lnaHRzIHRvIGVuYWJsZSBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gKiAgSWYgeW91IHNldCB0aGlzIHZhbHVlIHRvIGBgYWR2YW5jZWRgYCwgeW91IG11c3QgYWxzbyBzZXQgdGhlIGBgUGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWRgYCBwYXJhbWV0ZXIgdG8gYGB0cnVlYGAgYW5kIHRoZSBgYFBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2RgYCBwYXJhbWV0ZXIgdG8gNDY1LlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGF0YWJhc2VJbnNpZ2h0c01vZGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZS4gSWYgeW91IGRvbid0IHByb3ZpZGUgYSBuYW1lLCB0aGVuIEFtYXpvbiBSRFMgd29uJ3QgY3JlYXRlIGEgZGF0YWJhc2UgaW4gdGhpcyBEQiBjbHVzdGVyLiBGb3IgbmFtaW5nIGNvbnN0cmFpbnRzLCBzZWUgW05hbWluZyBDb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5Db25zdHJhaW50cykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGF0YWJhc2VOYW1lPzogc3RyaW5nXG5EQkNsdXN0ZXJBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbXB1dGUgYW5kIG1lbW9yeSBjYXBhY2l0eSBvZiBlYWNoIERCIGluc3RhbmNlIGluIHRoZSBNdWx0aS1BWiBEQiBjbHVzdGVyLCBmb3IgZXhhbXBsZSBgYGRiLm02Z2QueGxhcmdlYGAuIE5vdCBhbGwgREIgaW5zdGFuY2UgY2xhc3NlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBBV1MtUmVnaW9ucywgb3IgZm9yIGFsbCBkYXRhYmFzZSBlbmdpbmVzLlxuICogIEZvciB0aGUgZnVsbCBsaXN0IG9mIERCIGluc3RhbmNlIGNsYXNzZXMgYW5kIGF2YWlsYWJpbGl0eSBmb3IgeW91ciBlbmdpbmUsIHNlZSBbREIgaW5zdGFuY2UgY2xhc3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9Db25jZXB0cy5EQkluc3RhbmNlQ2xhc3MuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuREJDbHVzdGVySW5zdGFuY2VDbGFzcz86IHN0cmluZ1xuREJDbHVzdGVyUmVzb3VyY2VJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgcGFyYW1ldGVyIGdyb3VwIHRvIGFwcGx5IHRvIGFsbCBpbnN0YW5jZXMgb2YgdGhlIERCIGNsdXN0ZXIuXG4gKiAgIFdoZW4geW91IGFwcGx5IGEgcGFyYW1ldGVyIGdyb3VwIHVzaW5nIHRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIsIHRoZSBEQiBjbHVzdGVyIGlzbid0IHJlYm9vdGVkIGF1dG9tYXRpY2FsbHkuIEFsc28sIHBhcmFtZXRlciBjaGFuZ2VzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHJhdGhlciB0aGFuIGR1cmluZyB0aGUgbmV4dCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKiAgIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogVGhlIGV4aXN0aW5nIG5hbWUgc2V0dGluZ1xuICogIENvbnN0cmFpbnRzOlxuICogICArICBUaGUgREIgcGFyYW1ldGVyIGdyb3VwIG11c3QgYmUgaW4gdGhlIHNhbWUgREIgcGFyYW1ldGVyIGdyb3VwIGZhbWlseSBhcyB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgICsgIFRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIgaXMgdmFsaWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGBBbGxvd01ham9yVmVyc2lvblVwZ3JhZGVgYCBwYXJhbWV0ZXIgZm9yIGEgbWFqb3IgdmVyc2lvbiB1cGdyYWRlIG9ubHkuXG4gKi9cbkRCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWU/OiBzdHJpbmdcbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cbkRCU3lzdGVtSWQ/OiBzdHJpbmdcbi8qKlxuICogSWYgeW91IGFyZSBjb25maWd1cmluZyBhbiBBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIgYW5kIHdhbnQgeW91ciBBdXJvcmEgREIgY2x1c3RlciB0byBiZSBhIHNlY29uZGFyeSBtZW1iZXIgaW4gdGhlIGdsb2JhbCBkYXRhYmFzZSBjbHVzdGVyLCBzcGVjaWZ5IHRoZSBnbG9iYWwgY2x1c3RlciBJRCBvZiB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIuIFRvIGRlZmluZSB0aGUgcHJpbWFyeSBkYXRhYmFzZSBjbHVzdGVyIG9mIHRoZSBnbG9iYWwgY2x1c3RlciwgdXNlIHRoZSBbQVdTOjpSRFM6Okdsb2JhbENsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yZHMtZ2xvYmFsY2x1c3Rlci5odG1sKSByZXNvdXJjZS4gXG4gKiAgIElmIHlvdSBhcmVuJ3QgY29uZmlndXJpbmcgYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3RlciwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBcbiAqICAgVG8gcmVtb3ZlIHRoZSBEQiBjbHVzdGVyIGZyb20gYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3Rlciwgc3BlY2lmeSBhbiBlbXB0eSB2YWx1ZSBmb3IgdGhlIGBgR2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eS5cbiAqICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEF1cm9yYSBnbG9iYWwgZGF0YWJhc2VzLCBzZWUgW1dvcmtpbmcgd2l0aCBBbWF6b24gQXVyb3JhIEdsb2JhbCBEYXRhYmFzZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtZ2xvYmFsLWRhdGFiYXNlLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBEQiBjbHVzdGVyIGlkZW50aWZpZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHN0b3JlZCBhcyBhIGxvd2VyY2FzZSBzdHJpbmcuXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgY29udGFpbiBmcm9tIDEgdG8gNjMgbGV0dGVycywgbnVtYmVycywgb3IgaHlwaGVucy5cbiAqICAgKyAgRmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYSBsZXR0ZXIuXG4gKiAgICsgIENhbid0IGVuZCB3aXRoIGEgaHlwaGVuIG9yIGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnMuXG4gKiAgIFxuICogIEV4YW1wbGU6IGBgbXktY2x1c3RlcjFgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgY2x1c3RlciBwYXJhbWV0ZXIgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLlxuICogICBJZiB5b3UgYXBwbHkgYSBwYXJhbWV0ZXIgZ3JvdXAgdG8gYW4gZXhpc3RpbmcgREIgY2x1c3RlciwgdGhlbiBpdHMgREIgaW5zdGFuY2VzIG1pZ2h0IG5lZWQgdG8gcmVib290LiBUaGlzIGNhbiByZXN1bHQgaW4gYW4gb3V0YWdlIHdoaWxlIHRoZSBEQiBpbnN0YW5jZXMgYXJlIHJlYm9vdGluZy5cbiAqICBJZiB5b3UgYXBwbHkgYSBjaGFuZ2UgdG8gcGFyYW1ldGVyIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCBhIHN0b3BwZWQgREIgY2x1c3RlciwgdGhlbiB0aGUgdXBkYXRlIHN0YWNrIHdhaXRzIHVudGlsIHRoZSBEQiBjbHVzdGVyIGlzIHN0YXJ0ZWQuXG4gKiAgIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgREIgY2x1c3RlciBwYXJhbWV0ZXIgZ3JvdXAgbmFtZXMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1jbHVzdGVyLXBhcmFtZXRlci1ncm91cHMgLS1xdWVyeSBcIkRCQ2x1c3RlclBhcmFtZXRlckdyb3Vwc1tdLkRCQ2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZVwiIC0tb3V0cHV0IHRleHRgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgREIgc3VibmV0IGdyb3VwIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLiBcbiAqICBJZiB5b3UgYXJlIHJlc3RvcmluZyBhIERCIGNsdXN0ZXIgdG8gYSBwb2ludCBpbiB0aW1lIHdpdGggYGBSZXN0b3JlVHlwZWBgIHNldCB0byBgYGNvcHktb24td3JpdGVgYCwgYW5kIGRvbid0IHNwZWNpZnkgYSBEQiBzdWJuZXQgZ3JvdXAgbmFtZSwgdGhlbiB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aXRoIGEgZGVmYXVsdCBEQiBzdWJuZXQgZ3JvdXAuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkRCU3VibmV0R3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgREIgY2x1c3RlciBoYXMgZGVsZXRpb24gcHJvdGVjdGlvbiBlbmFibGVkLiBUaGUgZGF0YWJhc2UgY2FuJ3QgYmUgZGVsZXRlZCB3aGVuIGRlbGV0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZC4gQnkgZGVmYXVsdCwgZGVsZXRpb24gcHJvdGVjdGlvbiBpcyBkaXNhYmxlZC5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGRpcmVjdG9yeSBJRCBvZiB0aGUgQWN0aXZlIERpcmVjdG9yeSB0byBjcmVhdGUgdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIEFtYXpvbiBBdXJvcmEgREIgY2x1c3RlcnMsIEFtYXpvbiBSRFMgY2FuIHVzZSBLZXJiZXJvcyBhdXRoZW50aWNhdGlvbiB0byBhdXRoZW50aWNhdGUgdXNlcnMgdGhhdCBjb25uZWN0IHRvIHRoZSBEQiBjbHVzdGVyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUva2VyYmVyb3MtYXV0aGVudGljYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRG9tYWluPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUgdG8gdXNlIHdoZW4gbWFraW5nIEFQSSBjYWxscyB0byB0aGUgRGlyZWN0b3J5IFNlcnZpY2UuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5Eb21haW5JQU1Sb2xlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbGlzdCBvZiBsb2cgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGV4cG9ydGluZyB0byBDbG91ZFdhdGNoIExvZ3MuIFRoZSB2YWx1ZXMgaW4gdGhlIGxpc3QgZGVwZW5kIG9uIHRoZSBEQiBlbmdpbmUgYmVpbmcgdXNlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHVibGlzaGluZyBEYXRhYmFzZSBMb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX0xvZ0FjY2Vzcy5odG1sI1VTRVJfTG9nQWNjZXNzLlByb2NlZHVyYWwuVXBsb2FkdG9DbG91ZFdhdGNoKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgICpBdXJvcmEgTXlTUUwqIFxuICogIFZhbGlkIHZhbHVlczogYGBhdWRpdGBgLCBgYGVycm9yYGAsIGBgZ2VuZXJhbGBgLCBgYHNsb3dxdWVyeWBgIFxuICogICAqQXVyb3JhIFBvc3RncmVTUUwqIFxuICogIFZhbGlkIHZhbHVlczogYGBwb3N0Z3Jlc3FsYGAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkVuYWJsZUNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz86IHN0cmluZ1tdXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGlzIERCIGNsdXN0ZXIgdG8gZm9yd2FyZCB3cml0ZSBvcGVyYXRpb25zIHRvIHRoZSBwcmltYXJ5IGNsdXN0ZXIgb2YgYSBnbG9iYWwgY2x1c3RlciAoQXVyb3JhIGdsb2JhbCBkYXRhYmFzZSkuIEJ5IGRlZmF1bHQsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIG9uIEF1cm9yYSBEQiBjbHVzdGVycyB0aGF0IGFyZSBzZWNvbmRhcnkgY2x1c3RlcnMgaW4gYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZS5cbiAqICBZb3UgY2FuIHNldCB0aGlzIHZhbHVlIG9ubHkgb24gQXVyb3JhIERCIGNsdXN0ZXJzIHRoYXQgYXJlIG1lbWJlcnMgb2YgYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZS4gV2l0aCB0aGlzIHBhcmFtZXRlciBlbmFibGVkLCBhIHNlY29uZGFyeSBjbHVzdGVyIGNhbiBmb3J3YXJkIHdyaXRlcyB0byB0aGUgY3VycmVudCBwcmltYXJ5IGNsdXN0ZXIsIGFuZCB0aGUgcmVzdWx0aW5nIGNoYW5nZXMgYXJlIHJlcGxpY2F0ZWQgYmFjayB0byB0aGlzIGNsdXN0ZXIuIEZvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIG9mIGFuIEF1cm9yYSBnbG9iYWwgZGF0YWJhc2UsIHRoaXMgdmFsdWUgaXMgdXNlZCBpbW1lZGlhdGVseSBpZiB0aGUgcHJpbWFyeSBpcyBkZW1vdGVkIGJ5IGEgZ2xvYmFsIGNsdXN0ZXIgQVBJIG9wZXJhdGlvbiwgYnV0IGl0IGRvZXMgbm90aGluZyB1bnRpbCB0aGVuLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBIVFRQIGVuZHBvaW50IGZvciB0aGUgREIgY2x1c3Rlci4gQnkgZGVmYXVsdCwgdGhlIEhUVFAgZW5kcG9pbnQgaXNuJ3QgZW5hYmxlZC5cbiAqICBXaGVuIGVuYWJsZWQsIHRoZSBIVFRQIGVuZHBvaW50IHByb3ZpZGVzIGEgY29ubmVjdGlvbmxlc3Mgd2ViIHNlcnZpY2UgQVBJIChSRFMgRGF0YSBBUEkpIGZvciBydW5uaW5nIFNRTCBxdWVyaWVzIG9uIHRoZSBEQiBjbHVzdGVyLiBZb3UgY2FuIGFsc28gcXVlcnkgeW91ciBkYXRhYmFzZSBmcm9tIGluc2lkZSB0aGUgUkRTIGNvbnNvbGUgd2l0aCB0aGUgUkRTIHF1ZXJ5IGVkaXRvci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2luZyBSRFMgRGF0YSBBUEldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9kYXRhLWFwaS5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5hYmxlSHR0cEVuZHBvaW50PzogYm9vbGVhblxuLyoqXG4gKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIG1hcHBpbmcgb2YgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBhY2NvdW50cyB0byBkYXRhYmFzZSBhY2NvdW50cy4gQnkgZGVmYXVsdCwgbWFwcGluZyBpcyBkaXNhYmxlZC5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtJQU0gRGF0YWJhc2UgQXV0aGVudGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9Vc2luZ1dpdGhSRFMuSUFNREJBdXRoLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLiogXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5FbmFibGVJQU1EYXRhYmFzZUF1dGhlbnRpY2F0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciByZWFkIHJlcGxpY2FzIGNhbiBmb3J3YXJkIHdyaXRlIG9wZXJhdGlvbnMgdG8gdGhlIHdyaXRlciBEQiBpbnN0YW5jZSBpbiB0aGUgREIgY2x1c3Rlci4gQnkgZGVmYXVsdCwgd3JpdGUgb3BlcmF0aW9ucyBhcmVuJ3QgYWxsb3dlZCBvbiByZWFkZXIgREIgaW5zdGFuY2VzLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5hYmxlTG9jYWxXcml0ZUZvcndhcmRpbmc/OiBib29sZWFuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBlbmdpbmUgdG8gYmUgdXNlZCBmb3IgdGhpcyBEQiBjbHVzdGVyLlxuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgIGBgYXVyb3JhLW15c3FsYGAgXG4gKiAgICsgICBgYGF1cm9yYS1wb3N0Z3Jlc3FsYGAgXG4gKiAgICsgICBgYG15c3FsYGAgXG4gKiAgICsgICBgYHBvc3RncmVzYGAgXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5FbmdpbmU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGxpZmUgY3ljbGUgdHlwZSBmb3IgdGhpcyBEQiBjbHVzdGVyLlxuICogICBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIHNldCB0byBgYG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0YGAsIHdoaWNoIGVucm9sbHMgeW91ciBEQiBjbHVzdGVyIGludG8gQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0LiBBdCB0aGUgZW5kIG9mIHN0YW5kYXJkIHN1cHBvcnQsIHlvdSBjYW4gYXZvaWQgY2hhcmdlcyBmb3IgRXh0ZW5kZWQgU3VwcG9ydCBieSBzZXR0aW5nIHRoZSB2YWx1ZSB0byBgYG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0LWRpc2FibGVkYGAuIEluIHRoaXMgY2FzZSwgY3JlYXRpbmcgdGhlIERCIGNsdXN0ZXIgd2lsbCBmYWlsIGlmIHRoZSBEQiBtYWpvciB2ZXJzaW9uIGlzIHBhc3QgaXRzIGVuZCBvZiBzdGFuZGFyZCBzdXBwb3J0IGRhdGUuXG4gKiAgIFlvdSBjYW4gdXNlIHRoaXMgc2V0dGluZyB0byBlbnJvbGwgeW91ciBEQiBjbHVzdGVyIGludG8gQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0LiBXaXRoIFJEUyBFeHRlbmRlZCBTdXBwb3J0LCB5b3UgY2FuIHJ1biB0aGUgc2VsZWN0ZWQgbWFqb3IgZW5naW5lIHZlcnNpb24gb24geW91ciBEQiBjbHVzdGVyIHBhc3QgdGhlIGVuZCBvZiBzdGFuZGFyZCBzdXBwb3J0IGZvciB0aGF0IGVuZ2luZSB2ZXJzaW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6XG4gKiAgICsgIEFtYXpvbiBBdXJvcmEgLSBbVXNpbmcgQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvZXh0ZW5kZWQtc3VwcG9ydC5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSogXG4gKiAgICsgIEFtYXpvbiBSRFMgLSBbVXNpbmcgQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvZXh0ZW5kZWQtc3VwcG9ydC5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSogXG4gKiAgIFxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqICBWYWxpZCBWYWx1ZXM6IGBgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnQgfCBvcGVuLXNvdXJjZS1yZHMtZXh0ZW5kZWQtc3VwcG9ydC1kaXNhYmxlZGBgIFxuICogIERlZmF1bHQ6IGBgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnRgYFxuICovXG5FbmdpbmVMaWZlY3ljbGVTdXBwb3J0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBEQiBlbmdpbmUgbW9kZSBvZiB0aGUgREIgY2x1c3RlciwgZWl0aGVyIGBgcHJvdmlzaW9uZWRgYCBvciBgYHNlcnZlcmxlc3NgYC5cbiAqICBUaGUgYGBzZXJ2ZXJsZXNzYGAgZW5naW5lIG1vZGUgb25seSBhcHBsaWVzIGZvciBBdXJvcmEgU2VydmVybGVzcyB2MSBEQiBjbHVzdGVycy4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgREIgY2x1c3RlcnMgdXNlIHRoZSBgYHByb3Zpc2lvbmVkYGAgZW5naW5lIG1vZGUuXG4gKiAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGxpbWl0YXRpb25zIGFuZCByZXF1aXJlbWVudHMgZm9yIFNlcnZlcmxlc3MgREIgY2x1c3RlcnMsIHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKjpcbiAqICAgKyAgIFtMaW1pdGF0aW9ucyBvZiBBdXJvcmEgU2VydmVybGVzcyB2MV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLmh0bWwjYXVyb3JhLXNlcnZlcmxlc3MubGltaXRhdGlvbnMpIFxuICogICArICAgW1JlcXVpcmVtZW50cyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtc2VydmVybGVzcy12Mi5yZXF1aXJlbWVudHMuaHRtbCkgXG4gKiAgIFxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuZ2luZU1vZGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBkYXRhYmFzZSBlbmdpbmUgdG8gdXNlLlxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBBdXJvcmEgTXlTUUwgdmVyc2lvbiAyICg1LjctY29tcGF0aWJsZSkgYW5kIHZlcnNpb24gMyAoOC4wLWNvbXBhdGlibGUpLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItZW5naW5lLXZlcnNpb25zIC0tZW5naW5lIGF1cm9yYS1teXNxbCAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogIFlvdSBjYW4gc3VwcGx5IGVpdGhlciBgYDUuN2BgIG9yIGBgOC4wYGAgdG8gdXNlIHRoZSBkZWZhdWx0IGVuZ2luZSB2ZXJzaW9uIGZvciBBdXJvcmEgTXlTUUwgdmVyc2lvbiAyIG9yIHZlcnNpb24gMywgcmVzcGVjdGl2ZWx5LlxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBBdXJvcmEgUG9zdGdyZVNRTCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAqICAgYGBhd3MgcmRzIGRlc2NyaWJlLWRiLWVuZ2luZS12ZXJzaW9ucyAtLWVuZ2luZSBhdXJvcmEtcG9zdGdyZXNxbCAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBSRFMgZm9yIE15U1FMLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItZW5naW5lLXZlcnNpb25zIC0tZW5naW5lIG15c3FsIC0tcXVlcnkgXCJEQkVuZ2luZVZlcnNpb25zW10uRW5naW5lVmVyc2lvblwiYGAgXG4gKiAgVG8gbGlzdCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBlbmdpbmUgdmVyc2lvbnMgZm9yIFJEUyBmb3IgUG9zdGdyZVNRTCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAqICAgYGBhd3MgcmRzIGRlc2NyaWJlLWRiLWVuZ2luZS12ZXJzaW9ucyAtLWVuZ2luZSBwb3N0Z3JlcyAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogICAqQXVyb3JhIE15U1FMKiBcbiAqICBGb3IgaW5mb3JtYXRpb24sIHNlZSBbRGF0YWJhc2UgZW5naW5lIHVwZGF0ZXMgZm9yIEFtYXpvbiBBdXJvcmEgTXlTUUxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmFNeVNRTC5VcGRhdGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICAgKkF1cm9yYSBQb3N0Z3JlU1FMKiBcbiAqICBGb3IgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEF1cm9yYSBQb3N0Z3JlU1FMIHJlbGVhc2VzIGFuZCBlbmdpbmUgdmVyc2lvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmFQb3N0Z3JlU1FMLlVwZGF0ZXMuMjAxODAzMDUuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogICAqTXlTUUwqIFxuICogIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUkRTIGZvciBNeVNRTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTXlTUUwuaHRtbCNNeVNRTC5Db25jZXB0cy5WZXJzaW9uTWdtdCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogICAqUG9zdGdyZVNRTCogXG4gKiAgRm9yIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBSRFMgZm9yIFBvc3RncmVTUUxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9DSEFQX1Bvc3RncmVTUUwuaHRtbCNQb3N0Z3JlU1FMLkNvbmNlcHRzKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkVuZ2luZVZlcnNpb24/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gbWFuYWdlIHRoZSBtYXN0ZXIgdXNlciBwYXNzd29yZCB3aXRoIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIGFuZCBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIENhbid0IG1hbmFnZSB0aGUgbWFzdGVyIHVzZXIgcGFzc3dvcmQgd2l0aCBBV1MgU2VjcmV0cyBNYW5hZ2VyIGlmIGBgTWFzdGVyVXNlclBhc3N3b3JkYGAgaXMgc3BlY2lmaWVkLlxuICovXG5NYW5hZ2VNYXN0ZXJVc2VyUGFzc3dvcmQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgUHJvdmlzaW9uZWQgSU9QUyAoaW5wdXQvb3V0cHV0IG9wZXJhdGlvbnMgcGVyIHNlY29uZCkgdG8gYmUgaW5pdGlhbGx5IGFsbG9jYXRlZCBmb3IgZWFjaCBEQiBpbnN0YW5jZSBpbiB0aGUgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdmFsaWQgSU9QUyB2YWx1ZXMsIHNlZSBbUHJvdmlzaW9uZWQgSU9QUyBzdG9yYWdlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ0hBUF9TdG9yYWdlLmh0bWwjVVNFUl9QSU9QUykgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBiZSBhIG11bHRpcGxlIGJldHdlZW4gLjUgYW5kIDUwIG9mIHRoZSBzdG9yYWdlIGFtb3VudCBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gKi9cbklvcHM/OiBudW1iZXJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBV1MgS01TIGtleSB0aGF0IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YWJhc2UgaW5zdGFuY2VzIGluIHRoZSBEQiBjbHVzdGVyLCBzdWNoIGFzIGBgYXJuOmF3czprbXM6dXMtZWFzdC0xOjAxMjM0NTY3ODkxMDprZXkvYWJjZDEyMzQtYTEyMy00NTZhLWExMmItYTEyM2I0Y2Q1NmVmYGAuIElmIHlvdSBlbmFibGUgdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIHByb3BlcnR5IGJ1dCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHRoZSBkZWZhdWx0IEtNUyBrZXkgaXMgdXNlZC4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgeW91IG11c3Qgc2V0IHRoZSBgYFN0b3JhZ2VFbmNyeXB0ZWRgYCBwcm9wZXJ0eSB0byBgYHRydWVgYC5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIHByb3BlcnR5IHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzbmFwc2hvdCwgYW5kIGlmIHRoZSBEQiBjbHVzdGVyIGlzIGVuY3J5cHRlZCwgdGhlIHNwZWNpZmllZCBgYEttc0tleUlkYGAgcHJvcGVydHkgaXMgdXNlZC5cbiAqICBJZiB5b3UgY3JlYXRlIGEgcmVhZCByZXBsaWNhIG9mIGFuIGVuY3J5cHRlZCBEQiBjbHVzdGVyIGluIGFub3RoZXIgQVdTIFJlZ2lvbiwgbWFrZSBzdXJlIHRvIHNldCBgYEttc0tleUlkYGAgdG8gYSBLTVMga2V5IGlkZW50aWZpZXIgdGhhdCBpcyB2YWxpZCBpbiB0aGUgZGVzdGluYXRpb24gQVdTIFJlZ2lvbi4gVGhpcyBLTVMga2V5IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgcmVhZCByZXBsaWNhIGluIHRoYXQgQVdTIFJlZ2lvbi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuS21zS2V5SWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIG1hc3RlciB1c2VyIGZvciB0aGUgREIgY2x1c3Rlci5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgLCBgYFNuYXBzaG90SWRlbnRpZmllcmBgLCBvciBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gVGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzb3VyY2UgREIgY2x1c3RlciwgdGhlIHNuYXBzaG90LCBvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIGZvciB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIsIHJlc3BlY3RpdmVseS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbk1hc3RlclVzZXJuYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXN0ZXIgcGFzc3dvcmQgZm9yIHRoZSBEQiBpbnN0YW5jZS5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgLCBgYFNuYXBzaG90SWRlbnRpZmllcmBgLCBvciBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gVGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzb3VyY2UgREIgY2x1c3RlciwgdGhlIHNuYXBzaG90LCBvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIGZvciB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIsIHJlc3BlY3RpdmVseS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbk1hc3RlclVzZXJQYXNzd29yZD86IHN0cmluZ1xuTWFzdGVyVXNlclNlY3JldD86IE1hc3RlclVzZXJTZWNyZXRcbi8qKlxuICogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHBvaW50cyB3aGVuIEVuaGFuY2VkIE1vbml0b3JpbmcgbWV0cmljcyBhcmUgY29sbGVjdGVkIGZvciB0aGUgREIgY2x1c3Rlci4gVG8gdHVybiBvZmYgY29sbGVjdGluZyBFbmhhbmNlZCBNb25pdG9yaW5nIG1ldHJpY3MsIHNwZWNpZnkgYGAwYGAuXG4gKiAgSWYgYGBNb25pdG9yaW5nUm9sZUFybmBgIGlzIHNwZWNpZmllZCwgYWxzbyBzZXQgYGBNb25pdG9yaW5nSW50ZXJ2YWxgYCB0byBhIHZhbHVlIG90aGVyIHRoYW4gYGAwYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogIFZhbGlkIFZhbHVlczogYGAwIHwgMSB8IDUgfCAxMCB8IDE1IHwgMzAgfCA2MGBgIFxuICogIERlZmF1bHQ6IGBgMGBgXG4gKi9cbk1vbml0b3JpbmdJbnRlcnZhbD86IG51bWJlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBJQU0gcm9sZSB0aGF0IHBlcm1pdHMgUkRTIHRvIHNlbmQgRW5oYW5jZWQgTW9uaXRvcmluZyBtZXRyaWNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MuIEFuIGV4YW1wbGUgaXMgYGBhcm46YXdzOmlhbToxMjM0NTY3ODkwMTI6cm9sZS9lbWFjY2Vzc2BgLiBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYSBtb25pdG9yaW5nIHJvbGUsIHNlZSBbU2V0dGluZyB1cCBhbmQgZW5hYmxpbmcgRW5oYW5jZWQgTW9uaXRvcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfTW9uaXRvcmluZy5PUy5odG1sI1VTRVJfTW9uaXRvcmluZy5PUy5FbmFibGluZykgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIElmIGBgTW9uaXRvcmluZ0ludGVydmFsYGAgaXMgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgYDBgYCwgc3VwcGx5IGEgYGBNb25pdG9yaW5nUm9sZUFybmBgIHZhbHVlLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuTW9uaXRvcmluZ1JvbGVBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5ldHdvcmsgdHlwZSBvZiB0aGUgREIgY2x1c3Rlci5cbiAqICBWYWxpZCB2YWx1ZXM6XG4gKiAgICsgICBgYElQVjRgYCBcbiAqICAgKyAgIGBgRFVBTGBgIFxuICogICBcbiAqICBUaGUgbmV0d29yayB0eXBlIGlzIGRldGVybWluZWQgYnkgdGhlIGBgREJTdWJuZXRHcm91cGBgIHNwZWNpZmllZCBmb3IgdGhlIERCIGNsdXN0ZXIuIEEgYGBEQlN1Ym5ldEdyb3VwYGAgY2FuIHN1cHBvcnQgb25seSB0aGUgSVB2NCBwcm90b2NvbCBvciB0aGUgSVB2NCBhbmQgSVB2NiBwcm90b2NvbHMgKGBgRFVBTGBgKS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtXb3JraW5nIHdpdGggYSBEQiBpbnN0YW5jZSBpbiBhIFZQQ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL1VTRVJfVlBDLldvcmtpbmdXaXRoUkRTSW5zdGFuY2VpbmFWUEMuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbk5ldHdvcmtUeXBlPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHR1cm4gb24gUGVyZm9ybWFuY2UgSW5zaWdodHMgZm9yIHRoZSBEQiBjbHVzdGVyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIEFtYXpvbiBQZXJmb3JtYW5jZSBJbnNpZ2h0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfUGVyZkluc2lnaHRzLmh0bWwpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNFbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgQVdTIEtNUyBrZXkgaWRlbnRpZmllciBmb3IgZW5jcnlwdGlvbiBvZiBQZXJmb3JtYW5jZSBJbnNpZ2h0cyBkYXRhLlxuICogIFRoZSBBV1MgS01TIGtleSBpZGVudGlmaWVyIGlzIHRoZSBrZXkgQVJOLCBrZXkgSUQsIGFsaWFzIEFSTiwgb3IgYWxpYXMgbmFtZSBmb3IgdGhlIEtNUyBrZXkuXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYGBQZXJmb3JtYW5jZUluc2lnaHRzS01TS2V5SWRgYCwgdGhlbiBBbWF6b24gUkRTIHVzZXMgeW91ciBkZWZhdWx0IEtNUyBrZXkuIFRoZXJlIGlzIGEgZGVmYXVsdCBLTVMga2V5IGZvciB5b3VyIEFXUy1hY2NvdW50LiBZb3VyIEFXUy1hY2NvdW50IGhhcyBhIGRpZmZlcmVudCBkZWZhdWx0IEtNUyBrZXkgZm9yIGVhY2ggQVdTLVJlZ2lvbi5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNLbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgdG8gcmV0YWluIFBlcmZvcm1hbmNlIEluc2lnaHRzIGRhdGEuIFdoZW4gY3JlYXRpbmcgYSBEQiBjbHVzdGVyIHdpdGhvdXQgZW5hYmxpbmcgUGVyZm9ybWFuY2UgSW5zaWdodHMsIHlvdSBjYW4ndCBzcGVjaWZ5IHRoZSBwYXJhbWV0ZXIgYGBQZXJmb3JtYW5jZUluc2lnaHRzUmV0ZW50aW9uUGVyaW9kYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgIGBgN2BgIFxuICogICArICAgKm1vbnRoKiAqIDMxLCB3aGVyZSAqbW9udGgqIGlzIGEgbnVtYmVyIG9mIG1vbnRocyBmcm9tIDEtMjMuIEV4YW1wbGVzOiBgYDkzYGAgKDMgbW9udGhzICogMzEpLCBgYDM0MWBgICgxMSBtb250aHMgKiAzMSksIGBgNTg5YGAgKDE5IG1vbnRocyAqIDMxKVxuICogICArICAgYGA3MzFgYCBcbiAqICAgXG4gKiAgRGVmYXVsdDogYGA3YGAgZGF5c1xuICogIElmIHlvdSBzcGVjaWZ5IGEgcmV0ZW50aW9uIHBlcmlvZCB0aGF0IGlzbid0IHZhbGlkLCBzdWNoIGFzIGBgOTRgYCwgQW1hem9uIFJEUyBpc3N1ZXMgYW4gZXJyb3IuXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogVGhlIHBvcnQgbnVtYmVyIG9uIHdoaWNoIHRoZSBEQiBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIgYWNjZXB0IGNvbm5lY3Rpb25zLlxuICogIERlZmF1bHQ6XG4gKiAgICsgIFdoZW4gYGBFbmdpbmVNb2RlYGAgaXMgYGBwcm92aXNpb25lZGBgLCBgYDMzMDZgYCAoZm9yIGJvdGggQXVyb3JhIE15U1FMIGFuZCBBdXJvcmEgUG9zdGdyZVNRTClcbiAqICAgKyAgV2hlbiBgYEVuZ2luZU1vZGVgYCBpcyBgYHNlcnZlcmxlc3NgYDpcbiAqICAgKyAgIGBgMzMwNmBgIHdoZW4gYGBFbmdpbmVgYCBpcyBgYGF1cm9yYWBgIG9yIGBgYXVyb3JhLW15c3FsYGAgXG4gKiAgICsgICBgYDU0MzJgYCB3aGVuIGBgRW5naW5lYGAgaXMgYGBhdXJvcmEtcG9zdGdyZXNxbGBgIFxuICogICBcbiAqICAgXG4gKiAgIFRoZSBgYE5vIGludGVycnVwdGlvbmBgIG9uIHVwZGF0ZSBiZWhhdmlvciBvbmx5IGFwcGxpZXMgdG8gREIgY2x1c3RlcnMuIElmIHlvdSBhcmUgdXBkYXRpbmcgYSBEQiBpbnN0YW5jZSwgc2VlIFtQb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZHMtZGF0YWJhc2UtaW5zdGFuY2UuaHRtbCNjZm4tcmRzLWRiaW5zdGFuY2UtcG9ydCkgZm9yIHRoZSBBV1M6OlJEUzo6REJJbnN0YW5jZSByZXNvdXJjZS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblBvcnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIGRhaWx5IHRpbWUgcmFuZ2UgZHVyaW5nIHdoaWNoIGF1dG9tYXRlZCBiYWNrdXBzIGFyZSBjcmVhdGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtCYWNrdXAgV2luZG93XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhLk1hbmFnaW5nLkJhY2t1cHMuaHRtbCNBdXJvcmEuTWFuYWdpbmcuQmFja3Vwcy5CYWNrdXBXaW5kb3cpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLiogXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgaW4gdGhlIGZvcm1hdCBgYGhoMjQ6bWktaGgyNDptaWBgLlxuICogICArICBNdXN0IGJlIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpLlxuICogICArICBNdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBwcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93LlxuICogICArICBNdXN0IGJlIGF0IGxlYXN0IDMwIG1pbnV0ZXMuXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5QcmVmZXJyZWRCYWNrdXBXaW5kb3c/OiBzdHJpbmdcbi8qKlxuICogVGhlIHdlZWtseSB0aW1lIHJhbmdlIGR1cmluZyB3aGljaCBzeXN0ZW0gbWFpbnRlbmFuY2UgY2FuIG9jY3VyLCBpbiBVbml2ZXJzYWwgQ29vcmRpbmF0ZWQgVGltZSAoVVRDKS5cbiAqICBGb3JtYXQ6IGBgZGRkOmhoMjQ6bWktZGRkOmhoMjQ6bWlgYCBcbiAqICBUaGUgZGVmYXVsdCBpcyBhIDMwLW1pbnV0ZSB3aW5kb3cgc2VsZWN0ZWQgYXQgcmFuZG9tIGZyb20gYW4gOC1ob3VyIGJsb2NrIG9mIHRpbWUgZm9yIGVhY2ggQVdTIFJlZ2lvbiwgb2NjdXJyaW5nIG9uIGEgcmFuZG9tIGRheSBvZiB0aGUgd2Vlay4gVG8gc2VlIHRoZSB0aW1lIGJsb2NrcyBhdmFpbGFibGUsIHNlZSBbTWFpbnRhaW5pbmcgYW4gQW1hem9uIEF1cm9yYSBEQiBjbHVzdGVyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9VcGdyYWRlREJJbnN0YW5jZS5NYWludGVuYW5jZS5odG1sI0FkanVzdGluZ1RoZU1haW50ZW5hbmNlV2luZG93LkF1cm9yYSkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBEYXlzOiBNb24sIFR1ZSwgV2VkLCBUaHUsIEZyaSwgU2F0LCBTdW4uXG4gKiAgQ29uc3RyYWludHM6IE1pbmltdW0gMzAtbWludXRlIHdpbmRvdy5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIERCIGNsdXN0ZXIgaXMgcHVibGljbHkgYWNjZXNzaWJsZS5cbiAqICBXaGVuIHRoZSBEQiBjbHVzdGVyIGlzIHB1YmxpY2x5IGFjY2Vzc2libGUgYW5kIHlvdSBjb25uZWN0IGZyb20gb3V0c2lkZSBvZiB0aGUgREIgY2x1c3RlcidzIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKSwgaXRzIERvbWFpbiBOYW1lIFN5c3RlbSAoRE5TKSBlbmRwb2ludCByZXNvbHZlcyB0byB0aGUgcHVibGljIElQIGFkZHJlc3MuIFdoZW4geW91IGNvbm5lY3QgZnJvbSB3aXRoaW4gdGhlIHNhbWUgVlBDIGFzIHRoZSBEQiBjbHVzdGVyLCB0aGUgZW5kcG9pbnQgcmVzb2x2ZXMgdG8gdGhlIHByaXZhdGUgSVAgYWRkcmVzcy4gQWNjZXNzIHRvIHRoZSBEQiBjbHVzdGVyIGlzIHVsdGltYXRlbHkgY29udHJvbGxlZCBieSB0aGUgc2VjdXJpdHkgZ3JvdXAgaXQgdXNlcy4gVGhhdCBwdWJsaWMgYWNjZXNzIGlzbid0IHBlcm1pdHRlZCBpZiB0aGUgc2VjdXJpdHkgZ3JvdXAgYXNzaWduZWQgdG8gdGhlIERCIGNsdXN0ZXIgZG9lc24ndCBwZXJtaXQgaXQuXG4gKiAgV2hlbiB0aGUgREIgY2x1c3RlciBpc24ndCBwdWJsaWNseSBhY2Nlc3NpYmxlLCBpdCBpcyBhbiBpbnRlcm5hbCBEQiBjbHVzdGVyIHdpdGggYSBETlMgbmFtZSB0aGF0IHJlc29sdmVzIHRvIGEgcHJpdmF0ZSBJUCBhZGRyZXNzLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBEZWZhdWx0OiBUaGUgZGVmYXVsdCBiZWhhdmlvciB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYGBEQlN1Ym5ldEdyb3VwTmFtZWBgIGlzIHNwZWNpZmllZC5cbiAqICBJZiBgYERCU3VibmV0R3JvdXBOYW1lYGAgaXNuJ3Qgc3BlY2lmaWVkLCBhbmQgYGBQdWJsaWNseUFjY2Vzc2libGVgYCBpc24ndCBzcGVjaWZpZWQsIHRoZSBmb2xsb3dpbmcgYXBwbGllczpcbiAqICAgKyAgSWYgdGhlIGRlZmF1bHQgVlBDIGluIHRoZSB0YXJnZXQgUmVnaW9uIGRvZXNu4oCZdCBoYXZlIGFuIGludGVybmV0IGdhdGV3YXkgYXR0YWNoZWQgdG8gaXQsIHRoZSBEQiBjbHVzdGVyIGlzIHByaXZhdGUuXG4gKiAgICsgIElmIHRoZSBkZWZhdWx0IFZQQyBpbiB0aGUgdGFyZ2V0IFJlZ2lvbiBoYXMgYW4gaW50ZXJuZXQgZ2F0ZXdheSBhdHRhY2hlZCB0byBpdCwgdGhlIERCIGNsdXN0ZXIgaXMgcHVibGljLlxuICogICBcbiAqICBJZiBgYERCU3VibmV0R3JvdXBOYW1lYGAgaXMgc3BlY2lmaWVkLCBhbmQgYGBQdWJsaWNseUFjY2Vzc2libGVgYCBpc24ndCBzcGVjaWZpZWQsIHRoZSBmb2xsb3dpbmcgYXBwbGllczpcbiAqICAgKyAgSWYgdGhlIHN1Ym5ldHMgYXJlIHBhcnQgb2YgYSBWUEMgdGhhdCBkb2VzbuKAmXQgaGF2ZSBhbiBpbnRlcm5ldCBnYXRld2F5IGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgY2x1c3RlciBpcyBwcml2YXRlLlxuICogICArICBJZiB0aGUgc3VibmV0cyBhcmUgcGFydCBvZiBhIFZQQyB0aGF0IGhhcyBhbiBpbnRlcm5ldCBnYXRld2F5IGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgY2x1c3RlciBpcyBwdWJsaWMuXG4gKi9cblB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzb3VyY2UgREIgaW5zdGFuY2Ugb3IgREIgY2x1c3RlciBpZiB0aGlzIERCIGNsdXN0ZXIgaXMgY3JlYXRlZCBhcyBhIHJlYWQgcmVwbGljYS5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cblJlcGxpY2F0aW9uU291cmNlSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGF0ZSBhbmQgdGltZSB0byByZXN0b3JlIHRoZSBEQiBjbHVzdGVyIHRvLlxuICogIFZhbGlkIFZhbHVlczogVmFsdWUgbXVzdCBiZSBhIHRpbWUgaW4gVW5pdmVyc2FsIENvb3JkaW5hdGVkIFRpbWUgKFVUQykgZm9ybWF0XG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgYmVmb3JlIHRoZSBsYXRlc3QgcmVzdG9yYWJsZSB0aW1lIGZvciB0aGUgREIgaW5zdGFuY2VcbiAqICAgKyAgTXVzdCBiZSBzcGVjaWZpZWQgaWYgYGBVc2VMYXRlc3RSZXN0b3JhYmxlVGltZWBgIHBhcmFtZXRlciBpc24ndCBwcm92aWRlZFxuICogICArICBDYW4ndCBiZSBzcGVjaWZpZWQgaWYgdGhlIGBgVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWVgYCBwYXJhbWV0ZXIgaXMgZW5hYmxlZFxuICogICArICBDYW4ndCBiZSBzcGVjaWZpZWQgaWYgdGhlIGBgUmVzdG9yZVR5cGVgYCBwYXJhbWV0ZXIgaXMgYGBjb3B5LW9uLXdyaXRlYGAgXG4gKiAgIFxuICogIFRoaXMgcHJvcGVydHkgbXVzdCBiZSB1c2VkIHdpdGggYGBTb3VyY2VEQkNsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHkuIFRoZSByZXN1bHRpbmcgY2x1c3RlciB3aWxsIGhhdmUgdGhlIGlkZW50aWZpZXIgdGhhdCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgYGBEQmNsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHkuXG4gKiAgRXhhbXBsZTogYGAyMDE1LTAzLTA3VDIzOjQ1OjAwWmBgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5SZXN0b3JlVG9UaW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc3RvcmUgdG8gYmUgcGVyZm9ybWVkLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICogICArICAgYGBmdWxsLWNvcHlgYCAtIFRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGZ1bGwgY29weSBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIuXG4gKiAgICsgICBgYGNvcHktb24td3JpdGVgYCAtIFRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGNsb25lIG9mIHRoZSBzb3VyY2UgREIgY2x1c3Rlci5cbiAqICAgXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBgYFJlc3RvcmVUeXBlYGAgdmFsdWUsIHRoZW4gdGhlIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGFzIGEgZnVsbCBjb3B5IG9mIHRoZSBzb3VyY2UgREIgY2x1c3Rlci5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUmVzdG9yZVR5cGU/OiBzdHJpbmdcblNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uPzogU2VydmVybGVzc1YyU2NhbGluZ0NvbmZpZ3VyYXRpb25cblNjYWxpbmdDb25maWd1cmF0aW9uPzogU2NhbGluZ0NvbmZpZ3VyYXRpb25cbi8qKlxuICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBEQiBzbmFwc2hvdCBvciBEQiBjbHVzdGVyIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbS5cbiAqICBZb3UgY2FuIHVzZSBlaXRoZXIgdGhlIG5hbWUgb3IgdGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIHRvIHNwZWNpZnkgYSBEQiBjbHVzdGVyIHNuYXBzaG90LiBIb3dldmVyLCB5b3UgY2FuIHVzZSBvbmx5IHRoZSBBUk4gdG8gc3BlY2lmeSBhIERCIHNuYXBzaG90LlxuICogIEFmdGVyIHlvdSByZXN0b3JlIGEgREIgY2x1c3RlciB3aXRoIGEgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgc2FtZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5IGZvciBhbnkgZnV0dXJlIHVwZGF0ZXMgdG8gdGhlIERCIGNsdXN0ZXIuIFdoZW4geW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSBmb3IgYW4gdXBkYXRlLCB0aGUgREIgY2x1c3RlciBpcyBub3QgcmVzdG9yZWQgZnJvbSB0aGUgc25hcHNob3QgYWdhaW4sIGFuZCB0aGUgZGF0YSBpbiB0aGUgZGF0YWJhc2UgaXMgbm90IGNoYW5nZWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbiBlbXB0eSBEQiBjbHVzdGVyIGlzIGNyZWF0ZWQsIGFuZCB0aGUgb3JpZ2luYWwgREIgY2x1c3RlciBpcyBkZWxldGVkLiBJZiB5b3Ugc3BlY2lmeSBhIHByb3BlcnR5IHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNuYXBzaG90IHJlc3RvcmUgcHJvcGVydHksIGEgbmV3IERCIGNsdXN0ZXIgaXMgcmVzdG9yZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHksIGFuZCB0aGUgb3JpZ2luYWwgREIgY2x1c3RlciBpcyBkZWxldGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5IHRvIHJlc3RvcmUgYSBEQiBjbHVzdGVyIChhcyBvcHBvc2VkIHRvIHNwZWNpZnlpbmcgaXQgZm9yIERCIGNsdXN0ZXIgdXBkYXRlcyksIHRoZW4gZG9uJ3Qgc3BlY2lmeSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAgICsgICBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgXG4gKiAgICsgICBgYE1hc3RlclVzZXJuYW1lYGAgXG4gKiAgICsgICBgYE1hc3RlclVzZXJQYXNzd29yZGBgIFxuICogICArICAgYGBSZXBsaWNhdGlvblNvdXJjZUlkZW50aWZpZXJgYCBcbiAqICAgKyAgIGBgUmVzdG9yZVR5cGVgYCBcbiAqICAgKyAgIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIFxuICogICArICAgYGBTb3VyY2VSZWdpb25gYCBcbiAqICAgKyAgIGBgU3RvcmFnZUVuY3J5cHRlZGBgIChmb3IgYW4gZW5jcnlwdGVkIHNuYXBzaG90KVxuICogICArICAgYGBVc2VMYXRlc3RSZXN0b3JhYmxlVGltZWBgIFxuICogICBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiBhbiBleGlzdGluZyBTbmFwc2hvdC5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBXaGVuIHJlc3RvcmluZyBhIERCIGNsdXN0ZXIgdG8gYSBwb2ludCBpbiB0aW1lLCB0aGUgaWRlbnRpZmllciBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIgZnJvbSB3aGljaCB0byByZXN0b3JlLlxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IG1hdGNoIHRoZSBpZGVudGlmaWVyIG9mIGFuIGV4aXN0aW5nIERCQ2x1c3Rlci5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblNvdXJjZURCQ2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFXUyBSZWdpb24gd2hpY2ggY29udGFpbnMgdGhlIHNvdXJjZSBEQiBjbHVzdGVyIHdoZW4gcmVwbGljYXRpbmcgYSBEQiBjbHVzdGVyLiBGb3IgZXhhbXBsZSwgYGB1cy1lYXN0LTFgYC4gXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5Tb3VyY2VSZWdpb24/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHksIHRoZW4geW91IG11c3QgZW5hYmxlIGVuY3J5cHRpb24uXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc291cmNlIERCIGNsdXN0ZXIsIGFuZCBpZiB0aGUgREIgY2x1c3RlciBpcyBlbmNyeXB0ZWQsIHRoZSBzcGVjaWZpZWQgYGBLbXNLZXlJZGBgIHByb3BlcnR5IGlzIHVzZWQuXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgYW5kIHRoZSBzcGVjaWZpZWQgc25hcHNob3QgaXMgZW5jcnlwdGVkLCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc25hcHNob3QsIGFuZCB0aGUgc3BlY2lmaWVkIGBgS21zS2V5SWRgYCBwcm9wZXJ0eSBpcyB1c2VkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIGFuZCB0aGUgc3BlY2lmaWVkIHNuYXBzaG90IGlzbid0IGVuY3J5cHRlZCwgeW91IGNhbiB1c2UgdGhpcyBwcm9wZXJ0eSB0byBzcGVjaWZ5IHRoYXQgdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLiBTcGVjaWZ5IHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHkgZm9yIHRoZSBLTVMga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4gSWYgeW91IGRvbid0IHdhbnQgdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgdG8gYmUgZW5jcnlwdGVkLCB0aGVuIGRvbid0IHNldCB0aGlzIHByb3BlcnR5IG9yIHNldCBpdCB0byBgYGZhbHNlYGAuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGJvdGggdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIGFuZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnRpZXMgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHksIHRoZW4gdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgaW5oZXJpdHMgdGhlIGVuY3J5cHRpb24gc2V0dGluZ3MgZnJvbSB0aGUgREIgc25hcHNob3QgdGhhdCBwcm92aWRlLlxuICogICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuU3RvcmFnZUVuY3J5cHRlZD86IGJvb2xlYW5cblN0b3JhZ2VUaHJvdWdocHV0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBzdG9yYWdlIHR5cGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIGluZm9ybWF0aW9uIG9uIHN0b3JhZ2UgdHlwZXMgZm9yIEF1cm9yYSBEQiBjbHVzdGVycywgc2VlIFtTdG9yYWdlIGNvbmZpZ3VyYXRpb25zIGZvciBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhLk92ZXJ2aWV3LlN0b3JhZ2VSZWxpYWJpbGl0eS5odG1sI2F1cm9yYS1zdG9yYWdlLXR5cGUpLiBGb3IgaW5mb3JtYXRpb24gb24gc3RvcmFnZSB0eXBlcyBmb3IgTXVsdGktQVogREIgY2x1c3RlcnMsIHNlZSBbU2V0dGluZ3MgZm9yIGNyZWF0aW5nIE11bHRpLUFaIERCIGNsdXN0ZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvY3JlYXRlLW11bHRpLWF6LWRiLWNsdXN0ZXIuaHRtbCNjcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci1zZXR0aW5ncykuXG4gKiAgVGhpcyBzZXR0aW5nIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgV2hlbiBzcGVjaWZpZWQgZm9yIGEgTXVsdGktQVogREIgY2x1c3RlciwgYSB2YWx1ZSBmb3IgdGhlIGBgSW9wc2BgIHBhcmFtZXRlciBpcyByZXF1aXJlZC5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiAgVmFsaWQgVmFsdWVzOlxuICogICArICBBdXJvcmEgREIgY2x1c3RlcnMgLSBgYGF1cm9yYSB8IGF1cm9yYS1pb3B0MWBgIFxuICogICArICBNdWx0aS1BWiBEQiBjbHVzdGVycyAtIGBgaW8xIHwgaW8yIHwgZ3AzYGAgXG4gKiAgIFxuICogIERlZmF1bHQ6XG4gKiAgICsgIEF1cm9yYSBEQiBjbHVzdGVycyAtIGBgYXVyb3JhYGAgXG4gKiAgICsgIE11bHRpLUFaIERCIGNsdXN0ZXJzIC0gYGBpbzFgYCBcbiAqICAgXG4gKiAgIFdoZW4geW91IGNyZWF0ZSBhbiBBdXJvcmEgREIgY2x1c3RlciB3aXRoIHRoZSBzdG9yYWdlIHR5cGUgc2V0IHRvIGBgYXVyb3JhLWlvcHQxYGAsIHRoZSBzdG9yYWdlIHR5cGUgaXMgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlLiBUaGUgc3RvcmFnZSB0eXBlIGlzbid0IHJldHVybmVkIHdoZW4geW91IHNldCBpdCB0byBgYGF1cm9yYWBgLlxuICovXG5TdG9yYWdlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUYWdzIHRvIGFzc2lnbiB0byB0aGUgREIgY2x1c3Rlci5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIHJlc3RvcmUgdGhlIERCIGNsdXN0ZXIgdG8gdGhlIGxhdGVzdCByZXN0b3JhYmxlIGJhY2t1cCB0aW1lLiBCeSBkZWZhdWx0LCB0aGUgREIgY2x1c3RlciBpcyBub3QgcmVzdG9yZWQgdG8gdGhlIGxhdGVzdCByZXN0b3JhYmxlIGJhY2t1cCB0aW1lLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWU/OiBib29sZWFuXG4vKipcbiAqIEEgbGlzdCBvZiBFQzIgVlBDIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgSWYgeW91IHBsYW4gdG8gdXBkYXRlIHRoZSByZXNvdXJjZSwgZG9uJ3Qgc3BlY2lmeSBWUEMgc2VjdXJpdHkgZ3JvdXBzIGluIGEgc2hhcmVkIFZQQy5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuVnBjU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25uZWN0aW9uIGVuZHBvaW50IGZvciB0aGUgcHJpbWFyeSBpbnN0YW5jZSBvZiB0aGUgREIgY2x1c3Rlci5cbiAqL1xuQWRkcmVzcz86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHBvcnQgdGhhdCB0aGUgZGF0YWJhc2UgZW5naW5lIGlzIGxpc3RlbmluZyBvbi5cbiAqL1xuUG9ydD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGlzIGRhdGEgdHlwZSByZXByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBjb25uZWN0IHRvIGFuIEFtYXpvbiBSRFMgREIgaW5zdGFuY2UuIFRoaXMgZGF0YSB0eXBlIGlzIHVzZWQgYXMgYSByZXNwb25zZSBlbGVtZW50IGluIHRoZSBmb2xsb3dpbmcgYWN0aW9uczpcbiAqICAgKyAgIGBgQ3JlYXRlREJJbnN0YW5jZWBgIFxuICogICArICAgYGBEZXNjcmliZURCSW5zdGFuY2VzYGAgXG4gKiAgICsgICBgYERlbGV0ZURCSW5zdGFuY2VgYCBcbiAqICAgXG4gKiAgRm9yIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHJlcHJlc2VudHMgQW1hem9uIEF1cm9yYSBEQiBjbHVzdGVyIGVuZHBvaW50cywgc2VlIGBgREJDbHVzdGVyRW5kcG9pbnRgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWFkRW5kcG9pbnQge1xuLyoqXG4gKiBUaGUgaG9zdCBhZGRyZXNzIG9mIHRoZSByZWFkZXIgZW5kcG9pbnQuXG4gKi9cbkFkZHJlc3M/OiBzdHJpbmdcbn1cbi8qKlxuICogRGVzY3JpYmVzIGFuIEFXUyBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgcm9sZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIERCIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgREJDbHVzdGVyUm9sZSB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBmZWF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlLiBJQU0gcm9sZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgREIgY2x1c3RlciBncmFudCBwZXJtaXNzaW9uIGZvciB0aGUgREIgY2x1c3RlciB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiBGb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGZlYXR1cmUgbmFtZXMsIHNlZSB0aGUgYGBTdXBwb3J0ZWRGZWF0dXJlTmFtZXNgYCBkZXNjcmlwdGlvbiBpbiBbREJFbmdpbmVWZXJzaW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RCRW5naW5lVmVyc2lvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbkZlYXR1cmVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIHJvbGUgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIERCIGNsdXN0ZXIuXG4gKi9cblJvbGVBcm46IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgc2VjcmV0IG1hbmFnZWQgYnkgUkRTIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHRoZSBtYXN0ZXIgdXNlciBwYXNzd29yZC5cbiAqICAgV2hlbiB5b3UgcmVzdG9yZSBhIERCIGNsdXN0ZXIgZnJvbSBhIHNuYXBzaG90LCBBbWF6b24gUkRTIGdlbmVyYXRlcyBhIG5ldyBzZWNyZXQgaW5zdGVhZCBvZiByZXVzaW5nIHRoZSBzZWNyZXQgc3BlY2lmaWVkIGluIHRoZSBgYFNlY3JldEFybmBgIHByb3BlcnR5LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcmVzdG9yZWQgREIgY2x1c3RlciBpcyBzZWN1cmVseSBtYW5hZ2VkIHdpdGggYSBkZWRpY2F0ZWQgc2VjcmV0LiBUbyBtYWludGFpbiBjb25zaXN0ZW50IGludGVncmF0aW9uIHdpdGggeW91ciBhcHBsaWNhdGlvbiwgeW91IG1pZ2h0IG5lZWQgdG8gdXBkYXRlIHJlc291cmNlIGNvbmZpZ3VyYXRpb25zIHRvIHJlZmVyZW5jZSB0aGUgbmV3bHkgY3JlYXRlZCBzZWNyZXQuXG4gKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1Bhc3N3b3JkIG1hbmFnZW1lbnQgd2l0aCBTZWNyZXRzIE1hbmFnZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9yZHMtc2VjcmV0cy1tYW5hZ2VyLmh0bWwpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKiBhbmQgW1Bhc3N3b3JkIG1hbmFnZW1lbnQgd2l0aCBTZWNyZXRzIE1hbmFnZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9yZHMtc2VjcmV0cy1tYW5hZ2VyLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLipcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0ZXJVc2VyU2VjcmV0IHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzZWNyZXQuIFRoaXMgcGFyYW1ldGVyIGlzIGEgcmV0dXJuIHZhbHVlIHRoYXQgeW91IGNhbiByZXRyaWV2ZSB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXR1cm4gdmFsdWVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtcmRzLWRiY2x1c3Rlci5odG1sI2F3cy1yZXNvdXJjZS1yZHMtZGJjbHVzdGVyLXJldHVybi12YWx1ZXMpLlxuICovXG5TZWNyZXRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFXUyBLTVMga2V5IGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHRvIGVuY3J5cHQgdGhlIHNlY3JldC5cbiAqL1xuS21zS2V5SWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHNjYWxpbmcgY29uZmlndXJhdGlvbiBvZiBhbiBBdXJvcmEgU2VydmVybGVzcyBWMiBEQiBjbHVzdGVyLiBcbiAqICBUaGlzIHByb3BlcnR5IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBdXJvcmEgU2VydmVybGVzcyB2Mi4gRm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxLCBVc2UgdGhlIGBgU2NhbGluZ0NvbmZpZ3VyYXRpb25gYCBwcm9wZXJ0eS5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJsZXNzVjJTY2FsaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBBdXJvcmEgY2FwYWNpdHkgdW5pdHMgKEFDVXMpIGZvciBhIERCIGluc3RhbmNlIGluIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNsdXN0ZXIuIFlvdSBjYW4gc3BlY2lmeSBBQ1UgdmFsdWVzIGluIGhhbGYtc3RlcCBpbmNyZW1lbnRzLCBzdWNoIGFzIDgsIDguNSwgOSwgYW5kIHNvIG9uLiBGb3IgQXVyb3JhIHZlcnNpb25zIHRoYXQgc3VwcG9ydCB0aGUgQXVyb3JhIFNlcnZlcmxlc3MgdjIgYXV0by1wYXVzZSBmZWF0dXJlLCB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCB5b3UgY2FuIHVzZSBpcyAwLiBGb3IgdmVyc2lvbnMgdGhhdCBkb24ndCBzdXBwb3J0IEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGF1dG8tcGF1c2UsIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHlvdSBjYW4gdXNlIGlzIDAuNS5cbiAqL1xuTWluQ2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyAoQUNVcykgZm9yIGEgREIgaW5zdGFuY2UgaW4gYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2x1c3Rlci4gWW91IGNhbiBzcGVjaWZ5IEFDVSB2YWx1ZXMgaW4gaGFsZi1zdGVwIGluY3JlbWVudHMsIHN1Y2ggYXMgNDAsIDQwLjUsIDQxLCBhbmQgc28gb24uIFRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgeW91IGNhbiB1c2UgaXMgMTI4LlxuICogIFRoZSBtYXhpbXVtIGNhcGFjaXR5IG11c3QgYmUgaGlnaGVyIHRoYW4gMC41IEFDVXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Nob29zaW5nIHRoZSBtYXhpbXVtIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNhcGFjaXR5IHNldHRpbmcgZm9yIGEgY2x1c3Rlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLXYyLnNldHRpbmctY2FwYWNpdHkuaHRtbCNhdXJvcmEtc2VydmVybGVzcy12Mi5tYXhfY2FwYWNpdHlfY29uc2lkZXJhdGlvbnMpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBBdXJvcmEgYXV0b21hdGljYWxseSBzZXRzIGNlcnRhaW4gcGFyYW1ldGVycyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgVjIgREIgaW5zdGFuY2VzIHRvIHZhbHVlcyB0aGF0IGRlcGVuZCBvbiB0aGUgbWF4aW11bSBBQ1UgdmFsdWUgaW4gdGhlIGNhcGFjaXR5IHJhbmdlLiBXaGVuIHlvdSB1cGRhdGUgdGhlIG1heGltdW0gY2FwYWNpdHkgdmFsdWUsIHRoZSBgYFBhcmFtZXRlckFwcGx5U3RhdHVzYGAgdmFsdWUgZm9yIHRoZSBEQiBpbnN0YW5jZSBjaGFuZ2VzIHRvIGBgcGVuZGluZy1yZWJvb3RgYC4gWW91IGNhbiB1cGRhdGUgdGhlIHBhcmFtZXRlciB2YWx1ZXMgYnkgcmVib290aW5nIHRoZSBEQiBpbnN0YW5jZSBhZnRlciBjaGFuZ2luZyB0aGUgY2FwYWNpdHkgcmFuZ2UuXG4gKi9cbk1heENhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgREIgaW5zdGFuY2UgbXVzdCBiZSBpZGxlIGJlZm9yZSBBdXJvcmEgYXR0ZW1wdHMgdG8gYXV0b21hdGljYWxseSBwYXVzZSBpdC4gXG4gKiAgU3BlY2lmeSBhIHZhbHVlIGJldHdlZW4gMzAwIHNlY29uZHMgKGZpdmUgbWludXRlcykgYW5kIDg2LDQwMCBzZWNvbmRzIChvbmUgZGF5KS4gVGhlIGRlZmF1bHQgaXMgMzAwIHNlY29uZHMuXG4gKi9cblNlY29uZHNVbnRpbEF1dG9QYXVzZT86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgc2NhbGluZyBjb25maWd1cmF0aW9uIG9mIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIERCIGNsdXN0ZXIuXG4gKiAgVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjEuIEZvciBBdXJvcmEgU2VydmVybGVzcyB2MiwgVXNlIHRoZSBgYFNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgU2VydmVybGVzcyB2MSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBvciBkaXNhbGxvdyBhdXRvbWF0aWMgcGF1c2UgZm9yIGFuIEF1cm9yYSBEQiBjbHVzdGVyIGluIGBgc2VydmVybGVzc2BgIERCIGVuZ2luZSBtb2RlLiBBIERCIGNsdXN0ZXIgY2FuIGJlIHBhdXNlZCBvbmx5IHdoZW4gaXQncyBpZGxlIChpdCBoYXMgbm8gY29ubmVjdGlvbnMpLlxuICogICBJZiBhIERCIGNsdXN0ZXIgaXMgcGF1c2VkIGZvciBtb3JlIHRoYW4gc2V2ZW4gZGF5cywgdGhlIERCIGNsdXN0ZXIgbWlnaHQgYmUgYmFja2VkIHVwIHdpdGggYSBzbmFwc2hvdC4gSW4gdGhpcyBjYXNlLCB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aGVuIHRoZXJlIGlzIGEgcmVxdWVzdCB0byBjb25uZWN0IHRvIGl0LlxuICovXG5BdXRvUGF1c2U/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBEQiBlbmdpbmUgbW9kZS5cbiAqICBGb3IgQXVyb3JhIE15U1FMLCB2YWxpZCBjYXBhY2l0eSB2YWx1ZXMgYXJlIGBgMWBgLCBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDEyOGBgLCBhbmQgYGAyNTZgYC5cbiAqICBGb3IgQXVyb3JhIFBvc3RncmVTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAyYGAsIGBgNGBgLCBgYDhgYCwgYGAxNmBgLCBgYDMyYGAsIGBgNjRgYCwgYGAxOTJgYCwgYW5kIGBgMzg0YGAuXG4gKiAgVGhlIG1heGltdW0gY2FwYWNpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gY2FwYWNpdHkuXG4gKi9cbk1heENhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBtaW5pbXVtIGNhcGFjaXR5IGZvciBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBEQiBlbmdpbmUgbW9kZS5cbiAqICBGb3IgQXVyb3JhIE15U1FMLCB2YWxpZCBjYXBhY2l0eSB2YWx1ZXMgYXJlIGBgMWBgLCBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDEyOGBgLCBhbmQgYGAyNTZgYC5cbiAqICBGb3IgQXVyb3JhIFBvc3RncmVTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAyYGAsIGBgNGBgLCBgYDhgYCwgYGAxNmBgLCBgYDMyYGAsIGBgNjRgYCwgYGAxOTJgYCwgYW5kIGBgMzg0YGAuXG4gKiAgVGhlIG1pbmltdW0gY2FwYWNpdHkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gY2FwYWNpdHkuXG4gKi9cbk1pbkNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCBBdXJvcmEgU2VydmVybGVzcyB2MSB0cmllcyB0byBmaW5kIGEgc2NhbGluZyBwb2ludCB0byBwZXJmb3JtIHNlYW1sZXNzIHNjYWxpbmcgYmVmb3JlIGVuZm9yY2luZyB0aGUgdGltZW91dCBhY3Rpb24uIFRoZSBkZWZhdWx0IGlzIDMwMC5cbiAqICBTcGVjaWZ5IGEgdmFsdWUgYmV0d2VlbiA2MCBhbmQgNjAwIHNlY29uZHMuXG4gKi9cblNlY29uZHNCZWZvcmVUaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIFRoZSB0aW1lLCBpbiBzZWNvbmRzLCBiZWZvcmUgYW4gQXVyb3JhIERCIGNsdXN0ZXIgaW4gYGBzZXJ2ZXJsZXNzYGAgbW9kZSBpcyBwYXVzZWQuXG4gKiAgU3BlY2lmeSBhIHZhbHVlIGJldHdlZW4gMzAwIGFuZCA4Niw0MDAgc2Vjb25kcy5cbiAqL1xuU2Vjb25kc1VudGlsQXV0b1BhdXNlPzogbnVtYmVyXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQsIGVpdGhlciBgYEZvcmNlQXBwbHlDYXBhY2l0eUNoYW5nZWBgIG9yIGBgUm9sbGJhY2tDYXBhY2l0eUNoYW5nZWBgLlxuICogICBgYEZvcmNlQXBwbHlDYXBhY2l0eUNoYW5nZWBgIHNldHMgdGhlIGNhcGFjaXR5IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUgYXMgc29vbiBhcyBwb3NzaWJsZS5cbiAqICAgYGBSb2xsYmFja0NhcGFjaXR5Q2hhbmdlYGAsIHRoZSBkZWZhdWx0LCBpZ25vcmVzIHRoZSBjYXBhY2l0eSBjaGFuZ2UgaWYgYSBzY2FsaW5nIHBvaW50IGlzbid0IGZvdW5kIGluIHRoZSB0aW1lb3V0IHBlcmlvZC5cbiAqICAgSWYgeW91IHNwZWNpZnkgYGBGb3JjZUFwcGx5Q2FwYWNpdHlDaGFuZ2VgYCwgY29ubmVjdGlvbnMgdGhhdCBwcmV2ZW50IEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIGZyb20gZmluZGluZyBhIHNjYWxpbmcgcG9pbnQgbWlnaHQgYmUgZHJvcHBlZC5cbiAqICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXV0b3NjYWxpbmcgZm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvYXVyb3JhLXNlcnZlcmxlc3MuaG93LWl0LXdvcmtzLmh0bWwjYXVyb3JhLXNlcnZlcmxlc3MuaG93LWl0LXdvcmtzLmF1dG8tc2NhbGluZykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICovXG5UaW1lb3V0QWN0aW9uPzogc3RyaW5nXG59XG4vKipcbiAqIE1ldGFkYXRhIGFzc2lnbmVkIHRvIGFuIEFtYXpvbiBSRFMgcmVzb3VyY2UgY29uc2lzdGluZyBvZiBhIGtleS12YWx1ZSBwYWlyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1RhZ2dpbmcgQW1hem9uIFJEUyByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9VU0VSX1RhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIG9yIFtUYWdnaW5nIEFtYXpvbiBBdXJvcmEgYW5kIEFtYXpvbiBSRFMgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9UYWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBBIGtleSBpcyB0aGUgcmVxdWlyZWQgbmFtZSBvZiB0aGUgdGFnLiBUaGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBmcm9tIDEgdG8gMTI4IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbid0IGJlIHByZWZpeGVkIHdpdGggYGBhd3M6YGAgb3IgYGByZHM6YGAuIFRoZSBzdHJpbmcgY2FuIG9ubHkgY29udGFpbiBvbmx5IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlLXNwYWNlLCAnXycsICcuJywgJzonLCAnLycsICc9JywgJysnLCAnLScsICdAJyAoSmF2YSByZWdleDogXCJeKFtcXFxccHtMfVxcXFxwe1p9XFxcXHB7Tn1fLjovPStcXFxcLUBdKikkXCIpLlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBBIHZhbHVlIGlzIHRoZSBvcHRpb25hbCB2YWx1ZSBvZiB0aGUgdGFnLiBUaGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBmcm9tIDEgdG8gMjU2IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbid0IGJlIHByZWZpeGVkIHdpdGggYGBhd3M6YGAgb3IgYGByZHM6YGAuIFRoZSBzdHJpbmcgY2FuIG9ubHkgY29udGFpbiBvbmx5IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlLXNwYWNlLCAnXycsICcuJywgJzonLCAnLycsICc9JywgJysnLCAnLScsICdAJyAoSmF2YSByZWdleDogXCJeKFtcXFxccHtMfVxcXFxwe1p9XFxcXHB7Tn1fLjovPStcXFxcLUBdKikkXCIpLlxuICovXG5WYWx1ZT86IHN0cmluZ1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXJkcy1kYmNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtcmRzLWRiY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXIgb3IgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyBhbiBBdXJvcmEgREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhbiBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmEuQ3JlYXRlSW5zdGFuY2UuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNyZWF0aW5nIGEgTXVsdGktQVogREIgY2x1c3Rlciwgc2VlIFtDcmVhdGluZyBhIE11bHRpLUFaIERCIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9jcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgIFlvdSBjYW4gb25seSBjcmVhdGUgdGhpcyByZXNvdXJjZSBpbiBBV1MgUmVnaW9ucyB3aGVyZSBBbWF6b24gQXVyb3JhIG9yIE11bHRpLUFaIERCIGNsdXN0ZXJzIGFyZSBzdXBwb3J0ZWQuXG4gKiAgICAqVXBkYXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFdoZW4gcHJvcGVydGllcyBsYWJlbGVkIFwiKlVwZGF0ZSByZXF1aXJlczoqIFtSZXBsYWNlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXJlcGxhY2VtZW50KVwiIGFyZSB1cGRhdGVkLCBBV1MgQ2xvdWRGb3JtYXRpb24gZmlyc3QgY3JlYXRlcyBhIHJlcGxhY2VtZW50IERCIGNsdXN0ZXIsIHRoZW4gY2hhbmdlcyByZWZlcmVuY2VzIGZyb20gb3RoZXIgZGVwZW5kZW50IHJlc291cmNlcyB0byBwb2ludCB0byB0aGUgcmVwbGFjZW1lbnQgREIgY2x1c3RlciwgYW5kIGZpbmFsbHkgZGVsZXRlcyB0aGUgb2xkIERCIGNsdXN0ZXIuXG4gKiAgIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhhdCB5b3UgdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBkYXRhYmFzZSBiZWZvcmUgdXBkYXRpbmcgdGhlIHN0YWNrLiBJZiB5b3UgZG9uJ3QsIHlvdSBsb3NlIHRoZSBkYXRhIHdoZW4gQVdTIENsb3VkRm9ybWF0aW9uIHJlcGxhY2VzIHlvdXIgREIgY2x1c3Rlci4gVG8gcHJlc2VydmUgeW91ciBkYXRhLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOlxuICogICAxLiAgRGVhY3RpdmF0ZSBhbnkgYXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHRoZSBEQiBjbHVzdGVyIHNvIHRoYXQgdGhlcmUncyBubyBhY3Rpdml0eSBvbiB0aGUgREIgaW5zdGFuY2UuXG4gKiAgIDEuICBDcmVhdGUgYSBzbmFwc2hvdCBvZiB0aGUgREIgY2x1c3Rlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ3JlYXRpbmcgYSBEQiBjbHVzdGVyIHNuYXBzaG90XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9DcmVhdGVTbmFwc2hvdENsdXN0ZXIuaHRtbCkuXG4gKiAgIDEuICBJZiB5b3Ugd2FudCB0byByZXN0b3JlIHlvdXIgREIgY2x1c3RlciB1c2luZyBhIERCIGNsdXN0ZXIgc25hcHNob3QsIG1vZGlmeSB0aGUgdXBkYXRlZCB0ZW1wbGF0ZSB3aXRoIHlvdXIgREIgY2x1c3RlciBjaGFuZ2VzIGFuZCBhZGQgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgd2l0aCB0aGUgSUQgb2YgdGhlIERCIGNsdXN0ZXIgc25hcHNob3QgdGhhdCB5b3Ugd2FudCB0byB1c2UuXG4gKiAgQWZ0ZXIgeW91IHJlc3RvcmUgYSBEQiBjbHVzdGVyIHdpdGggYSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBzYW1lIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHkgZm9yIGFueSBmdXR1cmUgdXBkYXRlcyB0byB0aGUgREIgY2x1c3Rlci4gV2hlbiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5IGZvciBhbiB1cGRhdGUsIHRoZSBEQiBjbHVzdGVyIGlzIG5vdCByZXN0b3JlZCBmcm9tIHRoZSBEQiBjbHVzdGVyIHNuYXBzaG90IGFnYWluLCBhbmQgdGhlIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGlzIG5vdCBjaGFuZ2VkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgYW4gZW1wdHkgREIgY2x1c3RlciBpcyBjcmVhdGVkLCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC4gSWYgeW91IHNwZWNpZnkgYSBwcm9wZXJ0eSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBzbmFwc2hvdCByZXN0b3JlIHByb3BlcnR5LCBhIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGZyb20gdGhlIHNwZWNpZmllZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbmQgdGhlIG9yaWdpbmFsIERCIGNsdXN0ZXIgaXMgZGVsZXRlZC5cbiAqICAgMS4gIFVwZGF0ZSB0aGUgc3RhY2suXG4gKiAgIFxuICogICBDdXJyZW50bHksIHdoZW4geW91IGFyZSB1cGRhdGluZyB0aGUgc3RhY2sgZm9yIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIERCIGNsdXN0ZXIsIHlvdSBjYW4ndCBpbmNsdWRlIGNoYW5nZXMgdG8gYW55IG90aGVyIHByb3BlcnRpZXMgd2hlbiB5b3Ugc3BlY2lmeSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYFByZWZlcnJlZEJhY2t1cFdpbmRvd2BgLCBgYFByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93YGAsIGFuZCBgYFBvcnRgYC4gVGhpcyBsaW1pdGF0aW9uIGRvZXNuJ3QgYXBwbHkgdG8gcHJvdmlzaW9uZWQgREIgY2x1c3RlcnMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgb3RoZXIgcHJvcGVydGllcyBvZiB0aGlzIHJlc291cmNlLCBzZWUgYGBNb2RpZnlEQkNsdXN0ZXJgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXBkYXRpbmcgc3RhY2tzLCBzZWUgW0Nsb3VkRm9ybWF0aW9uIFN0YWNrcyBVcGRhdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1jZm4tdXBkYXRpbmctc3RhY2tzLmh0bWwpLlxuICogICAqRGVsZXRpbmcgREIgY2x1c3RlcnMqIFxuICogIFRoZSBkZWZhdWx0IGBgRGVsZXRpb25Qb2xpY3lgYCBmb3IgYGBBV1M6OlJEUzo6REJDbHVzdGVyYGAgcmVzb3VyY2VzIGlzIGBgU25hcHNob3RgYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IEFXUyBDbG91ZEZvcm1hdGlvbiBkZWxldGVzIHJlc291cmNlcywgc2VlIFtEZWxldGlvblBvbGljeSBBdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1hdHRyaWJ1dGUtZGVsZXRpb25wb2xpY3kuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19SRFNfREJDTFVTVEVSIHtcbkVuZHBvaW50PzogRW5kcG9pbnRcblJlYWRFbmRwb2ludD86IFJlYWRFbmRwb2ludFxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzIChHaUIpIHRvIGFsbG9jYXRlIHRvIGVhY2ggREIgaW5zdGFuY2UgaW4gdGhlIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogTXVsdGktQVogREIgY2x1c3RlcnMgb25seVxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICovXG5BbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyXG4vKipcbiAqIFByb3ZpZGVzIGEgbGlzdCBvZiB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIERCIGNsdXN0ZXIuIElBTSByb2xlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBEQiBjbHVzdGVyIGdyYW50IHBlcm1pc3Npb24gZm9yIHRoZSBEQiBjbHVzdGVyIHRvIGFjY2VzcyBvdGhlciBBbWF6b24gV2ViIFNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Bc3NvY2lhdGVkUm9sZXM/OiBEQkNsdXN0ZXJSb2xlW11cbi8qKlxuICogQSBsaXN0IG9mIEF2YWlsYWJpbGl0eSBab25lcyAoQVpzKSB3aGVyZSBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIgY2FuIGJlIGNyZWF0ZWQuIEZvciBpbmZvcm1hdGlvbiBvbiBBV1MgUmVnaW9ucyBhbmQgQXZhaWxhYmlsaXR5IFpvbmVzLCBzZWUgW0Nob29zaW5nIHRoZSBSZWdpb25zIGFuZCBBdmFpbGFiaWxpdHkgWm9uZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9Db25jZXB0cy5SZWdpb25zQW5kQXZhaWxhYmlsaXR5Wm9uZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW11cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgbWlub3IgZW5naW5lIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgdG8gdGhlIERCIGNsdXN0ZXIgZHVyaW5nIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuIEJ5IGRlZmF1bHQsIG1pbm9yIGVuZ2luZSB1cGdyYWRlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlclxuICovXG5BdXRvTWlub3JWZXJzaW9uVXBncmFkZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIHRhcmdldCBiYWNrdHJhY2sgd2luZG93LCBpbiBzZWNvbmRzLiBUbyBkaXNhYmxlIGJhY2t0cmFja2luZywgc2V0IHRoaXMgdmFsdWUgdG8gYGAwYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIE15U1FMIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBEZWZhdWx0OiBgYDBgYCBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgSWYgc3BlY2lmaWVkLCB0aGlzIHZhbHVlIG11c3QgYmUgc2V0IHRvIGEgbnVtYmVyIGZyb20gMCB0byAyNTksMjAwICg3MiBob3VycykuXG4gKi9cbkJhY2t0cmFja1dpbmRvdz86IG51bWJlclxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgZm9yIHdoaWNoIGF1dG9tYXRlZCBiYWNrdXBzIGFyZSByZXRhaW5lZC5cbiAqICBEZWZhdWx0OiAxXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgYSB2YWx1ZSBmcm9tIDEgdG8gMzVcbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkJhY2t1cFJldGVudGlvblBlcmlvZD86IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNjYWxhYmlsaXR5IG1vZGUgb2YgdGhlIEF1cm9yYSBEQiBjbHVzdGVyLiBXaGVuIHNldCB0byBgYGxpbWl0bGVzc2BgLCB0aGUgY2x1c3RlciBvcGVyYXRlcyBhcyBhbiBBdXJvcmEgTGltaXRsZXNzIERhdGFiYXNlLCBhbGxvd2luZyB5b3UgdG8gY3JlYXRlIGEgREIgc2hhcmQgZ3JvdXAgZm9yIGhvcml6b250YWwgc2NhbGluZyAoc2hhcmRpbmcpIGNhcGFiaWxpdGllcy4gV2hlbiBzZXQgdG8gYGBzdGFuZGFyZGBgICh0aGUgZGVmYXVsdCksIHRoZSBjbHVzdGVyIHVzZXMgbm9ybWFsIERCIGluc3RhbmNlIGNyZWF0aW9uLlxuICovXG5DbHVzdGVyU2NhbGFiaWxpdHlUeXBlPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0byBjb3B5IGFsbCB0YWdzIGZyb20gdGhlIERCIGNsdXN0ZXIgdG8gc25hcHNob3RzIG9mIHRoZSBEQiBjbHVzdGVyLiBUaGUgZGVmYXVsdCBpcyBub3QgdG8gY29weSB0aGVtLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5Db3B5VGFnc1RvU25hcHNob3Q/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtb2RlIG9mIERhdGFiYXNlIEluc2lnaHRzIHRvIGVuYWJsZSBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gKiAgSWYgeW91IHNldCB0aGlzIHZhbHVlIHRvIGBgYWR2YW5jZWRgYCwgeW91IG11c3QgYWxzbyBzZXQgdGhlIGBgUGVyZm9ybWFuY2VJbnNpZ2h0c0VuYWJsZWRgYCBwYXJhbWV0ZXIgdG8gYGB0cnVlYGAgYW5kIHRoZSBgYFBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2RgYCBwYXJhbWV0ZXIgdG8gNDY1LlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGF0YWJhc2VJbnNpZ2h0c01vZGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZS4gSWYgeW91IGRvbid0IHByb3ZpZGUgYSBuYW1lLCB0aGVuIEFtYXpvbiBSRFMgd29uJ3QgY3JlYXRlIGEgZGF0YWJhc2UgaW4gdGhpcyBEQiBjbHVzdGVyLiBGb3IgbmFtaW5nIGNvbnN0cmFpbnRzLCBzZWUgW05hbWluZyBDb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5Db25zdHJhaW50cykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGF0YWJhc2VOYW1lPzogc3RyaW5nXG5EQkNsdXN0ZXJBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbXB1dGUgYW5kIG1lbW9yeSBjYXBhY2l0eSBvZiBlYWNoIERCIGluc3RhbmNlIGluIHRoZSBNdWx0aS1BWiBEQiBjbHVzdGVyLCBmb3IgZXhhbXBsZSBgYGRiLm02Z2QueGxhcmdlYGAuIE5vdCBhbGwgREIgaW5zdGFuY2UgY2xhc3NlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBBV1MtUmVnaW9ucywgb3IgZm9yIGFsbCBkYXRhYmFzZSBlbmdpbmVzLlxuICogIEZvciB0aGUgZnVsbCBsaXN0IG9mIERCIGluc3RhbmNlIGNsYXNzZXMgYW5kIGF2YWlsYWJpbGl0eSBmb3IgeW91ciBlbmdpbmUsIHNlZSBbREIgaW5zdGFuY2UgY2xhc3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9Db25jZXB0cy5EQkluc3RhbmNlQ2xhc3MuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuREJDbHVzdGVySW5zdGFuY2VDbGFzcz86IHN0cmluZ1xuREJDbHVzdGVyUmVzb3VyY2VJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgcGFyYW1ldGVyIGdyb3VwIHRvIGFwcGx5IHRvIGFsbCBpbnN0YW5jZXMgb2YgdGhlIERCIGNsdXN0ZXIuXG4gKiAgIFdoZW4geW91IGFwcGx5IGEgcGFyYW1ldGVyIGdyb3VwIHVzaW5nIHRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIsIHRoZSBEQiBjbHVzdGVyIGlzbid0IHJlYm9vdGVkIGF1dG9tYXRpY2FsbHkuIEFsc28sIHBhcmFtZXRlciBjaGFuZ2VzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHJhdGhlciB0aGFuIGR1cmluZyB0aGUgbmV4dCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKiAgIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKiAgRGVmYXVsdDogVGhlIGV4aXN0aW5nIG5hbWUgc2V0dGluZ1xuICogIENvbnN0cmFpbnRzOlxuICogICArICBUaGUgREIgcGFyYW1ldGVyIGdyb3VwIG11c3QgYmUgaW4gdGhlIHNhbWUgREIgcGFyYW1ldGVyIGdyb3VwIGZhbWlseSBhcyB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgICsgIFRoZSBgYERCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWVgYCBwYXJhbWV0ZXIgaXMgdmFsaWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGBBbGxvd01ham9yVmVyc2lvblVwZ3JhZGVgYCBwYXJhbWV0ZXIgZm9yIGEgbWFqb3IgdmVyc2lvbiB1cGdyYWRlIG9ubHkuXG4gKi9cbkRCSW5zdGFuY2VQYXJhbWV0ZXJHcm91cE5hbWU/OiBzdHJpbmdcbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cbkRCU3lzdGVtSWQ/OiBzdHJpbmdcbi8qKlxuICogSWYgeW91IGFyZSBjb25maWd1cmluZyBhbiBBdXJvcmEgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIgYW5kIHdhbnQgeW91ciBBdXJvcmEgREIgY2x1c3RlciB0byBiZSBhIHNlY29uZGFyeSBtZW1iZXIgaW4gdGhlIGdsb2JhbCBkYXRhYmFzZSBjbHVzdGVyLCBzcGVjaWZ5IHRoZSBnbG9iYWwgY2x1c3RlciBJRCBvZiB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIuIFRvIGRlZmluZSB0aGUgcHJpbWFyeSBkYXRhYmFzZSBjbHVzdGVyIG9mIHRoZSBnbG9iYWwgY2x1c3RlciwgdXNlIHRoZSBbQVdTOjpSRFM6Okdsb2JhbENsdXN0ZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1yZHMtZ2xvYmFsY2x1c3Rlci5odG1sKSByZXNvdXJjZS4gXG4gKiAgIElmIHlvdSBhcmVuJ3QgY29uZmlndXJpbmcgYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3RlciwgZG9uJ3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBcbiAqICAgVG8gcmVtb3ZlIHRoZSBEQiBjbHVzdGVyIGZyb20gYSBnbG9iYWwgZGF0YWJhc2UgY2x1c3Rlciwgc3BlY2lmeSBhbiBlbXB0eSB2YWx1ZSBmb3IgdGhlIGBgR2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgYCBwcm9wZXJ0eS5cbiAqICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEF1cm9yYSBnbG9iYWwgZGF0YWJhc2VzLCBzZWUgW1dvcmtpbmcgd2l0aCBBbWF6b24gQXVyb3JhIEdsb2JhbCBEYXRhYmFzZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtZ2xvYmFsLWRhdGFiYXNlLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBEQiBjbHVzdGVyIGlkZW50aWZpZXIuIFRoaXMgcGFyYW1ldGVyIGlzIHN0b3JlZCBhcyBhIGxvd2VyY2FzZSBzdHJpbmcuXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgY29udGFpbiBmcm9tIDEgdG8gNjMgbGV0dGVycywgbnVtYmVycywgb3IgaHlwaGVucy5cbiAqICAgKyAgRmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgYSBsZXR0ZXIuXG4gKiAgICsgIENhbid0IGVuZCB3aXRoIGEgaHlwaGVuIG9yIGNvbnRhaW4gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnMuXG4gKiAgIFxuICogIEV4YW1wbGU6IGBgbXktY2x1c3RlcjFgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgREIgY2x1c3RlciBwYXJhbWV0ZXIgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLlxuICogICBJZiB5b3UgYXBwbHkgYSBwYXJhbWV0ZXIgZ3JvdXAgdG8gYW4gZXhpc3RpbmcgREIgY2x1c3RlciwgdGhlbiBpdHMgREIgaW5zdGFuY2VzIG1pZ2h0IG5lZWQgdG8gcmVib290LiBUaGlzIGNhbiByZXN1bHQgaW4gYW4gb3V0YWdlIHdoaWxlIHRoZSBEQiBpbnN0YW5jZXMgYXJlIHJlYm9vdGluZy5cbiAqICBJZiB5b3UgYXBwbHkgYSBjaGFuZ2UgdG8gcGFyYW1ldGVyIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCBhIHN0b3BwZWQgREIgY2x1c3RlciwgdGhlbiB0aGUgdXBkYXRlIHN0YWNrIHdhaXRzIHVudGlsIHRoZSBEQiBjbHVzdGVyIGlzIHN0YXJ0ZWQuXG4gKiAgIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgREIgY2x1c3RlciBwYXJhbWV0ZXIgZ3JvdXAgbmFtZXMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG4gKiAgIGBgYXdzIHJkcyBkZXNjcmliZS1kYi1jbHVzdGVyLXBhcmFtZXRlci1ncm91cHMgLS1xdWVyeSBcIkRCQ2x1c3RlclBhcmFtZXRlckdyb3Vwc1tdLkRCQ2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZVwiIC0tb3V0cHV0IHRleHRgYCBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgREIgc3VibmV0IGdyb3VwIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBEQiBjbHVzdGVyLiBcbiAqICBJZiB5b3UgYXJlIHJlc3RvcmluZyBhIERCIGNsdXN0ZXIgdG8gYSBwb2ludCBpbiB0aW1lIHdpdGggYGBSZXN0b3JlVHlwZWBgIHNldCB0byBgYGNvcHktb24td3JpdGVgYCwgYW5kIGRvbid0IHNwZWNpZnkgYSBEQiBzdWJuZXQgZ3JvdXAgbmFtZSwgdGhlbiB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aXRoIGEgZGVmYXVsdCBEQiBzdWJuZXQgZ3JvdXAuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkRCU3VibmV0R3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgREIgY2x1c3RlciBoYXMgZGVsZXRpb24gcHJvdGVjdGlvbiBlbmFibGVkLiBUaGUgZGF0YWJhc2UgY2FuJ3QgYmUgZGVsZXRlZCB3aGVuIGRlbGV0aW9uIHByb3RlY3Rpb24gaXMgZW5hYmxlZC4gQnkgZGVmYXVsdCwgZGVsZXRpb24gcHJvdGVjdGlvbiBpcyBkaXNhYmxlZC5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuRGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGRpcmVjdG9yeSBJRCBvZiB0aGUgQWN0aXZlIERpcmVjdG9yeSB0byBjcmVhdGUgdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIEFtYXpvbiBBdXJvcmEgREIgY2x1c3RlcnMsIEFtYXpvbiBSRFMgY2FuIHVzZSBLZXJiZXJvcyBhdXRoZW50aWNhdGlvbiB0byBhdXRoZW50aWNhdGUgdXNlcnMgdGhhdCBjb25uZWN0IHRvIHRoZSBEQiBjbHVzdGVyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUva2VyYmVyb3MtYXV0aGVudGljYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRG9tYWluPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgSUFNIHJvbGUgdG8gdXNlIHdoZW4gbWFraW5nIEFQSSBjYWxscyB0byB0aGUgRGlyZWN0b3J5IFNlcnZpY2UuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5Eb21haW5JQU1Sb2xlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbGlzdCBvZiBsb2cgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGV4cG9ydGluZyB0byBDbG91ZFdhdGNoIExvZ3MuIFRoZSB2YWx1ZXMgaW4gdGhlIGxpc3QgZGVwZW5kIG9uIHRoZSBEQiBlbmdpbmUgYmVpbmcgdXNlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHVibGlzaGluZyBEYXRhYmFzZSBMb2dzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX0xvZ0FjY2Vzcy5odG1sI1VTRVJfTG9nQWNjZXNzLlByb2NlZHVyYWwuVXBsb2FkdG9DbG91ZFdhdGNoKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgICpBdXJvcmEgTXlTUUwqIFxuICogIFZhbGlkIHZhbHVlczogYGBhdWRpdGBgLCBgYGVycm9yYGAsIGBgZ2VuZXJhbGBgLCBgYHNsb3dxdWVyeWBgIFxuICogICAqQXVyb3JhIFBvc3RncmVTUUwqIFxuICogIFZhbGlkIHZhbHVlczogYGBwb3N0Z3Jlc3FsYGAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkVuYWJsZUNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz86IHN0cmluZ1tdXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGlzIERCIGNsdXN0ZXIgdG8gZm9yd2FyZCB3cml0ZSBvcGVyYXRpb25zIHRvIHRoZSBwcmltYXJ5IGNsdXN0ZXIgb2YgYSBnbG9iYWwgY2x1c3RlciAoQXVyb3JhIGdsb2JhbCBkYXRhYmFzZSkuIEJ5IGRlZmF1bHQsIHdyaXRlIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIG9uIEF1cm9yYSBEQiBjbHVzdGVycyB0aGF0IGFyZSBzZWNvbmRhcnkgY2x1c3RlcnMgaW4gYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZS5cbiAqICBZb3UgY2FuIHNldCB0aGlzIHZhbHVlIG9ubHkgb24gQXVyb3JhIERCIGNsdXN0ZXJzIHRoYXQgYXJlIG1lbWJlcnMgb2YgYW4gQXVyb3JhIGdsb2JhbCBkYXRhYmFzZS4gV2l0aCB0aGlzIHBhcmFtZXRlciBlbmFibGVkLCBhIHNlY29uZGFyeSBjbHVzdGVyIGNhbiBmb3J3YXJkIHdyaXRlcyB0byB0aGUgY3VycmVudCBwcmltYXJ5IGNsdXN0ZXIsIGFuZCB0aGUgcmVzdWx0aW5nIGNoYW5nZXMgYXJlIHJlcGxpY2F0ZWQgYmFjayB0byB0aGlzIGNsdXN0ZXIuIEZvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIG9mIGFuIEF1cm9yYSBnbG9iYWwgZGF0YWJhc2UsIHRoaXMgdmFsdWUgaXMgdXNlZCBpbW1lZGlhdGVseSBpZiB0aGUgcHJpbWFyeSBpcyBkZW1vdGVkIGJ5IGEgZ2xvYmFsIGNsdXN0ZXIgQVBJIG9wZXJhdGlvbiwgYnV0IGl0IGRvZXMgbm90aGluZyB1bnRpbCB0aGVuLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBIVFRQIGVuZHBvaW50IGZvciB0aGUgREIgY2x1c3Rlci4gQnkgZGVmYXVsdCwgdGhlIEhUVFAgZW5kcG9pbnQgaXNuJ3QgZW5hYmxlZC5cbiAqICBXaGVuIGVuYWJsZWQsIHRoZSBIVFRQIGVuZHBvaW50IHByb3ZpZGVzIGEgY29ubmVjdGlvbmxlc3Mgd2ViIHNlcnZpY2UgQVBJIChSRFMgRGF0YSBBUEkpIGZvciBydW5uaW5nIFNRTCBxdWVyaWVzIG9uIHRoZSBEQiBjbHVzdGVyLiBZb3UgY2FuIGFsc28gcXVlcnkgeW91ciBkYXRhYmFzZSBmcm9tIGluc2lkZSB0aGUgUkRTIGNvbnNvbGUgd2l0aCB0aGUgUkRTIHF1ZXJ5IGVkaXRvci5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2luZyBSRFMgRGF0YSBBUEldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9kYXRhLWFwaS5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5hYmxlSHR0cEVuZHBvaW50PzogYm9vbGVhblxuLyoqXG4gKiBBIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIG1hcHBpbmcgb2YgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBhY2NvdW50cyB0byBkYXRhYmFzZSBhY2NvdW50cy4gQnkgZGVmYXVsdCwgbWFwcGluZyBpcyBkaXNhYmxlZC5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtJQU0gRGF0YWJhc2UgQXV0aGVudGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9Vc2luZ1dpdGhSRFMuSUFNREJBdXRoLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLiogXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5FbmFibGVJQU1EYXRhYmFzZUF1dGhlbnRpY2F0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciByZWFkIHJlcGxpY2FzIGNhbiBmb3J3YXJkIHdyaXRlIG9wZXJhdGlvbnMgdG8gdGhlIHdyaXRlciBEQiBpbnN0YW5jZSBpbiB0aGUgREIgY2x1c3Rlci4gQnkgZGVmYXVsdCwgd3JpdGUgb3BlcmF0aW9ucyBhcmVuJ3QgYWxsb3dlZCBvbiByZWFkZXIgREIgaW5zdGFuY2VzLlxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuRW5hYmxlTG9jYWxXcml0ZUZvcndhcmRpbmc/OiBib29sZWFuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBlbmdpbmUgdG8gYmUgdXNlZCBmb3IgdGhpcyBEQiBjbHVzdGVyLlxuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgIGBgYXVyb3JhLW15c3FsYGAgXG4gKiAgICsgICBgYGF1cm9yYS1wb3N0Z3Jlc3FsYGAgXG4gKiAgICsgICBgYG15c3FsYGAgXG4gKiAgICsgICBgYHBvc3RncmVzYGAgXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5FbmdpbmU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGxpZmUgY3ljbGUgdHlwZSBmb3IgdGhpcyBEQiBjbHVzdGVyLlxuICogICBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIHNldCB0byBgYG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0YGAsIHdoaWNoIGVucm9sbHMgeW91ciBEQiBjbHVzdGVyIGludG8gQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0LiBBdCB0aGUgZW5kIG9mIHN0YW5kYXJkIHN1cHBvcnQsIHlvdSBjYW4gYXZvaWQgY2hhcmdlcyBmb3IgRXh0ZW5kZWQgU3VwcG9ydCBieSBzZXR0aW5nIHRoZSB2YWx1ZSB0byBgYG9wZW4tc291cmNlLXJkcy1leHRlbmRlZC1zdXBwb3J0LWRpc2FibGVkYGAuIEluIHRoaXMgY2FzZSwgY3JlYXRpbmcgdGhlIERCIGNsdXN0ZXIgd2lsbCBmYWlsIGlmIHRoZSBEQiBtYWpvciB2ZXJzaW9uIGlzIHBhc3QgaXRzIGVuZCBvZiBzdGFuZGFyZCBzdXBwb3J0IGRhdGUuXG4gKiAgIFlvdSBjYW4gdXNlIHRoaXMgc2V0dGluZyB0byBlbnJvbGwgeW91ciBEQiBjbHVzdGVyIGludG8gQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0LiBXaXRoIFJEUyBFeHRlbmRlZCBTdXBwb3J0LCB5b3UgY2FuIHJ1biB0aGUgc2VsZWN0ZWQgbWFqb3IgZW5naW5lIHZlcnNpb24gb24geW91ciBEQiBjbHVzdGVyIHBhc3QgdGhlIGVuZCBvZiBzdGFuZGFyZCBzdXBwb3J0IGZvciB0aGF0IGVuZ2luZSB2ZXJzaW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6XG4gKiAgICsgIEFtYXpvbiBBdXJvcmEgLSBbVXNpbmcgQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvZXh0ZW5kZWQtc3VwcG9ydC5odG1sKSBpbiB0aGUgKkFtYXpvbiBBdXJvcmEgVXNlciBHdWlkZSogXG4gKiAgICsgIEFtYXpvbiBSRFMgLSBbVXNpbmcgQW1hem9uIFJEUyBFeHRlbmRlZCBTdXBwb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvZXh0ZW5kZWQtc3VwcG9ydC5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSogXG4gKiAgIFxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqICBWYWxpZCBWYWx1ZXM6IGBgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnQgfCBvcGVuLXNvdXJjZS1yZHMtZXh0ZW5kZWQtc3VwcG9ydC1kaXNhYmxlZGBgIFxuICogIERlZmF1bHQ6IGBgb3Blbi1zb3VyY2UtcmRzLWV4dGVuZGVkLXN1cHBvcnRgYFxuICovXG5FbmdpbmVMaWZlY3ljbGVTdXBwb3J0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBEQiBlbmdpbmUgbW9kZSBvZiB0aGUgREIgY2x1c3RlciwgZWl0aGVyIGBgcHJvdmlzaW9uZWRgYCBvciBgYHNlcnZlcmxlc3NgYC5cbiAqICBUaGUgYGBzZXJ2ZXJsZXNzYGAgZW5naW5lIG1vZGUgb25seSBhcHBsaWVzIGZvciBBdXJvcmEgU2VydmVybGVzcyB2MSBEQiBjbHVzdGVycy4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgREIgY2x1c3RlcnMgdXNlIHRoZSBgYHByb3Zpc2lvbmVkYGAgZW5naW5lIG1vZGUuXG4gKiAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGxpbWl0YXRpb25zIGFuZCByZXF1aXJlbWVudHMgZm9yIFNlcnZlcmxlc3MgREIgY2x1c3RlcnMsIHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKjpcbiAqICAgKyAgIFtMaW1pdGF0aW9ucyBvZiBBdXJvcmEgU2VydmVybGVzcyB2MV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLmh0bWwjYXVyb3JhLXNlcnZlcmxlc3MubGltaXRhdGlvbnMpIFxuICogICArICAgW1JlcXVpcmVtZW50cyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9hdXJvcmEtc2VydmVybGVzcy12Mi5yZXF1aXJlbWVudHMuaHRtbCkgXG4gKiAgIFxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbkVuZ2luZU1vZGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBkYXRhYmFzZSBlbmdpbmUgdG8gdXNlLlxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBBdXJvcmEgTXlTUUwgdmVyc2lvbiAyICg1LjctY29tcGF0aWJsZSkgYW5kIHZlcnNpb24gMyAoOC4wLWNvbXBhdGlibGUpLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItZW5naW5lLXZlcnNpb25zIC0tZW5naW5lIGF1cm9yYS1teXNxbCAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogIFlvdSBjYW4gc3VwcGx5IGVpdGhlciBgYDUuN2BgIG9yIGBgOC4wYGAgdG8gdXNlIHRoZSBkZWZhdWx0IGVuZ2luZSB2ZXJzaW9uIGZvciBBdXJvcmEgTXlTUUwgdmVyc2lvbiAyIG9yIHZlcnNpb24gMywgcmVzcGVjdGl2ZWx5LlxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBBdXJvcmEgUG9zdGdyZVNRTCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAqICAgYGBhd3MgcmRzIGRlc2NyaWJlLWRiLWVuZ2luZS12ZXJzaW9ucyAtLWVuZ2luZSBhdXJvcmEtcG9zdGdyZXNxbCAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogIFRvIGxpc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgZW5naW5lIHZlcnNpb25zIGZvciBSRFMgZm9yIE15U1FMLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuICogICBgYGF3cyByZHMgZGVzY3JpYmUtZGItZW5naW5lLXZlcnNpb25zIC0tZW5naW5lIG15c3FsIC0tcXVlcnkgXCJEQkVuZ2luZVZlcnNpb25zW10uRW5naW5lVmVyc2lvblwiYGAgXG4gKiAgVG8gbGlzdCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBlbmdpbmUgdmVyc2lvbnMgZm9yIFJEUyBmb3IgUG9zdGdyZVNRTCwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAqICAgYGBhd3MgcmRzIGRlc2NyaWJlLWRiLWVuZ2luZS12ZXJzaW9ucyAtLWVuZ2luZSBwb3N0Z3JlcyAtLXF1ZXJ5IFwiREJFbmdpbmVWZXJzaW9uc1tdLkVuZ2luZVZlcnNpb25cImBgIFxuICogICAqQXVyb3JhIE15U1FMKiBcbiAqICBGb3IgaW5mb3JtYXRpb24sIHNlZSBbRGF0YWJhc2UgZW5naW5lIHVwZGF0ZXMgZm9yIEFtYXpvbiBBdXJvcmEgTXlTUUxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmFNeVNRTC5VcGRhdGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICAgKkF1cm9yYSBQb3N0Z3JlU1FMKiBcbiAqICBGb3IgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEF1cm9yYSBQb3N0Z3JlU1FMIHJlbGVhc2VzIGFuZCBlbmdpbmUgdmVyc2lvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9BdXJvcmFQb3N0Z3JlU1FMLlVwZGF0ZXMuMjAxODAzMDUuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICogICAqTXlTUUwqIFxuICogIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUkRTIGZvciBNeVNRTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTXlTUUwuaHRtbCNNeVNRTC5Db25jZXB0cy5WZXJzaW9uTWdtdCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogICAqUG9zdGdyZVNRTCogXG4gKiAgRm9yIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBSRFMgZm9yIFBvc3RncmVTUUxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9DSEFQX1Bvc3RncmVTUUwuaHRtbCNQb3N0Z3JlU1FMLkNvbmNlcHRzKSBpbiB0aGUgKkFtYXpvbiBSRFMgVXNlciBHdWlkZSouXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbkVuZ2luZVZlcnNpb24/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gbWFuYWdlIHRoZSBtYXN0ZXIgdXNlciBwYXNzd29yZCB3aXRoIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIGFuZCBbUGFzc3dvcmQgbWFuYWdlbWVudCB3aXRoIFNlY3JldHMgTWFuYWdlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL3Jkcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIENhbid0IG1hbmFnZSB0aGUgbWFzdGVyIHVzZXIgcGFzc3dvcmQgd2l0aCBBV1MgU2VjcmV0cyBNYW5hZ2VyIGlmIGBgTWFzdGVyVXNlclBhc3N3b3JkYGAgaXMgc3BlY2lmaWVkLlxuICovXG5NYW5hZ2VNYXN0ZXJVc2VyUGFzc3dvcmQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgUHJvdmlzaW9uZWQgSU9QUyAoaW5wdXQvb3V0cHV0IG9wZXJhdGlvbnMgcGVyIHNlY29uZCkgdG8gYmUgaW5pdGlhbGx5IGFsbG9jYXRlZCBmb3IgZWFjaCBEQiBpbnN0YW5jZSBpbiB0aGUgTXVsdGktQVogREIgY2x1c3Rlci5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdmFsaWQgSU9QUyB2YWx1ZXMsIHNlZSBbUHJvdmlzaW9uZWQgSU9QUyBzdG9yYWdlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvQ0hBUF9TdG9yYWdlLmh0bWwjVVNFUl9QSU9QUykgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIFRoaXMgc2V0dGluZyBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBNdWx0aS1BWiBEQiBjbHVzdGVyLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBiZSBhIG11bHRpcGxlIGJldHdlZW4gLjUgYW5kIDUwIG9mIHRoZSBzdG9yYWdlIGFtb3VudCBmb3IgdGhlIERCIGNsdXN0ZXIuXG4gKi9cbklvcHM/OiBudW1iZXJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBV1MgS01TIGtleSB0aGF0IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YWJhc2UgaW5zdGFuY2VzIGluIHRoZSBEQiBjbHVzdGVyLCBzdWNoIGFzIGBgYXJuOmF3czprbXM6dXMtZWFzdC0xOjAxMjM0NTY3ODkxMDprZXkvYWJjZDEyMzQtYTEyMy00NTZhLWExMmItYTEyM2I0Y2Q1NmVmYGAuIElmIHlvdSBlbmFibGUgdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIHByb3BlcnR5IGJ1dCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHRoZSBkZWZhdWx0IEtNUyBrZXkgaXMgdXNlZC4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgeW91IG11c3Qgc2V0IHRoZSBgYFN0b3JhZ2VFbmNyeXB0ZWRgYCBwcm9wZXJ0eSB0byBgYHRydWVgYC5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIHByb3BlcnR5IHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzbmFwc2hvdCwgYW5kIGlmIHRoZSBEQiBjbHVzdGVyIGlzIGVuY3J5cHRlZCwgdGhlIHNwZWNpZmllZCBgYEttc0tleUlkYGAgcHJvcGVydHkgaXMgdXNlZC5cbiAqICBJZiB5b3UgY3JlYXRlIGEgcmVhZCByZXBsaWNhIG9mIGFuIGVuY3J5cHRlZCBEQiBjbHVzdGVyIGluIGFub3RoZXIgQVdTIFJlZ2lvbiwgbWFrZSBzdXJlIHRvIHNldCBgYEttc0tleUlkYGAgdG8gYSBLTVMga2V5IGlkZW50aWZpZXIgdGhhdCBpcyB2YWxpZCBpbiB0aGUgZGVzdGluYXRpb24gQVdTIFJlZ2lvbi4gVGhpcyBLTVMga2V5IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgcmVhZCByZXBsaWNhIGluIHRoYXQgQVdTIFJlZ2lvbi5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuS21zS2V5SWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIG1hc3RlciB1c2VyIGZvciB0aGUgREIgY2x1c3Rlci5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgLCBgYFNuYXBzaG90SWRlbnRpZmllcmBgLCBvciBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gVGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzb3VyY2UgREIgY2x1c3RlciwgdGhlIHNuYXBzaG90LCBvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIGZvciB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIsIHJlc3BlY3RpdmVseS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbk1hc3RlclVzZXJuYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXN0ZXIgcGFzc3dvcmQgZm9yIHRoZSBEQiBpbnN0YW5jZS5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgLCBgYFNuYXBzaG90SWRlbnRpZmllcmBgLCBvciBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gVGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzb3VyY2UgREIgY2x1c3RlciwgdGhlIHNuYXBzaG90LCBvciB0aGUgcHJpbWFyeSBEQiBjbHVzdGVyIGZvciB0aGUgZ2xvYmFsIGRhdGFiYXNlIGNsdXN0ZXIsIHJlc3BlY3RpdmVseS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cbk1hc3RlclVzZXJQYXNzd29yZD86IHN0cmluZ1xuTWFzdGVyVXNlclNlY3JldD86IE1hc3RlclVzZXJTZWNyZXRcbi8qKlxuICogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHBvaW50cyB3aGVuIEVuaGFuY2VkIE1vbml0b3JpbmcgbWV0cmljcyBhcmUgY29sbGVjdGVkIGZvciB0aGUgREIgY2x1c3Rlci4gVG8gdHVybiBvZmYgY29sbGVjdGluZyBFbmhhbmNlZCBNb25pdG9yaW5nIG1ldHJpY3MsIHNwZWNpZnkgYGAwYGAuXG4gKiAgSWYgYGBNb25pdG9yaW5nUm9sZUFybmBgIGlzIHNwZWNpZmllZCwgYWxzbyBzZXQgYGBNb25pdG9yaW5nSW50ZXJ2YWxgYCB0byBhIHZhbHVlIG90aGVyIHRoYW4gYGAwYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogIFZhbGlkIFZhbHVlczogYGAwIHwgMSB8IDUgfCAxMCB8IDE1IHwgMzAgfCA2MGBgIFxuICogIERlZmF1bHQ6IGBgMGBgXG4gKi9cbk1vbml0b3JpbmdJbnRlcnZhbD86IG51bWJlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBJQU0gcm9sZSB0aGF0IHBlcm1pdHMgUkRTIHRvIHNlbmQgRW5oYW5jZWQgTW9uaXRvcmluZyBtZXRyaWNzIHRvIEFtYXpvbiBDbG91ZFdhdGNoIExvZ3MuIEFuIGV4YW1wbGUgaXMgYGBhcm46YXdzOmlhbToxMjM0NTY3ODkwMTI6cm9sZS9lbWFjY2Vzc2BgLiBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYSBtb25pdG9yaW5nIHJvbGUsIHNlZSBbU2V0dGluZyB1cCBhbmQgZW5hYmxpbmcgRW5oYW5jZWQgTW9uaXRvcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfTW9uaXRvcmluZy5PUy5odG1sI1VTRVJfTW9uaXRvcmluZy5PUy5FbmFibGluZykgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqLlxuICogIElmIGBgTW9uaXRvcmluZ0ludGVydmFsYGAgaXMgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiBgYDBgYCwgc3VwcGx5IGEgYGBNb25pdG9yaW5nUm9sZUFybmBgIHZhbHVlLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuTW9uaXRvcmluZ1JvbGVBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5ldHdvcmsgdHlwZSBvZiB0aGUgREIgY2x1c3Rlci5cbiAqICBWYWxpZCB2YWx1ZXM6XG4gKiAgICsgICBgYElQVjRgYCBcbiAqICAgKyAgIGBgRFVBTGBgIFxuICogICBcbiAqICBUaGUgbmV0d29yayB0eXBlIGlzIGRldGVybWluZWQgYnkgdGhlIGBgREJTdWJuZXRHcm91cGBgIHNwZWNpZmllZCBmb3IgdGhlIERCIGNsdXN0ZXIuIEEgYGBEQlN1Ym5ldEdyb3VwYGAgY2FuIHN1cHBvcnQgb25seSB0aGUgSVB2NCBwcm90b2NvbCBvciB0aGUgSVB2NCBhbmQgSVB2NiBwcm90b2NvbHMgKGBgRFVBTGBgKS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtXb3JraW5nIHdpdGggYSBEQiBpbnN0YW5jZSBpbiBhIFZQQ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL1VTRVJfVlBDLldvcmtpbmdXaXRoUkRTSW5zdGFuY2VpbmFWUEMuaHRtbCkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbk5ldHdvcmtUeXBlPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHR1cm4gb24gUGVyZm9ybWFuY2UgSW5zaWdodHMgZm9yIHRoZSBEQiBjbHVzdGVyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIEFtYXpvbiBQZXJmb3JtYW5jZSBJbnNpZ2h0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL1VTRVJfUGVyZkluc2lnaHRzLmh0bWwpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNFbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgQVdTIEtNUyBrZXkgaWRlbnRpZmllciBmb3IgZW5jcnlwdGlvbiBvZiBQZXJmb3JtYW5jZSBJbnNpZ2h0cyBkYXRhLlxuICogIFRoZSBBV1MgS01TIGtleSBpZGVudGlmaWVyIGlzIHRoZSBrZXkgQVJOLCBrZXkgSUQsIGFsaWFzIEFSTiwgb3IgYWxpYXMgbmFtZSBmb3IgdGhlIEtNUyBrZXkuXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYGBQZXJmb3JtYW5jZUluc2lnaHRzS01TS2V5SWRgYCwgdGhlbiBBbWF6b24gUkRTIHVzZXMgeW91ciBkZWZhdWx0IEtNUyBrZXkuIFRoZXJlIGlzIGEgZGVmYXVsdCBLTVMga2V5IGZvciB5b3VyIEFXUy1hY2NvdW50LiBZb3VyIEFXUy1hY2NvdW50IGhhcyBhIGRpZmZlcmVudCBkZWZhdWx0IEtNUyBrZXkgZm9yIGVhY2ggQVdTLVJlZ2lvbi5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNLbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgdG8gcmV0YWluIFBlcmZvcm1hbmNlIEluc2lnaHRzIGRhdGEuIFdoZW4gY3JlYXRpbmcgYSBEQiBjbHVzdGVyIHdpdGhvdXQgZW5hYmxpbmcgUGVyZm9ybWFuY2UgSW5zaWdodHMsIHlvdSBjYW4ndCBzcGVjaWZ5IHRoZSBwYXJhbWV0ZXIgYGBQZXJmb3JtYW5jZUluc2lnaHRzUmV0ZW50aW9uUGVyaW9kYGAuXG4gKiAgVmFsaWQgZm9yIENsdXN0ZXIgVHlwZTogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICogIFZhbGlkIFZhbHVlczpcbiAqICAgKyAgIGBgN2BgIFxuICogICArICAgKm1vbnRoKiAqIDMxLCB3aGVyZSAqbW9udGgqIGlzIGEgbnVtYmVyIG9mIG1vbnRocyBmcm9tIDEtMjMuIEV4YW1wbGVzOiBgYDkzYGAgKDMgbW9udGhzICogMzEpLCBgYDM0MWBgICgxMSBtb250aHMgKiAzMSksIGBgNTg5YGAgKDE5IG1vbnRocyAqIDMxKVxuICogICArICAgYGA3MzFgYCBcbiAqICAgXG4gKiAgRGVmYXVsdDogYGA3YGAgZGF5c1xuICogIElmIHlvdSBzcGVjaWZ5IGEgcmV0ZW50aW9uIHBlcmlvZCB0aGF0IGlzbid0IHZhbGlkLCBzdWNoIGFzIGBgOTRgYCwgQW1hem9uIFJEUyBpc3N1ZXMgYW4gZXJyb3IuXG4gKi9cblBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogVGhlIHBvcnQgbnVtYmVyIG9uIHdoaWNoIHRoZSBEQiBpbnN0YW5jZXMgaW4gdGhlIERCIGNsdXN0ZXIgYWNjZXB0IGNvbm5lY3Rpb25zLlxuICogIERlZmF1bHQ6XG4gKiAgICsgIFdoZW4gYGBFbmdpbmVNb2RlYGAgaXMgYGBwcm92aXNpb25lZGBgLCBgYDMzMDZgYCAoZm9yIGJvdGggQXVyb3JhIE15U1FMIGFuZCBBdXJvcmEgUG9zdGdyZVNRTClcbiAqICAgKyAgV2hlbiBgYEVuZ2luZU1vZGVgYCBpcyBgYHNlcnZlcmxlc3NgYDpcbiAqICAgKyAgIGBgMzMwNmBgIHdoZW4gYGBFbmdpbmVgYCBpcyBgYGF1cm9yYWBgIG9yIGBgYXVyb3JhLW15c3FsYGAgXG4gKiAgICsgICBgYDU0MzJgYCB3aGVuIGBgRW5naW5lYGAgaXMgYGBhdXJvcmEtcG9zdGdyZXNxbGBgIFxuICogICBcbiAqICAgXG4gKiAgIFRoZSBgYE5vIGludGVycnVwdGlvbmBgIG9uIHVwZGF0ZSBiZWhhdmlvciBvbmx5IGFwcGxpZXMgdG8gREIgY2x1c3RlcnMuIElmIHlvdSBhcmUgdXBkYXRpbmcgYSBEQiBpbnN0YW5jZSwgc2VlIFtQb3J0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZHMtZGF0YWJhc2UtaW5zdGFuY2UuaHRtbCNjZm4tcmRzLWRiaW5zdGFuY2UtcG9ydCkgZm9yIHRoZSBBV1M6OlJEUzo6REJJbnN0YW5jZSByZXNvdXJjZS5cbiAqICAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblBvcnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIGRhaWx5IHRpbWUgcmFuZ2UgZHVyaW5nIHdoaWNoIGF1dG9tYXRlZCBiYWNrdXBzIGFyZSBjcmVhdGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtCYWNrdXAgV2luZG93XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhLk1hbmFnaW5nLkJhY2t1cHMuaHRtbCNBdXJvcmEuTWFuYWdpbmcuQmFja3Vwcy5CYWNrdXBXaW5kb3cpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLiogXG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgaW4gdGhlIGZvcm1hdCBgYGhoMjQ6bWktaGgyNDptaWBgLlxuICogICArICBNdXN0IGJlIGluIFVuaXZlcnNhbCBDb29yZGluYXRlZCBUaW1lIChVVEMpLlxuICogICArICBNdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBwcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93LlxuICogICArICBNdXN0IGJlIGF0IGxlYXN0IDMwIG1pbnV0ZXMuXG4gKiAgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5QcmVmZXJyZWRCYWNrdXBXaW5kb3c/OiBzdHJpbmdcbi8qKlxuICogVGhlIHdlZWtseSB0aW1lIHJhbmdlIGR1cmluZyB3aGljaCBzeXN0ZW0gbWFpbnRlbmFuY2UgY2FuIG9jY3VyLCBpbiBVbml2ZXJzYWwgQ29vcmRpbmF0ZWQgVGltZSAoVVRDKS5cbiAqICBGb3JtYXQ6IGBgZGRkOmhoMjQ6bWktZGRkOmhoMjQ6bWlgYCBcbiAqICBUaGUgZGVmYXVsdCBpcyBhIDMwLW1pbnV0ZSB3aW5kb3cgc2VsZWN0ZWQgYXQgcmFuZG9tIGZyb20gYW4gOC1ob3VyIGJsb2NrIG9mIHRpbWUgZm9yIGVhY2ggQVdTIFJlZ2lvbiwgb2NjdXJyaW5nIG9uIGEgcmFuZG9tIGRheSBvZiB0aGUgd2Vlay4gVG8gc2VlIHRoZSB0aW1lIGJsb2NrcyBhdmFpbGFibGUsIHNlZSBbTWFpbnRhaW5pbmcgYW4gQW1hem9uIEF1cm9yYSBEQiBjbHVzdGVyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9VcGdyYWRlREJJbnN0YW5jZS5NYWludGVuYW5jZS5odG1sI0FkanVzdGluZ1RoZU1haW50ZW5hbmNlV2luZG93LkF1cm9yYSkgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUuKiBcbiAqICBWYWxpZCBEYXlzOiBNb24sIFR1ZSwgV2VkLCBUaHUsIEZyaSwgU2F0LCBTdW4uXG4gKiAgQ29uc3RyYWludHM6IE1pbmltdW0gMzAtbWludXRlIHdpbmRvdy5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIERCIGNsdXN0ZXIgaXMgcHVibGljbHkgYWNjZXNzaWJsZS5cbiAqICBXaGVuIHRoZSBEQiBjbHVzdGVyIGlzIHB1YmxpY2x5IGFjY2Vzc2libGUgYW5kIHlvdSBjb25uZWN0IGZyb20gb3V0c2lkZSBvZiB0aGUgREIgY2x1c3RlcidzIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKSwgaXRzIERvbWFpbiBOYW1lIFN5c3RlbSAoRE5TKSBlbmRwb2ludCByZXNvbHZlcyB0byB0aGUgcHVibGljIElQIGFkZHJlc3MuIFdoZW4geW91IGNvbm5lY3QgZnJvbSB3aXRoaW4gdGhlIHNhbWUgVlBDIGFzIHRoZSBEQiBjbHVzdGVyLCB0aGUgZW5kcG9pbnQgcmVzb2x2ZXMgdG8gdGhlIHByaXZhdGUgSVAgYWRkcmVzcy4gQWNjZXNzIHRvIHRoZSBEQiBjbHVzdGVyIGlzIHVsdGltYXRlbHkgY29udHJvbGxlZCBieSB0aGUgc2VjdXJpdHkgZ3JvdXAgaXQgdXNlcy4gVGhhdCBwdWJsaWMgYWNjZXNzIGlzbid0IHBlcm1pdHRlZCBpZiB0aGUgc2VjdXJpdHkgZ3JvdXAgYXNzaWduZWQgdG8gdGhlIERCIGNsdXN0ZXIgZG9lc24ndCBwZXJtaXQgaXQuXG4gKiAgV2hlbiB0aGUgREIgY2x1c3RlciBpc24ndCBwdWJsaWNseSBhY2Nlc3NpYmxlLCBpdCBpcyBhbiBpbnRlcm5hbCBEQiBjbHVzdGVyIHdpdGggYSBETlMgbmFtZSB0aGF0IHJlc29sdmVzIHRvIGEgcHJpdmF0ZSBJUCBhZGRyZXNzLlxuICogIFZhbGlkIGZvciBDbHVzdGVyIFR5cGU6IE11bHRpLUFaIERCIGNsdXN0ZXJzIG9ubHlcbiAqICBEZWZhdWx0OiBUaGUgZGVmYXVsdCBiZWhhdmlvciB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYGBEQlN1Ym5ldEdyb3VwTmFtZWBgIGlzIHNwZWNpZmllZC5cbiAqICBJZiBgYERCU3VibmV0R3JvdXBOYW1lYGAgaXNuJ3Qgc3BlY2lmaWVkLCBhbmQgYGBQdWJsaWNseUFjY2Vzc2libGVgYCBpc24ndCBzcGVjaWZpZWQsIHRoZSBmb2xsb3dpbmcgYXBwbGllczpcbiAqICAgKyAgSWYgdGhlIGRlZmF1bHQgVlBDIGluIHRoZSB0YXJnZXQgUmVnaW9uIGRvZXNu4oCZdCBoYXZlIGFuIGludGVybmV0IGdhdGV3YXkgYXR0YWNoZWQgdG8gaXQsIHRoZSBEQiBjbHVzdGVyIGlzIHByaXZhdGUuXG4gKiAgICsgIElmIHRoZSBkZWZhdWx0IFZQQyBpbiB0aGUgdGFyZ2V0IFJlZ2lvbiBoYXMgYW4gaW50ZXJuZXQgZ2F0ZXdheSBhdHRhY2hlZCB0byBpdCwgdGhlIERCIGNsdXN0ZXIgaXMgcHVibGljLlxuICogICBcbiAqICBJZiBgYERCU3VibmV0R3JvdXBOYW1lYGAgaXMgc3BlY2lmaWVkLCBhbmQgYGBQdWJsaWNseUFjY2Vzc2libGVgYCBpc24ndCBzcGVjaWZpZWQsIHRoZSBmb2xsb3dpbmcgYXBwbGllczpcbiAqICAgKyAgSWYgdGhlIHN1Ym5ldHMgYXJlIHBhcnQgb2YgYSBWUEMgdGhhdCBkb2VzbuKAmXQgaGF2ZSBhbiBpbnRlcm5ldCBnYXRld2F5IGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgY2x1c3RlciBpcyBwcml2YXRlLlxuICogICArICBJZiB0aGUgc3VibmV0cyBhcmUgcGFydCBvZiBhIFZQQyB0aGF0IGhhcyBhbiBpbnRlcm5ldCBnYXRld2F5IGF0dGFjaGVkIHRvIGl0LCB0aGUgREIgY2x1c3RlciBpcyBwdWJsaWMuXG4gKi9cblB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW5cbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzb3VyY2UgREIgaW5zdGFuY2Ugb3IgREIgY2x1c3RlciBpZiB0aGlzIERCIGNsdXN0ZXIgaXMgY3JlYXRlZCBhcyBhIHJlYWQgcmVwbGljYS5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cblJlcGxpY2F0aW9uU291cmNlSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGF0ZSBhbmQgdGltZSB0byByZXN0b3JlIHRoZSBEQiBjbHVzdGVyIHRvLlxuICogIFZhbGlkIFZhbHVlczogVmFsdWUgbXVzdCBiZSBhIHRpbWUgaW4gVW5pdmVyc2FsIENvb3JkaW5hdGVkIFRpbWUgKFVUQykgZm9ybWF0XG4gKiAgQ29uc3RyYWludHM6XG4gKiAgICsgIE11c3QgYmUgYmVmb3JlIHRoZSBsYXRlc3QgcmVzdG9yYWJsZSB0aW1lIGZvciB0aGUgREIgaW5zdGFuY2VcbiAqICAgKyAgTXVzdCBiZSBzcGVjaWZpZWQgaWYgYGBVc2VMYXRlc3RSZXN0b3JhYmxlVGltZWBgIHBhcmFtZXRlciBpc24ndCBwcm92aWRlZFxuICogICArICBDYW4ndCBiZSBzcGVjaWZpZWQgaWYgdGhlIGBgVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWVgYCBwYXJhbWV0ZXIgaXMgZW5hYmxlZFxuICogICArICBDYW4ndCBiZSBzcGVjaWZpZWQgaWYgdGhlIGBgUmVzdG9yZVR5cGVgYCBwYXJhbWV0ZXIgaXMgYGBjb3B5LW9uLXdyaXRlYGAgXG4gKiAgIFxuICogIFRoaXMgcHJvcGVydHkgbXVzdCBiZSB1c2VkIHdpdGggYGBTb3VyY2VEQkNsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHkuIFRoZSByZXN1bHRpbmcgY2x1c3RlciB3aWxsIGhhdmUgdGhlIGlkZW50aWZpZXIgdGhhdCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgYGBEQmNsdXN0ZXJJZGVudGlmaWVyYGAgcHJvcGVydHkuXG4gKiAgRXhhbXBsZTogYGAyMDE1LTAzLTA3VDIzOjQ1OjAwWmBgIFxuICogIFZhbGlkIGZvcjogQXVyb3JhIERCIGNsdXN0ZXJzIGFuZCBNdWx0aS1BWiBEQiBjbHVzdGVyc1xuICovXG5SZXN0b3JlVG9UaW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc3RvcmUgdG8gYmUgcGVyZm9ybWVkLiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICogICArICAgYGBmdWxsLWNvcHlgYCAtIFRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGZ1bGwgY29weSBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIuXG4gKiAgICsgICBgYGNvcHktb24td3JpdGVgYCAtIFRoZSBuZXcgREIgY2x1c3RlciBpcyByZXN0b3JlZCBhcyBhIGNsb25lIG9mIHRoZSBzb3VyY2UgREIgY2x1c3Rlci5cbiAqICAgXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBgYFJlc3RvcmVUeXBlYGAgdmFsdWUsIHRoZW4gdGhlIG5ldyBEQiBjbHVzdGVyIGlzIHJlc3RvcmVkIGFzIGEgZnVsbCBjb3B5IG9mIHRoZSBzb3VyY2UgREIgY2x1c3Rlci5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuUmVzdG9yZVR5cGU/OiBzdHJpbmdcblNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uPzogU2VydmVybGVzc1YyU2NhbGluZ0NvbmZpZ3VyYXRpb25cblNjYWxpbmdDb25maWd1cmF0aW9uPzogU2NhbGluZ0NvbmZpZ3VyYXRpb25cbi8qKlxuICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBEQiBzbmFwc2hvdCBvciBEQiBjbHVzdGVyIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbS5cbiAqICBZb3UgY2FuIHVzZSBlaXRoZXIgdGhlIG5hbWUgb3IgdGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIHRvIHNwZWNpZnkgYSBEQiBjbHVzdGVyIHNuYXBzaG90LiBIb3dldmVyLCB5b3UgY2FuIHVzZSBvbmx5IHRoZSBBUk4gdG8gc3BlY2lmeSBhIERCIHNuYXBzaG90LlxuICogIEFmdGVyIHlvdSByZXN0b3JlIGEgREIgY2x1c3RlciB3aXRoIGEgYGBTbmFwc2hvdElkZW50aWZpZXJgYCBwcm9wZXJ0eSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgc2FtZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5IGZvciBhbnkgZnV0dXJlIHVwZGF0ZXMgdG8gdGhlIERCIGNsdXN0ZXIuIFdoZW4geW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSBmb3IgYW4gdXBkYXRlLCB0aGUgREIgY2x1c3RlciBpcyBub3QgcmVzdG9yZWQgZnJvbSB0aGUgc25hcHNob3QgYWdhaW4sIGFuZCB0aGUgZGF0YSBpbiB0aGUgZGF0YWJhc2UgaXMgbm90IGNoYW5nZWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5LCBhbiBlbXB0eSBEQiBjbHVzdGVyIGlzIGNyZWF0ZWQsIGFuZCB0aGUgb3JpZ2luYWwgREIgY2x1c3RlciBpcyBkZWxldGVkLiBJZiB5b3Ugc3BlY2lmeSBhIHByb3BlcnR5IHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNuYXBzaG90IHJlc3RvcmUgcHJvcGVydHksIGEgbmV3IERCIGNsdXN0ZXIgaXMgcmVzdG9yZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGBgU25hcHNob3RJZGVudGlmaWVyYGAgcHJvcGVydHksIGFuZCB0aGUgb3JpZ2luYWwgREIgY2x1c3RlciBpcyBkZWxldGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnR5IHRvIHJlc3RvcmUgYSBEQiBjbHVzdGVyIChhcyBvcHBvc2VkIHRvIHNwZWNpZnlpbmcgaXQgZm9yIERCIGNsdXN0ZXIgdXBkYXRlcyksIHRoZW4gZG9uJ3Qgc3BlY2lmeSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAgICsgICBgYEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYGAgXG4gKiAgICsgICBgYE1hc3RlclVzZXJuYW1lYGAgXG4gKiAgICsgICBgYE1hc3RlclVzZXJQYXNzd29yZGBgIFxuICogICArICAgYGBSZXBsaWNhdGlvblNvdXJjZUlkZW50aWZpZXJgYCBcbiAqICAgKyAgIGBgUmVzdG9yZVR5cGVgYCBcbiAqICAgKyAgIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIFxuICogICArICAgYGBTb3VyY2VSZWdpb25gYCBcbiAqICAgKyAgIGBgU3RvcmFnZUVuY3J5cHRlZGBgIChmb3IgYW4gZW5jcnlwdGVkIHNuYXBzaG90KVxuICogICArICAgYGBVc2VMYXRlc3RSZXN0b3JhYmxlVGltZWBgIFxuICogICBcbiAqICBDb25zdHJhaW50czpcbiAqICAgKyAgTXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiBhbiBleGlzdGluZyBTbmFwc2hvdC5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBXaGVuIHJlc3RvcmluZyBhIERCIGNsdXN0ZXIgdG8gYSBwb2ludCBpbiB0aW1lLCB0aGUgaWRlbnRpZmllciBvZiB0aGUgc291cmNlIERCIGNsdXN0ZXIgZnJvbSB3aGljaCB0byByZXN0b3JlLlxuICogIENvbnN0cmFpbnRzOlxuICogICArICBNdXN0IG1hdGNoIHRoZSBpZGVudGlmaWVyIG9mIGFuIGV4aXN0aW5nIERCQ2x1c3Rlci5cbiAqICAgXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKi9cblNvdXJjZURCQ2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFXUyBSZWdpb24gd2hpY2ggY29udGFpbnMgdGhlIHNvdXJjZSBEQiBjbHVzdGVyIHdoZW4gcmVwbGljYXRpbmcgYSBEQiBjbHVzdGVyLiBGb3IgZXhhbXBsZSwgYGB1cy1lYXN0LTFgYC4gXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgREIgY2x1c3RlcnMgb25seVxuICovXG5Tb3VyY2VSZWdpb24/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHksIHRoZW4geW91IG11c3QgZW5hYmxlIGVuY3J5cHRpb24uXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU291cmNlREJDbHVzdGVySWRlbnRpZmllcmBgIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc291cmNlIERCIGNsdXN0ZXIsIGFuZCBpZiB0aGUgREIgY2x1c3RlciBpcyBlbmNyeXB0ZWQsIHRoZSBzcGVjaWZpZWQgYGBLbXNLZXlJZGBgIHByb3BlcnR5IGlzIHVzZWQuXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgU25hcHNob3RJZGVudGlmaWVyYGAgYW5kIHRoZSBzcGVjaWZpZWQgc25hcHNob3QgaXMgZW5jcnlwdGVkLCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuIFRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc25hcHNob3QsIGFuZCB0aGUgc3BlY2lmaWVkIGBgS21zS2V5SWRgYCBwcm9wZXJ0eSBpcyB1c2VkLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYFNuYXBzaG90SWRlbnRpZmllcmBgIGFuZCB0aGUgc3BlY2lmaWVkIHNuYXBzaG90IGlzbid0IGVuY3J5cHRlZCwgeW91IGNhbiB1c2UgdGhpcyBwcm9wZXJ0eSB0byBzcGVjaWZ5IHRoYXQgdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLiBTcGVjaWZ5IHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHkgZm9yIHRoZSBLTVMga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4gSWYgeW91IGRvbid0IHdhbnQgdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgdG8gYmUgZW5jcnlwdGVkLCB0aGVuIGRvbid0IHNldCB0aGlzIHByb3BlcnR5IG9yIHNldCBpdCB0byBgYGZhbHNlYGAuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGJvdGggdGhlIGBgU3RvcmFnZUVuY3J5cHRlZGBgIGFuZCBgYFNuYXBzaG90SWRlbnRpZmllcmBgIHByb3BlcnRpZXMgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBgYEttc0tleUlkYGAgcHJvcGVydHksIHRoZW4gdGhlIHJlc3RvcmVkIERCIGNsdXN0ZXIgaW5oZXJpdHMgdGhlIGVuY3J5cHRpb24gc2V0dGluZ3MgZnJvbSB0aGUgREIgc25hcHNob3QgdGhhdCBwcm92aWRlLlxuICogICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuU3RvcmFnZUVuY3J5cHRlZD86IGJvb2xlYW5cblN0b3JhZ2VUaHJvdWdocHV0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBzdG9yYWdlIHR5cGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIERCIGNsdXN0ZXIuXG4gKiAgRm9yIGluZm9ybWF0aW9uIG9uIHN0b3JhZ2UgdHlwZXMgZm9yIEF1cm9yYSBEQiBjbHVzdGVycywgc2VlIFtTdG9yYWdlIGNvbmZpZ3VyYXRpb25zIGZvciBBbWF6b24gQXVyb3JhIERCIGNsdXN0ZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvQXVyb3JhLk92ZXJ2aWV3LlN0b3JhZ2VSZWxpYWJpbGl0eS5odG1sI2F1cm9yYS1zdG9yYWdlLXR5cGUpLiBGb3IgaW5mb3JtYXRpb24gb24gc3RvcmFnZSB0eXBlcyBmb3IgTXVsdGktQVogREIgY2x1c3RlcnMsIHNlZSBbU2V0dGluZ3MgZm9yIGNyZWF0aW5nIE11bHRpLUFaIERCIGNsdXN0ZXJzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9Vc2VyR3VpZGUvY3JlYXRlLW11bHRpLWF6LWRiLWNsdXN0ZXIuaHRtbCNjcmVhdGUtbXVsdGktYXotZGItY2x1c3Rlci1zZXR0aW5ncykuXG4gKiAgVGhpcyBzZXR0aW5nIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIE11bHRpLUFaIERCIGNsdXN0ZXIuXG4gKiAgV2hlbiBzcGVjaWZpZWQgZm9yIGEgTXVsdGktQVogREIgY2x1c3RlciwgYSB2YWx1ZSBmb3IgdGhlIGBgSW9wc2BgIHBhcmFtZXRlciBpcyByZXF1aXJlZC5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiAgVmFsaWQgVmFsdWVzOlxuICogICArICBBdXJvcmEgREIgY2x1c3RlcnMgLSBgYGF1cm9yYSB8IGF1cm9yYS1pb3B0MWBgIFxuICogICArICBNdWx0aS1BWiBEQiBjbHVzdGVycyAtIGBgaW8xIHwgaW8yIHwgZ3AzYGAgXG4gKiAgIFxuICogIERlZmF1bHQ6XG4gKiAgICsgIEF1cm9yYSBEQiBjbHVzdGVycyAtIGBgYXVyb3JhYGAgXG4gKiAgICsgIE11bHRpLUFaIERCIGNsdXN0ZXJzIC0gYGBpbzFgYCBcbiAqICAgXG4gKiAgIFdoZW4geW91IGNyZWF0ZSBhbiBBdXJvcmEgREIgY2x1c3RlciB3aXRoIHRoZSBzdG9yYWdlIHR5cGUgc2V0IHRvIGBgYXVyb3JhLWlvcHQxYGAsIHRoZSBzdG9yYWdlIHR5cGUgaXMgcmV0dXJuZWQgaW4gdGhlIHJlc3BvbnNlLiBUaGUgc3RvcmFnZSB0eXBlIGlzbid0IHJldHVybmVkIHdoZW4geW91IHNldCBpdCB0byBgYGF1cm9yYWBgLlxuICovXG5TdG9yYWdlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUYWdzIHRvIGFzc2lnbiB0byB0aGUgREIgY2x1c3Rlci5cbiAqICBWYWxpZCBmb3IgQ2x1c3RlciBUeXBlOiBBdXJvcmEgREIgY2x1c3RlcnMgYW5kIE11bHRpLUFaIERCIGNsdXN0ZXJzXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogQSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRvIHJlc3RvcmUgdGhlIERCIGNsdXN0ZXIgdG8gdGhlIGxhdGVzdCByZXN0b3JhYmxlIGJhY2t1cCB0aW1lLiBCeSBkZWZhdWx0LCB0aGUgREIgY2x1c3RlciBpcyBub3QgcmVzdG9yZWQgdG8gdGhlIGxhdGVzdCByZXN0b3JhYmxlIGJhY2t1cCB0aW1lLiBcbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuVXNlTGF0ZXN0UmVzdG9yYWJsZVRpbWU/OiBib29sZWFuXG4vKipcbiAqIEEgbGlzdCBvZiBFQzIgVlBDIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIERCIGNsdXN0ZXIuXG4gKiAgSWYgeW91IHBsYW4gdG8gdXBkYXRlIHRoZSByZXNvdXJjZSwgZG9uJ3Qgc3BlY2lmeSBWUEMgc2VjdXJpdHkgZ3JvdXBzIGluIGEgc2hhcmVkIFZQQy5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBEQiBjbHVzdGVycyBhbmQgTXVsdGktQVogREIgY2x1c3RlcnNcbiAqL1xuVnBjU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25uZWN0aW9uIGVuZHBvaW50IGZvciB0aGUgcHJpbWFyeSBpbnN0YW5jZSBvZiB0aGUgREIgY2x1c3Rlci5cbiAqL1xuQWRkcmVzcz86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHBvcnQgdGhhdCB0aGUgZGF0YWJhc2UgZW5naW5lIGlzIGxpc3RlbmluZyBvbi5cbiAqL1xuUG9ydD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBSZWFkRW5kcG9pbnQge1xuLyoqXG4gKiBUaGUgaG9zdCBhZGRyZXNzIG9mIHRoZSByZWFkZXIgZW5kcG9pbnQuXG4gKi9cbkFkZHJlc3M/OiBzdHJpbmdcbn1cbi8qKlxuICogRGVzY3JpYmVzIGFuIEFXUyBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgcm9sZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIERCIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgREJDbHVzdGVyUm9sZSB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBmZWF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlLiBJQU0gcm9sZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgREIgY2x1c3RlciBncmFudCBwZXJtaXNzaW9uIGZvciB0aGUgREIgY2x1c3RlciB0byBhY2Nlc3Mgb3RoZXIgQVdTIHNlcnZpY2VzIG9uIHlvdXIgYmVoYWxmLiBGb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGZlYXR1cmUgbmFtZXMsIHNlZSB0aGUgYGBTdXBwb3J0ZWRGZWF0dXJlTmFtZXNgYCBkZXNjcmlwdGlvbiBpbiBbREJFbmdpbmVWZXJzaW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RCRW5naW5lVmVyc2lvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBSRFMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbkZlYXR1cmVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIHJvbGUgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIERCIGNsdXN0ZXIuXG4gKi9cblJvbGVBcm46IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgc2VjcmV0IG1hbmFnZWQgYnkgUkRTIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHRoZSBtYXN0ZXIgdXNlciBwYXNzd29yZC5cbiAqICAgV2hlbiB5b3UgcmVzdG9yZSBhIERCIGNsdXN0ZXIgZnJvbSBhIHNuYXBzaG90LCBBbWF6b24gUkRTIGdlbmVyYXRlcyBhIG5ldyBzZWNyZXQgaW5zdGVhZCBvZiByZXVzaW5nIHRoZSBzZWNyZXQgc3BlY2lmaWVkIGluIHRoZSBgYFNlY3JldEFybmBgIHByb3BlcnR5LiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcmVzdG9yZWQgREIgY2x1c3RlciBpcyBzZWN1cmVseSBtYW5hZ2VkIHdpdGggYSBkZWRpY2F0ZWQgc2VjcmV0LiBUbyBtYWludGFpbiBjb25zaXN0ZW50IGludGVncmF0aW9uIHdpdGggeW91ciBhcHBsaWNhdGlvbiwgeW91IG1pZ2h0IG5lZWQgdG8gdXBkYXRlIHJlc291cmNlIGNvbmZpZ3VyYXRpb25zIHRvIHJlZmVyZW5jZSB0aGUgbmV3bHkgY3JlYXRlZCBzZWNyZXQuXG4gKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1Bhc3N3b3JkIG1hbmFnZW1lbnQgd2l0aCBTZWNyZXRzIE1hbmFnZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9yZHMtc2VjcmV0cy1tYW5hZ2VyLmh0bWwpIGluIHRoZSAqQW1hem9uIFJEUyBVc2VyIEd1aWRlKiBhbmQgW1Bhc3N3b3JkIG1hbmFnZW1lbnQgd2l0aCBTZWNyZXRzIE1hbmFnZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9yZHMtc2VjcmV0cy1tYW5hZ2VyLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlLipcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0ZXJVc2VyU2VjcmV0IHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzZWNyZXQuIFRoaXMgcGFyYW1ldGVyIGlzIGEgcmV0dXJuIHZhbHVlIHRoYXQgeW91IGNhbiByZXRyaWV2ZSB1c2luZyB0aGUgYGBGbjo6R2V0QXR0YGAgaW50cmluc2ljIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXR1cm4gdmFsdWVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtcmRzLWRiY2x1c3Rlci5odG1sI2F3cy1yZXNvdXJjZS1yZHMtZGJjbHVzdGVyLXJldHVybi12YWx1ZXMpLlxuICovXG5TZWNyZXRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFXUyBLTVMga2V5IGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHRvIGVuY3J5cHQgdGhlIHNlY3JldC5cbiAqL1xuS21zS2V5SWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHNjYWxpbmcgY29uZmlndXJhdGlvbiBvZiBhbiBBdXJvcmEgU2VydmVybGVzcyBWMiBEQiBjbHVzdGVyLiBcbiAqICBUaGlzIHByb3BlcnR5IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBdXJvcmEgU2VydmVybGVzcyB2Mi4gRm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxLCBVc2UgdGhlIGBgU2NhbGluZ0NvbmZpZ3VyYXRpb25gYCBwcm9wZXJ0eS5cbiAqICBWYWxpZCBmb3I6IEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIERCIGNsdXN0ZXJzIG9ubHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJsZXNzVjJTY2FsaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBBdXJvcmEgY2FwYWNpdHkgdW5pdHMgKEFDVXMpIGZvciBhIERCIGluc3RhbmNlIGluIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNsdXN0ZXIuIFlvdSBjYW4gc3BlY2lmeSBBQ1UgdmFsdWVzIGluIGhhbGYtc3RlcCBpbmNyZW1lbnRzLCBzdWNoIGFzIDgsIDguNSwgOSwgYW5kIHNvIG9uLiBGb3IgQXVyb3JhIHZlcnNpb25zIHRoYXQgc3VwcG9ydCB0aGUgQXVyb3JhIFNlcnZlcmxlc3MgdjIgYXV0by1wYXVzZSBmZWF0dXJlLCB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCB5b3UgY2FuIHVzZSBpcyAwLiBGb3IgdmVyc2lvbnMgdGhhdCBkb24ndCBzdXBwb3J0IEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGF1dG8tcGF1c2UsIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHlvdSBjYW4gdXNlIGlzIDAuNS5cbiAqL1xuTWluQ2FwYWNpdHk/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyAoQUNVcykgZm9yIGEgREIgaW5zdGFuY2UgaW4gYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2x1c3Rlci4gWW91IGNhbiBzcGVjaWZ5IEFDVSB2YWx1ZXMgaW4gaGFsZi1zdGVwIGluY3JlbWVudHMsIHN1Y2ggYXMgNDAsIDQwLjUsIDQxLCBhbmQgc28gb24uIFRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgeW91IGNhbiB1c2UgaXMgMTI4LlxuICogIFRoZSBtYXhpbXVtIGNhcGFjaXR5IG11c3QgYmUgaGlnaGVyIHRoYW4gMC41IEFDVXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Nob29zaW5nIHRoZSBtYXhpbXVtIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNhcGFjaXR5IHNldHRpbmcgZm9yIGEgY2x1c3Rlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL2F1cm9yYS1zZXJ2ZXJsZXNzLXYyLnNldHRpbmctY2FwYWNpdHkuaHRtbCNhdXJvcmEtc2VydmVybGVzcy12Mi5tYXhfY2FwYWNpdHlfY29uc2lkZXJhdGlvbnMpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqICBBdXJvcmEgYXV0b21hdGljYWxseSBzZXRzIGNlcnRhaW4gcGFyYW1ldGVycyBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgVjIgREIgaW5zdGFuY2VzIHRvIHZhbHVlcyB0aGF0IGRlcGVuZCBvbiB0aGUgbWF4aW11bSBBQ1UgdmFsdWUgaW4gdGhlIGNhcGFjaXR5IHJhbmdlLiBXaGVuIHlvdSB1cGRhdGUgdGhlIG1heGltdW0gY2FwYWNpdHkgdmFsdWUsIHRoZSBgYFBhcmFtZXRlckFwcGx5U3RhdHVzYGAgdmFsdWUgZm9yIHRoZSBEQiBpbnN0YW5jZSBjaGFuZ2VzIHRvIGBgcGVuZGluZy1yZWJvb3RgYC4gWW91IGNhbiB1cGRhdGUgdGhlIHBhcmFtZXRlciB2YWx1ZXMgYnkgcmVib290aW5nIHRoZSBEQiBpbnN0YW5jZSBhZnRlciBjaGFuZ2luZyB0aGUgY2FwYWNpdHkgcmFuZ2UuXG4gKi9cbk1heENhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYW4gQXVyb3JhIFNlcnZlcmxlc3MgdjIgREIgaW5zdGFuY2UgbXVzdCBiZSBpZGxlIGJlZm9yZSBBdXJvcmEgYXR0ZW1wdHMgdG8gYXV0b21hdGljYWxseSBwYXVzZSBpdC4gXG4gKiAgU3BlY2lmeSBhIHZhbHVlIGJldHdlZW4gMzAwIHNlY29uZHMgKGZpdmUgbWludXRlcykgYW5kIDg2LDQwMCBzZWNvbmRzIChvbmUgZGF5KS4gVGhlIGRlZmF1bHQgaXMgMzAwIHNlY29uZHMuXG4gKi9cblNlY29uZHNVbnRpbEF1dG9QYXVzZT86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgc2NhbGluZyBjb25maWd1cmF0aW9uIG9mIGFuIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIERCIGNsdXN0ZXIuXG4gKiAgVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQXVyb3JhIFNlcnZlcmxlc3MgdjEuIEZvciBBdXJvcmEgU2VydmVybGVzcyB2MiwgVXNlIHRoZSBgYFNlcnZlcmxlc3NWMlNjYWxpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgVmFsaWQgZm9yOiBBdXJvcmEgU2VydmVybGVzcyB2MSBEQiBjbHVzdGVycyBvbmx5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBvciBkaXNhbGxvdyBhdXRvbWF0aWMgcGF1c2UgZm9yIGFuIEF1cm9yYSBEQiBjbHVzdGVyIGluIGBgc2VydmVybGVzc2BgIERCIGVuZ2luZSBtb2RlLiBBIERCIGNsdXN0ZXIgY2FuIGJlIHBhdXNlZCBvbmx5IHdoZW4gaXQncyBpZGxlIChpdCBoYXMgbm8gY29ubmVjdGlvbnMpLlxuICogICBJZiBhIERCIGNsdXN0ZXIgaXMgcGF1c2VkIGZvciBtb3JlIHRoYW4gc2V2ZW4gZGF5cywgdGhlIERCIGNsdXN0ZXIgbWlnaHQgYmUgYmFja2VkIHVwIHdpdGggYSBzbmFwc2hvdC4gSW4gdGhpcyBjYXNlLCB0aGUgREIgY2x1c3RlciBpcyByZXN0b3JlZCB3aGVuIHRoZXJlIGlzIGEgcmVxdWVzdCB0byBjb25uZWN0IHRvIGl0LlxuICovXG5BdXRvUGF1c2U/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBEQiBlbmdpbmUgbW9kZS5cbiAqICBGb3IgQXVyb3JhIE15U1FMLCB2YWxpZCBjYXBhY2l0eSB2YWx1ZXMgYXJlIGBgMWBgLCBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDEyOGBgLCBhbmQgYGAyNTZgYC5cbiAqICBGb3IgQXVyb3JhIFBvc3RncmVTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAyYGAsIGBgNGBgLCBgYDhgYCwgYGAxNmBgLCBgYDMyYGAsIGBgNjRgYCwgYGAxOTJgYCwgYW5kIGBgMzg0YGAuXG4gKiAgVGhlIG1heGltdW0gY2FwYWNpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0gY2FwYWNpdHkuXG4gKi9cbk1heENhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBtaW5pbXVtIGNhcGFjaXR5IGZvciBhbiBBdXJvcmEgREIgY2x1c3RlciBpbiBgYHNlcnZlcmxlc3NgYCBEQiBlbmdpbmUgbW9kZS5cbiAqICBGb3IgQXVyb3JhIE15U1FMLCB2YWxpZCBjYXBhY2l0eSB2YWx1ZXMgYXJlIGBgMWBgLCBgYDJgYCwgYGA0YGAsIGBgOGBgLCBgYDE2YGAsIGBgMzJgYCwgYGA2NGBgLCBgYDEyOGBgLCBhbmQgYGAyNTZgYC5cbiAqICBGb3IgQXVyb3JhIFBvc3RncmVTUUwsIHZhbGlkIGNhcGFjaXR5IHZhbHVlcyBhcmUgYGAyYGAsIGBgNGBgLCBgYDhgYCwgYGAxNmBgLCBgYDMyYGAsIGBgNjRgYCwgYGAxOTJgYCwgYW5kIGBgMzg0YGAuXG4gKiAgVGhlIG1pbmltdW0gY2FwYWNpdHkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gY2FwYWNpdHkuXG4gKi9cbk1pbkNhcGFjaXR5PzogbnVtYmVyXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCBBdXJvcmEgU2VydmVybGVzcyB2MSB0cmllcyB0byBmaW5kIGEgc2NhbGluZyBwb2ludCB0byBwZXJmb3JtIHNlYW1sZXNzIHNjYWxpbmcgYmVmb3JlIGVuZm9yY2luZyB0aGUgdGltZW91dCBhY3Rpb24uIFRoZSBkZWZhdWx0IGlzIDMwMC5cbiAqICBTcGVjaWZ5IGEgdmFsdWUgYmV0d2VlbiA2MCBhbmQgNjAwIHNlY29uZHMuXG4gKi9cblNlY29uZHNCZWZvcmVUaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIFRoZSB0aW1lLCBpbiBzZWNvbmRzLCBiZWZvcmUgYW4gQXVyb3JhIERCIGNsdXN0ZXIgaW4gYGBzZXJ2ZXJsZXNzYGAgbW9kZSBpcyBwYXVzZWQuXG4gKiAgU3BlY2lmeSBhIHZhbHVlIGJldHdlZW4gMzAwIGFuZCA4Niw0MDAgc2Vjb25kcy5cbiAqL1xuU2Vjb25kc1VudGlsQXV0b1BhdXNlPzogbnVtYmVyXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQsIGVpdGhlciBgYEZvcmNlQXBwbHlDYXBhY2l0eUNoYW5nZWBgIG9yIGBgUm9sbGJhY2tDYXBhY2l0eUNoYW5nZWBgLlxuICogICBgYEZvcmNlQXBwbHlDYXBhY2l0eUNoYW5nZWBgIHNldHMgdGhlIGNhcGFjaXR5IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUgYXMgc29vbiBhcyBwb3NzaWJsZS5cbiAqICAgYGBSb2xsYmFja0NhcGFjaXR5Q2hhbmdlYGAsIHRoZSBkZWZhdWx0LCBpZ25vcmVzIHRoZSBjYXBhY2l0eSBjaGFuZ2UgaWYgYSBzY2FsaW5nIHBvaW50IGlzbid0IGZvdW5kIGluIHRoZSB0aW1lb3V0IHBlcmlvZC5cbiAqICAgSWYgeW91IHNwZWNpZnkgYGBGb3JjZUFwcGx5Q2FwYWNpdHlDaGFuZ2VgYCwgY29ubmVjdGlvbnMgdGhhdCBwcmV2ZW50IEF1cm9yYSBTZXJ2ZXJsZXNzIHYxIGZyb20gZmluZGluZyBhIHNjYWxpbmcgcG9pbnQgbWlnaHQgYmUgZHJvcHBlZC5cbiAqICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXV0b3NjYWxpbmcgZm9yIEF1cm9yYSBTZXJ2ZXJsZXNzIHYxXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvYXVyb3JhLXNlcnZlcmxlc3MuaG93LWl0LXdvcmtzLmh0bWwjYXVyb3JhLXNlcnZlcmxlc3MuaG93LWl0LXdvcmtzLmF1dG8tc2NhbGluZykgaW4gdGhlICpBbWF6b24gQXVyb3JhIFVzZXIgR3VpZGUqLlxuICovXG5UaW1lb3V0QWN0aW9uPzogc3RyaW5nXG59XG4vKipcbiAqIE1ldGFkYXRhIGFzc2lnbmVkIHRvIGFuIEFtYXpvbiBSRFMgcmVzb3VyY2UgY29uc2lzdGluZyBvZiBhIGtleS12YWx1ZSBwYWlyLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1RhZ2dpbmcgQW1hem9uIFJEUyByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L1VzZXJHdWlkZS9VU0VSX1RhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gUkRTIFVzZXIgR3VpZGUqIG9yIFtUYWdnaW5nIEFtYXpvbiBBdXJvcmEgYW5kIEFtYXpvbiBSRFMgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUkRTL2xhdGVzdC9BdXJvcmFVc2VyR3VpZGUvVVNFUl9UYWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIEF1cm9yYSBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBBIGtleSBpcyB0aGUgcmVxdWlyZWQgbmFtZSBvZiB0aGUgdGFnLiBUaGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBmcm9tIDEgdG8gMTI4IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbid0IGJlIHByZWZpeGVkIHdpdGggYGBhd3M6YGAgb3IgYGByZHM6YGAuIFRoZSBzdHJpbmcgY2FuIG9ubHkgY29udGFpbiBvbmx5IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlLXNwYWNlLCAnXycsICcuJywgJzonLCAnLycsICc9JywgJysnLCAnLScsICdAJyAoSmF2YSByZWdleDogXCJeKFtcXFxccHtMfVxcXFxwe1p9XFxcXHB7Tn1fLjovPStcXFxcLUBdKikkXCIpLlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBBIHZhbHVlIGlzIHRoZSBvcHRpb25hbCB2YWx1ZSBvZiB0aGUgdGFnLiBUaGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBmcm9tIDEgdG8gMjU2IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbid0IGJlIHByZWZpeGVkIHdpdGggYGBhd3M6YGAgb3IgYGByZHM6YGAuIFRoZSBzdHJpbmcgY2FuIG9ubHkgY29udGFpbiBvbmx5IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlLXNwYWNlLCAnXycsICcuJywgJzonLCAnLycsICc9JywgJysnLCAnLScsICdAJyAoSmF2YSByZWdleDogXCJeKFtcXFxccHtMfVxcXFxwe1p9XFxcXHB7Tn1fLjovPStcXFxcLUBdKikkXCIpLlxuICovXG5WYWx1ZT86IHN0cmluZ1xufVxuIl19
@@ -94,6 +94,10 @@ export interface _AWS_RDS_DBINSTANCE {
94
94
  * The AWS KMS key identifier for encryption of the replicated automated backups. The KMS key ID is the Amazon Resource Name (ARN) for the KMS encryption key in the destination AWS-Region, for example, ``arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE``.
95
95
  */
96
96
  AutomaticBackupReplicationKmsKeyId?: string;
97
+ /**
98
+ * The retention period for automated backups in a different AWS Region. Use this parameter to set a unique retention period that only applies to cross-Region automated backups. To enable automated backups in a different Region, specify a positive value for the ``AutomaticBackupReplicationRegion`` parameter.
99
+ * If not specified, this parameter defaults to the value of the ``BackupRetentionPeriod`` parameter. The maximum allowed value is 35.
100
+ */
97
101
  AutomaticBackupReplicationRetentionPeriod?: number;
98
102
  /**
99
103
  * The Availability Zone (AZ) where the database will be created. For information on AWS-Regions and Availability Zones, see [Regions and Availability Zones](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).
@@ -792,9 +796,6 @@ export interface DBInstanceRole {
792
796
  */
793
797
  RoleArn: string;
794
798
  }
795
- /**
796
- * The details of the DB instance's server certificate.
797
- */
798
799
  export interface CertificateDetails {
799
800
  /**
800
801
  * The CA identifier of the CA certificate used for the DB instance's server certificate.
@@ -805,10 +806,6 @@ export interface CertificateDetails {
805
806
  */
806
807
  ValidTill?: string;
807
808
  }
808
- /**
809
- * The connection endpoint for the DB instance.
810
- * The endpoint might not be shown for instances with the status of ``creating``.
811
- */
812
809
  export interface Endpoint {
813
810
  /**
814
811
  * Specifies the DNS address of the DB instance.