1 | ;
|
2 | var _a, _b, _c;
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | exports.RemoveTag = exports.Tags = exports.Tag = void 0;
|
5 | const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
6 | const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
7 | // import * as cxapi from '@aws-cdk/cx-api';
|
8 | const annotations_1 = require("./annotations");
|
9 | const aspect_1 = require("./aspect");
|
10 | const tag_manager_1 = require("./tag-manager");
|
11 | /**
|
12 | * The common functionality for Tag and Remove Tag Aspects
|
13 | */
|
14 | class TagBase {
|
15 | constructor(key, props = {}) {
|
16 | this.key = key;
|
17 | this.props = props;
|
18 | }
|
19 | visit(construct) {
|
20 | if (tag_manager_1.TagManager.isTaggable(construct)) {
|
21 | this.applyTag(construct);
|
22 | }
|
23 | }
|
24 | }
|
25 | /**
|
26 | * The Tag Aspect will handle adding a tag to this node and cascading tags to children
|
27 | */
|
28 | class Tag extends TagBase {
|
29 | constructor(key, value, props = {}) {
|
30 | super(key, props);
|
31 | this.defaultPriority = 100;
|
32 | try {
|
33 | jsiiDeprecationWarnings._aws_cdk_core_TagProps(props);
|
34 | }
|
35 | catch (error) {
|
36 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
37 | Error.captureStackTrace(error, this.constructor);
|
38 | }
|
39 | throw error;
|
40 | }
|
41 | if (value === undefined) {
|
42 | throw new Error('Tag must have a value');
|
43 | }
|
44 | this.value = value;
|
45 | }
|
46 | /**
|
47 | * DEPRECATED: add tags to the node of a construct and all its the taggable children
|
48 | *
|
49 | * @deprecated use `Tags.of(scope).add()`
|
50 | */
|
51 | static add(scope, key, value, props = {}) {
|
52 | try {
|
53 | jsiiDeprecationWarnings.print("@aws-cdk/core.Tag#add", "use `Tags.of(scope).add()`");
|
54 | jsiiDeprecationWarnings._aws_cdk_core_Construct(scope);
|
55 | jsiiDeprecationWarnings._aws_cdk_core_TagProps(props);
|
56 | }
|
57 | catch (error) {
|
58 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
59 | Error.captureStackTrace(error, this.add);
|
60 | }
|
61 | throw error;
|
62 | }
|
63 | annotations_1.Annotations.of(scope).addDeprecation('@aws-cdk/core.Tag.add(scope,k,v)', 'Use "Tags.of(scope).add(k,v)" instead');
|
64 | Tags.of(scope).add(key, value, props);
|
65 | }
|
66 | /**
|
67 | * DEPRECATED: remove tags to the node of a construct and all its the taggable children
|
68 | *
|
69 | * @deprecated use `Tags.of(scope).remove()`
|
70 | */
|
71 | static remove(scope, key, props = {}) {
|
72 | try {
|
73 | jsiiDeprecationWarnings.print("@aws-cdk/core.Tag#remove", "use `Tags.of(scope).remove()`");
|
74 | jsiiDeprecationWarnings._aws_cdk_core_Construct(scope);
|
75 | jsiiDeprecationWarnings._aws_cdk_core_TagProps(props);
|
76 | }
|
77 | catch (error) {
|
78 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
79 | Error.captureStackTrace(error, this.remove);
|
80 | }
|
81 | throw error;
|
82 | }
|
83 | annotations_1.Annotations.of(scope).addDeprecation('@aws-cdk/core.Tag.remove(scope,k,v)', 'Use "Tags.of(scope).remove(k,v)" instead');
|
84 | Tags.of(scope).remove(key, props);
|
85 | }
|
86 | applyTag(resource) {
|
87 | var _d;
|
88 | try {
|
89 | jsiiDeprecationWarnings._aws_cdk_core_ITaggable(resource);
|
90 | }
|
91 | catch (error) {
|
92 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
93 | Error.captureStackTrace(error, this.applyTag);
|
94 | }
|
95 | throw error;
|
96 | }
|
97 | if (resource.tags.applyTagAspectHere(this.props.includeResourceTypes, this.props.excludeResourceTypes)) {
|
98 | resource.tags.setTag(this.key, this.value, (_d = this.props.priority) !== null && _d !== void 0 ? _d : this.defaultPriority, this.props.applyToLaunchedInstances !== false);
|
99 | }
|
100 | }
|
101 | }
|
102 | exports.Tag = Tag;
|
103 | _a = JSII_RTTI_SYMBOL_1;
|
104 | Tag[_a] = { fqn: "@aws-cdk/core.Tag", version: "1.156.1" };
|
105 | /**
|
106 | * Manages AWS tags for all resources within a construct scope.
|
107 | */
|
108 | class Tags {
|
109 | constructor(scope) {
|
110 | this.scope = scope;
|
111 | }
|
112 | /**
|
113 | * Returns the tags API for this scope.
|
114 | * @param scope The scope
|
115 | */
|
116 | static of(scope) {
|
117 | try {
|
118 | jsiiDeprecationWarnings._aws_cdk_core_IConstruct(scope);
|
119 | }
|
120 | catch (error) {
|
121 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
122 | Error.captureStackTrace(error, this.of);
|
123 | }
|
124 | throw error;
|
125 | }
|
126 | return new Tags(scope);
|
127 | }
|
128 | /**
|
129 | * add tags to the node of a construct and all its the taggable children
|
130 | */
|
131 | add(key, value, props = {}) {
|
132 | try {
|
133 | jsiiDeprecationWarnings._aws_cdk_core_TagProps(props);
|
134 | }
|
135 | catch (error) {
|
136 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
137 | Error.captureStackTrace(error, this.add);
|
138 | }
|
139 | throw error;
|
140 | }
|
141 | aspect_1.Aspects.of(this.scope).add(new Tag(key, value, props));
|
142 | }
|
143 | /**
|
144 | * remove tags to the node of a construct and all its the taggable children
|
145 | */
|
146 | remove(key, props = {}) {
|
147 | try {
|
148 | jsiiDeprecationWarnings._aws_cdk_core_TagProps(props);
|
149 | }
|
150 | catch (error) {
|
151 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
152 | Error.captureStackTrace(error, this.remove);
|
153 | }
|
154 | throw error;
|
155 | }
|
156 | aspect_1.Aspects.of(this.scope).add(new RemoveTag(key, props));
|
157 | }
|
158 | }
|
159 | exports.Tags = Tags;
|
160 | _b = JSII_RTTI_SYMBOL_1;
|
161 | Tags[_b] = { fqn: "@aws-cdk/core.Tags", version: "1.156.1" };
|
162 | /**
|
163 | * The RemoveTag Aspect will handle removing tags from this node and children
|
164 | */
|
165 | class RemoveTag extends TagBase {
|
166 | constructor(key, props = {}) {
|
167 | super(key, props);
|
168 | this.defaultPriority = 200;
|
169 | try {
|
170 | jsiiDeprecationWarnings._aws_cdk_core_TagProps(props);
|
171 | }
|
172 | catch (error) {
|
173 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
174 | Error.captureStackTrace(error, this.constructor);
|
175 | }
|
176 | throw error;
|
177 | }
|
178 | }
|
179 | applyTag(resource) {
|
180 | var _d;
|
181 | try {
|
182 | jsiiDeprecationWarnings._aws_cdk_core_ITaggable(resource);
|
183 | }
|
184 | catch (error) {
|
185 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
186 | Error.captureStackTrace(error, this.applyTag);
|
187 | }
|
188 | throw error;
|
189 | }
|
190 | if (resource.tags.applyTagAspectHere(this.props.includeResourceTypes, this.props.excludeResourceTypes)) {
|
191 | resource.tags.removeTag(this.key, (_d = this.props.priority) !== null && _d !== void 0 ? _d : this.defaultPriority);
|
192 | }
|
193 | }
|
194 | }
|
195 | exports.RemoveTag = RemoveTag;
|
196 | _c = JSII_RTTI_SYMBOL_1;
|
197 | RemoveTag[_c] = { fqn: "@aws-cdk/core.RemoveTag", version: "1.156.1" };
|
198 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLWFzcGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRhZy1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQTRDO0FBQzVDLCtDQUE0QztBQUM1QyxxQ0FBNEM7QUFFNUMsK0NBQXNEO0FBcUR0RDs7R0FFRztBQUNILE1BQWUsT0FBTztJQVNwQixZQUFZLEdBQVcsRUFBRSxRQUFrQixFQUFFO1FBQzNDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7SUFFTSxLQUFLLENBQUMsU0FBcUI7UUFDaEMsSUFBSSx3QkFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzFCO0tBQ0Y7Q0FHRjtBQUVEOztHQUVHO0FBQ0gsTUFBYSxHQUFJLFNBQVEsT0FBTztJQTZCOUIsWUFBWSxHQUFXLEVBQUUsS0FBYSxFQUFFLFFBQWtCLEVBQUU7UUFDMUQsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUhILG9CQUFlLEdBQUcsR0FBRyxDQUFDOzs7Ozs7Ozs7O1FBSXJDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjtJQWpDRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxLQUFhLEVBQUUsUUFBa0IsRUFBRTs7Ozs7Ozs7Ozs7O1FBQ2xGLHlCQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDdkM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFnQixFQUFFLEdBQVcsRUFBRSxRQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7UUFDdEUseUJBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLHFDQUFxQyxFQUFFLDBDQUEwQyxDQUFDLENBQUM7UUFDeEgsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ25DO0lBaUJTLFFBQVEsQ0FBQyxRQUFtQjs7Ozs7Ozs7Ozs7UUFDcEMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3RHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNsQixJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxLQUFLLFFBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQyxlQUFlLEVBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEtBQUssS0FBSyxDQUM5QyxDQUFDO1NBQ0g7S0FDRjs7QUE5Q0gsa0JBK0NDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsSUFBSTtJQVNmLFlBQXFDLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7S0FBSztJQVIzRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWlCOzs7Ozs7Ozs7O1FBQ2hDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDeEI7SUFJRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLFFBQWtCLEVBQUU7Ozs7Ozs7Ozs7UUFDekQsZ0JBQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDeEQ7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFXLEVBQUUsUUFBa0IsRUFBRTs7Ozs7Ozs7OztRQUM3QyxnQkFBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3ZEOztBQXZCSCxvQkF3QkM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsT0FBTztJQUlwQyxZQUFZLEdBQVcsRUFBRSxRQUFrQixFQUFFO1FBQzNDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFISCxvQkFBZSxHQUFHLEdBQUcsQ0FBQzs7Ozs7Ozs7OztLQUl0QztJQUVTLFFBQVEsQ0FBQyxRQUFtQjs7Ozs7Ozs7Ozs7UUFDcEMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3RHLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNoRjtLQUNGOztBQVpILDhCQWFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSAnLi9hbm5vdGF0aW9ucyc7XG5pbXBvcnQgeyBJQXNwZWN0LCBBc3BlY3RzIH0gZnJvbSAnLi9hc3BlY3QnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3QtY29tcGF0JztcbmltcG9ydCB7IElUYWdnYWJsZSwgVGFnTWFuYWdlciB9IGZyb20gJy4vdGFnLW1hbmFnZXInO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgdGFnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcHMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFnIHNob3VsZCBiZSBhcHBsaWVkIHRvIGluc3RhbmNlcyBpbiBhbiBBdXRvU2NhbGluZ0dyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFwcGx5VG9MYXVuY2hlZEluc3RhbmNlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFJlc291cmNlIFR5cGVzIHRoYXQgd2lsbCBub3QgcmVjZWl2ZSB0aGlzIHRhZ1xuICAgKlxuICAgKiBBbiBlbXB0eSBhcnJheSB3aWxsIGFsbG93IHRoaXMgdGFnIHRvIGJlIGFwcGxpZWQgdG8gYWxsIHJlc291cmNlcy4gQVxuICAgKiBub24tZW1wdHkgYXJyYXkgd2lsbCBhcHBseSB0aGlzIHRhZyBvbmx5IGlmIHRoZSBSZXNvdXJjZSB0eXBlIGlzIG5vdCBpblxuICAgKiB0aGlzIGFycmF5LlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZVJlc291cmNlVHlwZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgUmVzb3VyY2UgVHlwZXMgdGhhdCB3aWxsIHJlY2VpdmUgdGhpcyB0YWdcbiAgICpcbiAgICogQW4gZW1wdHkgYXJyYXkgd2lsbCBtYXRjaCBhbnkgUmVzb3VyY2UuIEEgbm9uLWVtcHR5IGFycmF5IHdpbGwgYXBwbHkgdGhpc1xuICAgKiB0YWcgb25seSB0byBSZXNvdXJjZSB0eXBlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGlzIGFycmF5LlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVJlc291cmNlVHlwZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUHJpb3JpdHkgb2YgdGhlIHRhZyBvcGVyYXRpb25cbiAgICpcbiAgICogSGlnaGVyIG9yIGVxdWFsIHByaW9yaXR5IHRhZ3Mgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gICAqXG4gICAqIFNldHRpbmcgcHJpb3JpdHkgd2lsbCBlbmFibGUgdGhlIHVzZXIgdG8gY29udHJvbCB0YWdzIHdoZW4gdGhleSBuZWVkIHRvIG5vdFxuICAgKiBmb2xsb3cgdGhlIGRlZmF1bHQgcHJlY2VkZW5jZSBwYXR0ZXJuIG9mIGxhc3QgYXBwbGllZCBhbmQgY2xvc2VzdCB0byB0aGVcbiAgICogY29uc3RydWN0IGluIHRoZSB0cmVlLlxuICAgKlxuICAgKiBAZGVmYXVsdFxuICAgKlxuICAgKiBEZWZhdWx0IHByaW9yaXRpZXM6XG4gICAqXG4gICAqIC0gMTAwIGZvciB7QGxpbmsgU2V0VGFnfVxuICAgKiAtIDIwMCBmb3Ige0BsaW5rIFJlbW92ZVRhZ31cbiAgICogLSA1MCBmb3IgdGFncyBhZGRlZCBkaXJlY3RseSB0byBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZXNcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IHByaW9yaXR5PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgVGFnIGFuZCBSZW1vdmUgVGFnIEFzcGVjdHNcbiAqL1xuYWJzdHJhY3QgY2xhc3MgVGFnQmFzZSBpbXBsZW1lbnRzIElBc3BlY3Qge1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIGtleSBmb3IgdGhlIHRhZ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwcm9wczogVGFnUHJvcHM7XG5cbiAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIHByb3BzOiBUYWdQcm9wcyA9IHt9KSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG5cbiAgcHVibGljIHZpc2l0KGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChUYWdNYW5hZ2VyLmlzVGFnZ2FibGUoY29uc3RydWN0KSkge1xuICAgICAgdGhpcy5hcHBseVRhZyhjb25zdHJ1Y3QpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhcHBseVRhZyhyZXNvdXJjZTogSVRhZ2dhYmxlKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgVGFnIEFzcGVjdCB3aWxsIGhhbmRsZSBhZGRpbmcgYSB0YWcgdG8gdGhpcyBub2RlIGFuZCBjYXNjYWRpbmcgdGFncyB0byBjaGlsZHJlblxuICovXG5leHBvcnQgY2xhc3MgVGFnIGV4dGVuZHMgVGFnQmFzZSB7XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURUQ6IGFkZCB0YWdzIHRvIHRoZSBub2RlIG9mIGEgY29uc3RydWN0IGFuZCBhbGwgaXRzIHRoZSB0YWdnYWJsZSBjaGlsZHJlblxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYFRhZ3Mub2Yoc2NvcGUpLmFkZCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhZGQoc2NvcGU6IENvbnN0cnVjdCwga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByb3BzOiBUYWdQcm9wcyA9IHt9KSB7XG4gICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZERlcHJlY2F0aW9uKCdAYXdzLWNkay9jb3JlLlRhZy5hZGQoc2NvcGUsayx2KScsICdVc2UgXCJUYWdzLm9mKHNjb3BlKS5hZGQoayx2KVwiIGluc3RlYWQnKTtcbiAgICBUYWdzLm9mKHNjb3BlKS5hZGQoa2V5LCB2YWx1ZSwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURUQ6IHJlbW92ZSB0YWdzIHRvIHRoZSBub2RlIG9mIGEgY29uc3RydWN0IGFuZCBhbGwgaXRzIHRoZSB0YWdnYWJsZSBjaGlsZHJlblxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYFRhZ3Mub2Yoc2NvcGUpLnJlbW92ZSgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZW1vdmUoc2NvcGU6IENvbnN0cnVjdCwga2V5OiBzdHJpbmcsIHByb3BzOiBUYWdQcm9wcyA9IHt9KSB7XG4gICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZERlcHJlY2F0aW9uKCdAYXdzLWNkay9jb3JlLlRhZy5yZW1vdmUoc2NvcGUsayx2KScsICdVc2UgXCJUYWdzLm9mKHNjb3BlKS5yZW1vdmUoayx2KVwiIGluc3RlYWQnKTtcbiAgICBUYWdzLm9mKHNjb3BlKS5yZW1vdmUoa2V5LCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgdGFnXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQcmlvcml0eSA9IDEwMDtcblxuICBjb25zdHJ1Y3RvcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgcHJvcHM6IFRhZ1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihrZXksIHByb3BzKTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUYWcgbXVzdCBoYXZlIGEgdmFsdWUnKTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFwcGx5VGFnKHJlc291cmNlOiBJVGFnZ2FibGUpIHtcbiAgICBpZiAocmVzb3VyY2UudGFncy5hcHBseVRhZ0FzcGVjdEhlcmUodGhpcy5wcm9wcy5pbmNsdWRlUmVzb3VyY2VUeXBlcywgdGhpcy5wcm9wcy5leGNsdWRlUmVzb3VyY2VUeXBlcykpIHtcbiAgICAgIHJlc291cmNlLnRhZ3Muc2V0VGFnKFxuICAgICAgICB0aGlzLmtleSxcbiAgICAgICAgdGhpcy52YWx1ZSxcbiAgICAgICAgdGhpcy5wcm9wcy5wcmlvcml0eSA/PyB0aGlzLmRlZmF1bHRQcmlvcml0eSxcbiAgICAgICAgdGhpcy5wcm9wcy5hcHBseVRvTGF1bmNoZWRJbnN0YW5jZXMgIT09IGZhbHNlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNYW5hZ2VzIEFXUyB0YWdzIGZvciBhbGwgcmVzb3VyY2VzIHdpdGhpbiBhIGNvbnN0cnVjdCBzY29wZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhZ3Mge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFncyBBUEkgZm9yIHRoaXMgc2NvcGUuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2Yoc2NvcGU6IElDb25zdHJ1Y3QpOiBUYWdzIHtcbiAgICByZXR1cm4gbmV3IFRhZ3Moc2NvcGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNjb3BlOiBJQ29uc3RydWN0KSB7IH1cblxuICAvKipcbiAgICogYWRkIHRhZ3MgdG8gdGhlIG5vZGUgb2YgYSBjb25zdHJ1Y3QgYW5kIGFsbCBpdHMgdGhlIHRhZ2dhYmxlIGNoaWxkcmVuXG4gICAqL1xuICBwdWJsaWMgYWRkKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBwcm9wczogVGFnUHJvcHMgPSB7fSkge1xuICAgIEFzcGVjdHMub2YodGhpcy5zY29wZSkuYWRkKG5ldyBUYWcoa2V5LCB2YWx1ZSwgcHJvcHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdGFncyB0byB0aGUgbm9kZSBvZiBhIGNvbnN0cnVjdCBhbmQgYWxsIGl0cyB0aGUgdGFnZ2FibGUgY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcsIHByb3BzOiBUYWdQcm9wcyA9IHt9KSB7XG4gICAgQXNwZWN0cy5vZih0aGlzLnNjb3BlKS5hZGQobmV3IFJlbW92ZVRhZyhrZXksIHByb3BzKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgUmVtb3ZlVGFnIEFzcGVjdCB3aWxsIGhhbmRsZSByZW1vdmluZyB0YWdzIGZyb20gdGhpcyBub2RlIGFuZCBjaGlsZHJlblxuICovXG5leHBvcnQgY2xhc3MgUmVtb3ZlVGFnIGV4dGVuZHMgVGFnQmFzZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UHJpb3JpdHkgPSAyMDA7XG5cbiAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIHByb3BzOiBUYWdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoa2V5LCBwcm9wcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwbHlUYWcocmVzb3VyY2U6IElUYWdnYWJsZSk6IHZvaWQge1xuICAgIGlmIChyZXNvdXJjZS50YWdzLmFwcGx5VGFnQXNwZWN0SGVyZSh0aGlzLnByb3BzLmluY2x1ZGVSZXNvdXJjZVR5cGVzLCB0aGlzLnByb3BzLmV4Y2x1ZGVSZXNvdXJjZVR5cGVzKSkge1xuICAgICAgcmVzb3VyY2UudGFncy5yZW1vdmVUYWcodGhpcy5rZXksIHRoaXMucHJvcHMucHJpb3JpdHkgPz8gdGhpcy5kZWZhdWx0UHJpb3JpdHkpO1xuICAgIH1cbiAgfVxufVxuIl19 |
\ | No newline at end of file |