jekyll-theme-nocc 2.0.0
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.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +92 -0
- data/_config.yml +102 -0
- data/_includes/carousel.html +39 -0
- data/_includes/code_block.html +3 -0
- data/_includes/disqus_comments.html +16 -0
- data/_includes/features.html +18 -0
- data/_includes/footer.html +55 -0
- data/_includes/google_analytics.html +8 -0
- data/_includes/head.html +33 -0
- data/_includes/image.html +20 -0
- data/_includes/navbar.html +48 -0
- data/_includes/read_time.html +3 -0
- data/_includes/scripts.html +88 -0
- data/_layouts/carousel.html +39 -0
- data/_layouts/default.html +17 -0
- data/_layouts/home.html +92 -0
- data/_layouts/images_gallery.html +63 -0
- data/_layouts/page.html +35 -0
- data/_layouts/post.html +62 -0
- data/_layouts/posts_index.html +33 -0
- data/_layouts/tag.html +35 -0
- data/_layouts/tags_index.html +79 -0
- data/_sass/_custom.scss +144 -0
- data/assets/css/styles.scss +3 -0
- data/assets/images/404.webp +0 -0
- data/assets/images/503.webp +0 -0
- data/assets/images/bg-about.webp +0 -0
- data/assets/images/bg-contact.webp +0 -0
- data/assets/images/bg-gallery.webp +0 -0
- data/assets/images/bg-index-2.webp +0 -0
- data/assets/images/bg-index-3.webp +0 -0
- data/assets/images/bg-index.webp +0 -0
- data/assets/images/bg-post.webp +0 -0
- data/assets/images/favicon.ico +0 -0
- data/assets/images/favicon.png +0 -0
- data/assets/images/favicon.svg +36 -0
- data/assets/images/gallery/Futuristic-drama.webp +0 -0
- data/assets/images/gallery/Random-Engineers.webp +0 -0
- data/assets/images/gallery/Weird-trio-with-mousehand.webp +0 -0
- data/assets/images/icon-192.png +0 -0
- data/assets/images/icon-512.png +0 -0
- data/assets/images/jekyll-logo.svg +129 -0
- data/assets/images/nocc-showcase.webp +0 -0
- data/assets/images/nocc-theme-showroom.png +0 -0
- data/assets/images/nocc-webshot.webp +0 -0
- data/assets/images/nocc_icon.svg +91 -0
- data/assets/images/nocc_package_logo.png +0 -0
- data/assets/images/npm-logo.svg +10 -0
- data/assets/vendor/nocc-bootstrap-theme/AUTHORS.md +3 -0
- data/assets/vendor/nocc-bootstrap-theme/CODE_OF_CONDUCT.md +3 -0
- data/assets/vendor/nocc-bootstrap-theme/CONTRIBUTING.md +5 -0
- data/assets/vendor/nocc-bootstrap-theme/LICENSE +21 -0
- data/assets/vendor/nocc-bootstrap-theme/README.md +209 -0
- data/assets/vendor/nocc-bootstrap-theme/css/nocc-theme.css +10442 -0
- data/assets/vendor/nocc-bootstrap-theme/css/nocc-theme.min.css +5 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-600.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-600italic.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-italic.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/lora-webfont/lora-v35-latin-regular.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/oxygen-webfont/oxygen-mono-v14-latin-regular.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-300.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-300italic.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-700.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-700italic.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-900.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-900italic.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-italic.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/fonts/roboto-webfont/roboto-v30-latin-regular.woff2 +0 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/bootstrap.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/clipboard.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/currency-bitcoin.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/download.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/envelope-at-fill.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/filetype-svg.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/gift-fill.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/github.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/google.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/link-45deg.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/linkedin.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/magic.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/moon.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/speedometer.svg +4 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/sun.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/icons/1.11.0/twitter-x.svg +3 -0
- data/assets/vendor/nocc-bootstrap-theme/images/bg-about.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/bg-gallery.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/bg-index-2.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/bg-index-3.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/bg-index.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/bg-post.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/android-chrome-192x192.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/android-chrome-512x512.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/apple-touch-icon.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon-16x16.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon-32x32.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.ico +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/favicon.svg +54 -0
- data/assets/vendor/nocc-bootstrap-theme/images/favicon_io/site.webmanifest +1 -0
- data/assets/vendor/nocc-bootstrap-theme/images/gallery/Futuristic-drama.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/gallery/Random-Engineers.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/gallery/Weird-trio-with-mousehand.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/kofi_s_logo_nolabel.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-showcase.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-theme-showroom.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-theme-webshot.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-theme-webshot.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc-webshot.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc_home_image.webp +0 -0
- data/assets/vendor/nocc-bootstrap-theme/images/nocc/nocc_logo.png +0 -0
- data/assets/vendor/nocc-bootstrap-theme/js/bootstrap/5.3.3/bootstrap.bundle.min.js +7 -0
- data/assets/vendor/nocc-bootstrap-theme/js/bootstrap/5.3.3/bootstrap.bundle.min.js.map +1 -0
- data/assets/vendor/nocc-bootstrap-theme/js/clipboardjs/clipboard.min.js +7 -0
- data/assets/vendor/nocc-bootstrap-theme/js/copy-clipboard.js +18 -0
- data/assets/vendor/nocc-bootstrap-theme/js/jq-bootstrap-validation.js +475 -0
- data/assets/vendor/nocc-bootstrap-theme/js/jq-bootstrap-validation.min.js +1 -0
- data/assets/vendor/nocc-bootstrap-theme/js/jquery/3.7.1/jquery.min.js +2 -0
- data/assets/vendor/nocc-bootstrap-theme/js/jquery/3.7.1/jquery.min.map +1 -0
- data/assets/vendor/nocc-bootstrap-theme/js/jquery/jqcloud/2.0.3/jqcloud.min.js +8 -0
- data/assets/vendor/nocc-bootstrap-theme/js/ko-fi/widget_2.min.js +1 -0
- data/assets/vendor/nocc-bootstrap-theme/js/theme-toggler.js +68 -0
- data/assets/vendor/nocc-bootstrap-theme/js/theme-toggler.min.js +1 -0
- data/assets/vendor/nocc-bootstrap-theme/manifest.json +1 -0
- data/assets/vendor/nocc-bootstrap-theme/package.json +78 -0
- metadata +284 -0
@@ -0,0 +1,475 @@
|
|
1
|
+
!(function (a) {
|
2
|
+
var t = [],
|
3
|
+
e = {
|
4
|
+
options: {
|
5
|
+
prependExistingHelpBlock: false,
|
6
|
+
sniffHtml: true,
|
7
|
+
preventSubmit: true,
|
8
|
+
submitError: false,
|
9
|
+
submitSuccess: false,
|
10
|
+
semanticallyStrict: false,
|
11
|
+
autoAdd: { helpBlocks: true },
|
12
|
+
filter: function () {
|
13
|
+
return true;
|
14
|
+
},
|
15
|
+
},
|
16
|
+
methods: {
|
17
|
+
init: function (o) {
|
18
|
+
var r = a.extend(true, {}, e);
|
19
|
+
r.options = a.extend(true, r.options, o);
|
20
|
+
var l = a.unique(
|
21
|
+
this.map(function () {
|
22
|
+
return a(this).parents("form")[0];
|
23
|
+
}).toArray()
|
24
|
+
);
|
25
|
+
return (
|
26
|
+
a(l).bind("submit", function (t) {
|
27
|
+
var e = a(this),
|
28
|
+
i = 0,
|
29
|
+
n = e.find("input,textarea,select").not("[type=submit],[type=image]").filter(r.options.filter);
|
30
|
+
n.trigger("submit.validation").trigger("validationLostFocus.validation"),
|
31
|
+
n.each(function (t, e) {
|
32
|
+
var n = a(e).parents(".form-group").first();
|
33
|
+
n.hasClass("warning") && (n.removeClass("warning").addClass("error"), i++);
|
34
|
+
}),
|
35
|
+
n.trigger("validationLostFocus.validation"),
|
36
|
+
i
|
37
|
+
? (r.options.preventSubmit && t.preventDefault(), e.addClass("error"), a.isFunction(r.options.submitError) && r.options.submitError(e, t, n.jqBootstrapValidation("collectErrors", true)))
|
38
|
+
: (e.removeClass("error"), a.isFunction(r.options.submitSuccess) && r.options.submitSuccess(e, t));
|
39
|
+
}),
|
40
|
+
this.each(function () {
|
41
|
+
var e = a(this),
|
42
|
+
o = e.parents(".form-group").first(),
|
43
|
+
l = o.find(".help-block").first(),
|
44
|
+
d = e.parents("form").first(),
|
45
|
+
s = [];
|
46
|
+
if ((!l.length && r.options.autoAdd && r.options.autoAdd.helpBlocks && ((l = a('<div class="help-block" />')), o.find(".controls").append(l), t.push(l[0])), r.options.sniffHtml)) {
|
47
|
+
var c = "";
|
48
|
+
if (
|
49
|
+
(undefined !== e.attr("pattern") &&
|
50
|
+
((c = "Not in the expected format<!-- data-validation-pattern-message to override -->"),
|
51
|
+
e.data("validationPatternMessage") && (c = e.data("validationPatternMessage")),
|
52
|
+
e.data("validationPatternMessage", c),
|
53
|
+
e.data("validationPatternRegex", e.attr("pattern"))),
|
54
|
+
undefined !== e.attr("max") || undefined !== e.attr("aria-valuemax"))
|
55
|
+
) {
|
56
|
+
var v = undefined !== e.attr("max") ? e.attr("max") : e.attr("aria-valuemax");
|
57
|
+
(c = "Too high: Maximum of '" + v + "'<!-- data-validation-max-message to override -->"),
|
58
|
+
e.data("validationMaxMessage") && (c = e.data("validationMaxMessage")),
|
59
|
+
e.data("validationMaxMessage", c),
|
60
|
+
e.data("validationMaxMax", v);
|
61
|
+
}
|
62
|
+
if (undefined !== e.attr("min") || undefined !== e.attr("aria-valuemin")) {
|
63
|
+
var m = undefined !== e.attr("min") ? e.attr("min") : e.attr("aria-valuemin");
|
64
|
+
(c = "Too low: Minimum of '" + m + "'<!-- data-validation-min-message to override -->"),
|
65
|
+
e.data("validationMinMessage") && (c = e.data("validationMinMessage")),
|
66
|
+
e.data("validationMinMessage", c),
|
67
|
+
e.data("validationMinMin", m);
|
68
|
+
}
|
69
|
+
undefined !== e.attr("maxlength") &&
|
70
|
+
((c = "Too long: Maximum of '" + e.attr("maxlength") + "' characters<!-- data-validation-maxlength-message to override -->"),
|
71
|
+
e.data("validationMaxlengthMessage") && (c = e.data("validationMaxlengthMessage")),
|
72
|
+
e.data("validationMaxlengthMessage", c),
|
73
|
+
e.data("validationMaxlengthMaxlength", e.attr("maxlength"))),
|
74
|
+
undefined !== e.attr("minlength") &&
|
75
|
+
((c = "Too short: Minimum of '" + e.attr("minlength") + "' characters<!-- data-validation-minlength-message to override -->"),
|
76
|
+
e.data("validationMinlengthMessage") && (c = e.data("validationMinlengthMessage")),
|
77
|
+
e.data("validationMinlengthMessage", c),
|
78
|
+
e.data("validationMinlengthMinlength", e.attr("minlength"))),
|
79
|
+
(undefined !== e.attr("required") || undefined !== e.attr("aria-required")) &&
|
80
|
+
((c = r.builtInValidators.required.message), e.data("validationRequiredMessage") && (c = e.data("validationRequiredMessage")), e.data("validationRequiredMessage", c)),
|
81
|
+
undefined !== e.attr("type") &&
|
82
|
+
"number" === e.attr("type").toLowerCase() &&
|
83
|
+
((c = r.builtInValidators.number.message), e.data("validationNumberMessage") && (c = e.data("validationNumberMessage")), e.data("validationNumberMessage", c)),
|
84
|
+
undefined !== e.attr("type") &&
|
85
|
+
"email" === e.attr("type").toLowerCase() &&
|
86
|
+
((c = "Not a valid email address<!-- data-validator-validemail-message to override -->"),
|
87
|
+
e.data("validationValidemailMessage") ? (c = e.data("validationValidemailMessage")) : e.data("validationEmailMessage") && (c = e.data("validationEmailMessage")),
|
88
|
+
e.data("validationValidemailMessage", c)),
|
89
|
+
undefined !== e.attr("minchecked") &&
|
90
|
+
((c = "Not enough options checked; Minimum of '" + e.attr("minchecked") + "' required<!-- data-validation-minchecked-message to override -->"),
|
91
|
+
e.data("validationMincheckedMessage") && (c = e.data("validationMincheckedMessage")),
|
92
|
+
e.data("validationMincheckedMessage", c),
|
93
|
+
e.data("validationMincheckedMinchecked", e.attr("minchecked"))),
|
94
|
+
undefined !== e.attr("maxchecked") &&
|
95
|
+
((c = "Too many options checked; Maximum of '" + e.attr("maxchecked") + "' required<!-- data-validation-maxchecked-message to override -->"),
|
96
|
+
e.data("validationMaxcheckedMessage") && (c = e.data("validationMaxcheckedMessage")),
|
97
|
+
e.data("validationMaxcheckedMessage", c),
|
98
|
+
e.data("validationMaxcheckedMaxchecked", e.attr("maxchecked")));
|
99
|
+
}
|
100
|
+
undefined !== e.data("validation") && (s = e.data("validation").split(",")),
|
101
|
+
a.each(e.data(), function (a, t) {
|
102
|
+
var e = a.replace(/([A-Z])/g, ",$1").split(",");
|
103
|
+
"validation" === e[0] && e[1] && s.push(e[1]);
|
104
|
+
});
|
105
|
+
var u = s,
|
106
|
+
g = [];
|
107
|
+
do
|
108
|
+
a.each(s, function (a, t) {
|
109
|
+
s[a] = i(t);
|
110
|
+
}),
|
111
|
+
(s = a.unique(s)),
|
112
|
+
(g = []),
|
113
|
+
a.each(u, function (t, n) {
|
114
|
+
if (undefined !== e.data("validation" + n + "Shortcut"))
|
115
|
+
a.each(e.data("validation" + n + "Shortcut").split(","), function (a, t) {
|
116
|
+
g.push(t);
|
117
|
+
});
|
118
|
+
else if (r.builtInValidators[n.toLowerCase()]) {
|
119
|
+
var o = r.builtInValidators[n.toLowerCase()];
|
120
|
+
"shortcut" === o.type.toLowerCase() &&
|
121
|
+
a.each(o.shortcut.split(","), function (a, t) {
|
122
|
+
(t = i(t)), g.push(t), s.push(t);
|
123
|
+
});
|
124
|
+
}
|
125
|
+
}),
|
126
|
+
(u = g);
|
127
|
+
while (u.length > 0);
|
128
|
+
var h = {};
|
129
|
+
a.each(s, function (t, n) {
|
130
|
+
var o = e.data("validation" + n + "Message"),
|
131
|
+
l = undefined !== o,
|
132
|
+
d = false;
|
133
|
+
if (
|
134
|
+
((o = o || "'" + n + "' validation failed <!-- Add attribute 'data-validation-" + n.toLowerCase() + "-message' to input to change this message -->"),
|
135
|
+
a.each(r.validatorTypes, function (t, r) {
|
136
|
+
undefined === h[t] && (h[t] = []), d || undefined === e.data("validation" + n + i(r.name)) || (h[t].push(a.extend(true, { name: i(r.name), message: o }, r.init(e, n))), (d = true));
|
137
|
+
}),
|
138
|
+
!d && r.builtInValidators[n.toLowerCase()])
|
139
|
+
) {
|
140
|
+
var s = a.extend(true, {}, r.builtInValidators[n.toLowerCase()]);
|
141
|
+
l && (s.message = o);
|
142
|
+
var c = s.type.toLowerCase();
|
143
|
+
"shortcut" === c
|
144
|
+
? (d = true)
|
145
|
+
: a.each(r.validatorTypes, function (t, o) {
|
146
|
+
undefined === h[t] && (h[t] = []), d || c !== t.toLowerCase() || (e.data("validation" + n + i(o.name), s[o.name.toLowerCase()]), h[c].push(a.extend(s, o.init(e, n))), (d = true));
|
147
|
+
});
|
148
|
+
}
|
149
|
+
d || a.error("Cannot find validation info for '" + n + "'");
|
150
|
+
}),
|
151
|
+
l.data("original-contents", l.data("original-contents") ? l.data("original-contents") : l.html()),
|
152
|
+
l.data("original-role", l.data("original-role") ? l.data("original-role") : l.attr("role")),
|
153
|
+
o.data("original-classes", o.data("original-clases") ? o.data("original-classes") : o.attr("class")),
|
154
|
+
e.data("original-aria-invalid", e.data("original-aria-invalid") ? e.data("original-aria-invalid") : e.attr("aria-invalid")),
|
155
|
+
e.bind("validation.validation", function (t, i) {
|
156
|
+
var o = n(e),
|
157
|
+
l = [];
|
158
|
+
return (
|
159
|
+
a.each(h, function (t, n) {
|
160
|
+
(o || (i && i.includeEmpty) || (r.validatorTypes[t].blockSubmit && i && i.submitting)) &&
|
161
|
+
a.each(n, function (a, i) {
|
162
|
+
r.validatorTypes[t].validate(e, o, i) && l.push(i.message);
|
163
|
+
});
|
164
|
+
}),
|
165
|
+
l
|
166
|
+
);
|
167
|
+
}),
|
168
|
+
e.bind("getValidators.validation", function () {
|
169
|
+
return h;
|
170
|
+
}),
|
171
|
+
e.bind("submit.validation", function () {
|
172
|
+
return e.triggerHandler("change.validation", { submitting: true });
|
173
|
+
}),
|
174
|
+
e.bind("keyup.validation focus.validation blur.validation click.validation keydown.validation keypress.validation change.validation", function (t, i) {
|
175
|
+
var s = n(e),
|
176
|
+
c = [];
|
177
|
+
o.find("input,textarea,select").each(function (t, n) {
|
178
|
+
var o = c.length;
|
179
|
+
if (
|
180
|
+
(a.each(a(n).triggerHandler("validation.validation", i), function (a, t) {
|
181
|
+
c.push(t);
|
182
|
+
}),
|
183
|
+
c.length > o)
|
184
|
+
)
|
185
|
+
a(n).attr("aria-invalid", "true");
|
186
|
+
else {
|
187
|
+
var r = e.data("original-aria-invalid");
|
188
|
+
a(n).attr("aria-invalid", undefined !== r && r);
|
189
|
+
}
|
190
|
+
}),
|
191
|
+
d
|
192
|
+
.find("input,select,textarea")
|
193
|
+
.not(e)
|
194
|
+
.not('[name="' + e.attr("name") + '"]')
|
195
|
+
.trigger("validationLostFocus.validation"),
|
196
|
+
(c = a.unique(c.sort())).length
|
197
|
+
? (o.removeClass("success error").addClass("warning"),
|
198
|
+
r.options.semanticallyStrict && 1 === c.length
|
199
|
+
? l.html(c[0] + (r.options.prependExistingHelpBlock ? l.data("original-contents") : ""))
|
200
|
+
: l.html('<ul role="alert"><li>' + c.join("</li><li>") + "</li></ul>" + (r.options.prependExistingHelpBlock ? l.data("original-contents") : "")))
|
201
|
+
: (o.removeClass("warning error success"), s.length > 0 && o.addClass("success"), l.html(l.data("original-contents"))),
|
202
|
+
"blur" === t.type && o.removeClass("success");
|
203
|
+
}),
|
204
|
+
e.bind("validationLostFocus.validation", function () {
|
205
|
+
o.removeClass("success");
|
206
|
+
});
|
207
|
+
})
|
208
|
+
);
|
209
|
+
},
|
210
|
+
destroy: function () {
|
211
|
+
return this.each(function () {
|
212
|
+
var e = a(this),
|
213
|
+
i = e.parents(".form-group").first(),
|
214
|
+
n = i.find(".help-block").first();
|
215
|
+
e.unbind(".validation"),
|
216
|
+
n.html(n.data("original-contents")),
|
217
|
+
i.attr("class", i.data("original-classes")),
|
218
|
+
e.attr("aria-invalid", e.data("original-aria-invalid")),
|
219
|
+
n.attr("role", e.data("original-role")),
|
220
|
+
t.indexOf(n[0]) > -1 && n.remove();
|
221
|
+
});
|
222
|
+
},
|
223
|
+
collectErrors: function (t) {
|
224
|
+
var e = {};
|
225
|
+
return (
|
226
|
+
this.each(function (t, i) {
|
227
|
+
var n = a(i),
|
228
|
+
o = n.attr("name"),
|
229
|
+
r = n.triggerHandler("validation.validation", { includeEmpty: true });
|
230
|
+
e[o] = a.extend(true, r, e[o]);
|
231
|
+
}),
|
232
|
+
a.each(e, function (a, t) {
|
233
|
+
0 === t.length && delete e[a];
|
234
|
+
}),
|
235
|
+
e
|
236
|
+
);
|
237
|
+
},
|
238
|
+
hasErrors: function () {
|
239
|
+
var t = [];
|
240
|
+
return (
|
241
|
+
this.each(function (e, i) {
|
242
|
+
t = t.concat(a(i).triggerHandler("getValidators.validation") ? a(i).triggerHandler("validation.validation", { submitting: true }) : []);
|
243
|
+
}),
|
244
|
+
t.length > 0
|
245
|
+
);
|
246
|
+
},
|
247
|
+
override: function (t) {
|
248
|
+
e = a.extend(true, e, t);
|
249
|
+
},
|
250
|
+
},
|
251
|
+
validatorTypes: {
|
252
|
+
callback: {
|
253
|
+
name: "callback",
|
254
|
+
init: function (a, t) {
|
255
|
+
return { validatorName: t, callback: a.data("validation" + t + "Callback"), lastValue: a.val(), lastValid: true, lastFinished: true };
|
256
|
+
},
|
257
|
+
validate: function (a, t, e) {
|
258
|
+
if (e.lastValue === t && e.lastFinished) return !e.lastValid;
|
259
|
+
// deepcode ignore OperatorPrecedence: <please specify a reason of ignoring this>
|
260
|
+
if (true === e.lastFinished) {
|
261
|
+
(e.lastValue = t), (e.lastValid = true), (e.lastFinished = false);
|
262
|
+
var i = e,
|
263
|
+
n = a;
|
264
|
+
!(function a(t, e) {
|
265
|
+
for (var i = Array.prototype.slice.call(arguments).splice(2), n = t.split("."), o = n.pop(), r = 0; r < n.length; r++) e = e[n[r]];
|
266
|
+
return e[o].apply(this, i);
|
267
|
+
})(e.callback, window, a, t, function (a) {
|
268
|
+
i.lastValue === a.value &&
|
269
|
+
((i.lastValid = a.valid),
|
270
|
+
a.message && (i.message = a.message),
|
271
|
+
(i.lastFinished = true),
|
272
|
+
n.data("validation" + i.validatorName + "Message", i.message),
|
273
|
+
setTimeout(function () {
|
274
|
+
n.trigger("change.validation");
|
275
|
+
}, 1));
|
276
|
+
});
|
277
|
+
}
|
278
|
+
return false;
|
279
|
+
},
|
280
|
+
},
|
281
|
+
ajax: {
|
282
|
+
name: "ajax",
|
283
|
+
init: function (a, t) {
|
284
|
+
return { validatorName: t, url: a.data("validation" + t + "Ajax"), lastValue: a.val(), lastValid: true, lastFinished: true };
|
285
|
+
},
|
286
|
+
validate: function (t, e, i) {
|
287
|
+
// deepcode ignore OperatorPrecedence: <please specify a reason of ignoring this>
|
288
|
+
return "" + i.lastValue == "" + e && true === i.lastFinished
|
289
|
+
// deepcode ignore OperatorPrecedence: <please specify a reason of ignoring this>
|
290
|
+
? false === i.lastValid
|
291
|
+
// deepcode ignore OperatorPrecedence: <please specify a reason of ignoring this>
|
292
|
+
: (true === i.lastFinished &&
|
293
|
+
((i.lastValue = e),
|
294
|
+
(i.lastValid = true),
|
295
|
+
(i.lastFinished = false),
|
296
|
+
a.ajax({
|
297
|
+
url: i.url,
|
298
|
+
data: "value=" + e + "&field=" + t.attr("name"),
|
299
|
+
dataType: "json",
|
300
|
+
success: function (a) {
|
301
|
+
"" + i.lastValue == "" + a.value &&
|
302
|
+
((i.lastValid = !!a.valid),
|
303
|
+
a.message && (i.message = a.message),
|
304
|
+
(i.lastFinished = true),
|
305
|
+
t.data("validation" + i.validatorName + "Message", i.message),
|
306
|
+
setTimeout(function () {
|
307
|
+
t.trigger("change.validation");
|
308
|
+
}, 1));
|
309
|
+
},
|
310
|
+
failure: function () {
|
311
|
+
(i.lastValid = true),
|
312
|
+
(i.message = "ajax call failed"),
|
313
|
+
(i.lastFinished = true),
|
314
|
+
t.data("validation" + i.validatorName + "Message", i.message),
|
315
|
+
setTimeout(function () {
|
316
|
+
t.trigger("change.validation");
|
317
|
+
}, 1);
|
318
|
+
},
|
319
|
+
})),
|
320
|
+
false);
|
321
|
+
},
|
322
|
+
},
|
323
|
+
regex: {
|
324
|
+
name: "regex",
|
325
|
+
init: function (a, t) {
|
326
|
+
var e;
|
327
|
+
return { regex: ((e = a.data("validation" + t + "Regex")), RegExp("^" + e + "$")) };
|
328
|
+
},
|
329
|
+
validate: function (a, t, e) {
|
330
|
+
return (!e.regex.test(t) && !e.negative) || (e.regex.test(t) && e.negative);
|
331
|
+
},
|
332
|
+
},
|
333
|
+
required: {
|
334
|
+
name: "required",
|
335
|
+
init: function (a, t) {
|
336
|
+
return {};
|
337
|
+
},
|
338
|
+
validate: function (a, t, e) {
|
339
|
+
return !!(0 === t.length && !e.negative) || !!(t.length > 0 && e.negative);
|
340
|
+
},
|
341
|
+
blockSubmit: true,
|
342
|
+
},
|
343
|
+
match: {
|
344
|
+
name: "match",
|
345
|
+
init: function (a, t) {
|
346
|
+
var e = a
|
347
|
+
.parents("form")
|
348
|
+
.first()
|
349
|
+
.find('[name="' + a.data("validation" + t + "Match") + '"]')
|
350
|
+
.first();
|
351
|
+
return (
|
352
|
+
e.bind("validation.validation", function () {
|
353
|
+
a.trigger("change.validation", { submitting: true });
|
354
|
+
}),
|
355
|
+
{ element: e }
|
356
|
+
);
|
357
|
+
},
|
358
|
+
validate: function (a, t, e) {
|
359
|
+
return (t !== e.element.val() && !e.negative) || (t === e.element.val() && e.negative);
|
360
|
+
},
|
361
|
+
blockSubmit: true,
|
362
|
+
},
|
363
|
+
max: {
|
364
|
+
name: "max",
|
365
|
+
init: function (a, t) {
|
366
|
+
return { max: a.data("validation" + t + "Max") };
|
367
|
+
},
|
368
|
+
validate: function (a, t, e) {
|
369
|
+
return (parseFloat(t, 10) > parseFloat(e.max, 10) && !e.negative) || (parseFloat(t, 10) <= parseFloat(e.max, 10) && e.negative);
|
370
|
+
},
|
371
|
+
},
|
372
|
+
min: {
|
373
|
+
name: "min",
|
374
|
+
init: function (a, t) {
|
375
|
+
return { min: a.data("validation" + t + "Min") };
|
376
|
+
},
|
377
|
+
validate: function (a, t, e) {
|
378
|
+
return (parseFloat(t) < parseFloat(e.min) && !e.negative) || (parseFloat(t) >= parseFloat(e.min) && e.negative);
|
379
|
+
},
|
380
|
+
},
|
381
|
+
maxlength: {
|
382
|
+
name: "maxlength",
|
383
|
+
init: function (a, t) {
|
384
|
+
return { maxlength: a.data("validation" + t + "Maxlength") };
|
385
|
+
},
|
386
|
+
validate: function (a, t, e) {
|
387
|
+
return (t.length > e.maxlength && !e.negative) || (t.length <= e.maxlength && e.negative);
|
388
|
+
},
|
389
|
+
},
|
390
|
+
minlength: {
|
391
|
+
name: "minlength",
|
392
|
+
init: function (a, t) {
|
393
|
+
return { minlength: a.data("validation" + t + "Minlength") };
|
394
|
+
},
|
395
|
+
validate: function (a, t, e) {
|
396
|
+
return (t.length < e.minlength && !e.negative) || (t.length >= e.minlength && e.negative);
|
397
|
+
},
|
398
|
+
},
|
399
|
+
maxchecked: {
|
400
|
+
name: "maxchecked",
|
401
|
+
init: function (a, t) {
|
402
|
+
var e = a
|
403
|
+
.parents("form")
|
404
|
+
.first()
|
405
|
+
.find('[name="' + a.attr("name") + '"]');
|
406
|
+
return (
|
407
|
+
e.bind("click.validation", function () {
|
408
|
+
a.trigger("change.validation", { includeEmpty: true });
|
409
|
+
}),
|
410
|
+
{ maxchecked: a.data("validation" + t + "Maxchecked"), elements: e }
|
411
|
+
);
|
412
|
+
},
|
413
|
+
validate: function (a, t, e) {
|
414
|
+
return (e.elements.filter(":checked").length > e.maxchecked && !e.negative) || (e.elements.filter(":checked").length <= e.maxchecked && e.negative);
|
415
|
+
},
|
416
|
+
blockSubmit: true,
|
417
|
+
},
|
418
|
+
minchecked: {
|
419
|
+
name: "minchecked",
|
420
|
+
init: function (a, t) {
|
421
|
+
var e = a
|
422
|
+
.parents("form")
|
423
|
+
.first()
|
424
|
+
.find('[name="' + a.attr("name") + '"]');
|
425
|
+
return (
|
426
|
+
e.bind("click.validation", function () {
|
427
|
+
a.trigger("change.validation", { includeEmpty: true });
|
428
|
+
}),
|
429
|
+
{ minchecked: a.data("validation" + t + "Minchecked"), elements: e }
|
430
|
+
);
|
431
|
+
},
|
432
|
+
validate: function (a, t, e) {
|
433
|
+
return (e.elements.filter(":checked").length < e.minchecked && !e.negative) || (e.elements.filter(":checked").length >= e.minchecked && e.negative);
|
434
|
+
},
|
435
|
+
blockSubmit: true,
|
436
|
+
},
|
437
|
+
},
|
438
|
+
builtInValidators: {
|
439
|
+
email: { name: "Email", type: "shortcut", shortcut: "validemail" },
|
440
|
+
validemail: { name: "Validemail", type: "regex", regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}", message: "Not a valid email address<!-- data-validator-validemail-message to override -->" },
|
441
|
+
passwordagain: { name: "Passwordagain", type: "match", match: "password", message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->" },
|
442
|
+
positive: { name: "Positive", type: "shortcut", shortcut: "number,positivenumber" },
|
443
|
+
negative: { name: "Negative", type: "shortcut", shortcut: "number,negativenumber" },
|
444
|
+
number: { name: "Number", type: "regex", regex: "([+-]?\\d+(\\.\\d*)?([eE][+-]?[0-9]+)?)?", message: "Must be a number<!-- data-validator-number-message to override -->" },
|
445
|
+
integer: { name: "Integer", type: "regex", regex: "[+-]?\\d+", message: "No decimal places allowed<!-- data-validator-integer-message to override -->" },
|
446
|
+
positivenumber: { name: "Positivenumber", type: "min", min: 0, message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->" },
|
447
|
+
negativenumber: { name: "Negativenumber", type: "max", max: 0, message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->" },
|
448
|
+
required: { name: "Required", type: "required", message: "This is required<!-- data-validator-required-message to override -->" },
|
449
|
+
checkone: { name: "Checkone", type: "minchecked", minchecked: 1, message: "Check at least one option<!-- data-validation-checkone-message to override -->" },
|
450
|
+
},
|
451
|
+
},
|
452
|
+
i = function (a) {
|
453
|
+
return a.toLowerCase().replace(/(^|\s)([a-z])/g, function (a, t, e) {
|
454
|
+
return t + e.toUpperCase();
|
455
|
+
});
|
456
|
+
},
|
457
|
+
n = function (t) {
|
458
|
+
var e = t.val(),
|
459
|
+
i = t.attr("type");
|
460
|
+
return "checkbox" === i && (e = t.is(":checked") ? e : ""), "radio" === i && (e = a('input[name="' + t.attr("name") + '"]:checked').length > 0 ? e : ""), e;
|
461
|
+
};
|
462
|
+
(a.fn.jqBootstrapValidation = function (t) {
|
463
|
+
return e.methods[t]
|
464
|
+
? e.methods[t].apply(this, Array.prototype.slice.call(arguments, 1))
|
465
|
+
: "object" != typeof t && t
|
466
|
+
? (a.error("Method " + t + " does not exist on jQuery.jqBootstrapValidation"), null)
|
467
|
+
: e.methods.init.apply(this, arguments);
|
468
|
+
}),
|
469
|
+
(a.jqBootstrapValidation = function (t) {
|
470
|
+
a(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments);
|
471
|
+
});
|
472
|
+
})(jQuery);
|
473
|
+
//# sourceMappingURL=jq-bootstrap-validation.js.map
|
474
|
+
|
475
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianEtYm9vdHN0cmFwLXZhbGlkYXRpb24uanMiLCJzb3VyY2VzIjpbInNyYy9qcy9qcS1ib290c3RyYXAtdmFsaWRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIhKGZ1bmN0aW9uIChhKSB7XG4gICAgdmFyIHQgPSBbXSxcbiAgICAgIGUgPSB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBwcmVwZW5kRXhpc3RpbmdIZWxwQmxvY2s6ICExLFxuICAgICAgICAgIHNuaWZmSHRtbDogITAsXG4gICAgICAgICAgcHJldmVudFN1Ym1pdDogITAsXG4gICAgICAgICAgc3VibWl0RXJyb3I6ICExLFxuICAgICAgICAgIHN1Ym1pdFN1Y2Nlc3M6ICExLFxuICAgICAgICAgIHNlbWFudGljYWxseVN0cmljdDogITEsXG4gICAgICAgICAgYXV0b0FkZDogeyBoZWxwQmxvY2tzOiAhMCB9LFxuICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICBpbml0OiBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgdmFyIHIgPSBhLmV4dGVuZCghMCwge30sIGUpO1xuICAgICAgICAgICAgci5vcHRpb25zID0gYS5leHRlbmQoITAsIHIub3B0aW9ucywgbyk7XG4gICAgICAgICAgICB2YXIgbCA9IGEudW5pcXVlKFxuICAgICAgICAgICAgICB0aGlzLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEodGhpcykucGFyZW50cyhcImZvcm1cIilbMF07XG4gICAgICAgICAgICAgIH0pLnRvQXJyYXkoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGEobCkuYmluZChcInN1Ym1pdFwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSxcbiAgICAgICAgICAgICAgICAgIGkgPSAwLFxuICAgICAgICAgICAgICAgICAgbiA9IGUuZmluZChcImlucHV0LHRleHRhcmVhLHNlbGVjdFwiKS5ub3QoXCJbdHlwZT1zdWJtaXRdLFt0eXBlPWltYWdlXVwiKS5maWx0ZXIoci5vcHRpb25zLmZpbHRlcik7XG4gICAgICAgICAgICAgICAgbi50cmlnZ2VyKFwic3VibWl0LnZhbGlkYXRpb25cIikudHJpZ2dlcihcInZhbGlkYXRpb25Mb3N0Rm9jdXMudmFsaWRhdGlvblwiKSxcbiAgICAgICAgICAgICAgICAgIG4uZWFjaChmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGEoZSkucGFyZW50cyhcIi5mb3JtLWdyb3VwXCIpLmZpcnN0KCk7XG4gICAgICAgICAgICAgICAgICAgIG4uaGFzQ2xhc3MoXCJ3YXJuaW5nXCIpICYmIChuLnJlbW92ZUNsYXNzKFwid2FybmluZ1wiKS5hZGRDbGFzcyhcImVycm9yXCIpLCBpKyspO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBuLnRyaWdnZXIoXCJ2YWxpZGF0aW9uTG9zdEZvY3VzLnZhbGlkYXRpb25cIiksXG4gICAgICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgICAgICAgID8gKHIub3B0aW9ucy5wcmV2ZW50U3VibWl0ICYmIHQucHJldmVudERlZmF1bHQoKSwgZS5hZGRDbGFzcyhcImVycm9yXCIpLCBhLmlzRnVuY3Rpb24oci5vcHRpb25zLnN1Ym1pdEVycm9yKSAmJiByLm9wdGlvbnMuc3VibWl0RXJyb3IoZSwgdCwgbi5qcUJvb3RzdHJhcFZhbGlkYXRpb24oXCJjb2xsZWN0RXJyb3JzXCIsICEwKSkpXG4gICAgICAgICAgICAgICAgICAgIDogKGUucmVtb3ZlQ2xhc3MoXCJlcnJvclwiKSwgYS5pc0Z1bmN0aW9uKHIub3B0aW9ucy5zdWJtaXRTdWNjZXNzKSAmJiByLm9wdGlvbnMuc3VibWl0U3VjY2VzcyhlLCB0KSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSxcbiAgICAgICAgICAgICAgICAgIG8gPSBlLnBhcmVudHMoXCIuZm9ybS1ncm91cFwiKS5maXJzdCgpLFxuICAgICAgICAgICAgICAgICAgbCA9IG8uZmluZChcIi5oZWxwLWJsb2NrXCIpLmZpcnN0KCksXG4gICAgICAgICAgICAgICAgICBkID0gZS5wYXJlbnRzKFwiZm9ybVwiKS5maXJzdCgpLFxuICAgICAgICAgICAgICAgICAgcyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICgoIWwubGVuZ3RoICYmIHIub3B0aW9ucy5hdXRvQWRkICYmIHIub3B0aW9ucy5hdXRvQWRkLmhlbHBCbG9ja3MgJiYgKChsID0gYSgnPGRpdiBjbGFzcz1cImhlbHAtYmxvY2tcIiAvPicpKSwgby5maW5kKFwiLmNvbnRyb2xzXCIpLmFwcGVuZChsKSwgdC5wdXNoKGxbMF0pKSwgci5vcHRpb25zLnNuaWZmSHRtbCkpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBjID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKHZvaWQgMCAhPT0gZS5hdHRyKFwicGF0dGVyblwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICgoYyA9IFwiTm90IGluIHRoZSBleHBlY3RlZCBmb3JtYXQ8IS0tIGRhdGEtdmFsaWRhdGlvbi1wYXR0ZXJuLW1lc3NhZ2UgdG8gb3ZlcnJpZGUgLS0+XCIpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25QYXR0ZXJuTWVzc2FnZVwiKSAmJiAoYyA9IGUuZGF0YShcInZhbGlkYXRpb25QYXR0ZXJuTWVzc2FnZVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgZS5kYXRhKFwidmFsaWRhdGlvblBhdHRlcm5NZXNzYWdlXCIsIGMpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25QYXR0ZXJuUmVnZXhcIiwgZS5hdHRyKFwicGF0dGVyblwiKSkpLFxuICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUuYXR0cihcIm1heFwiKSB8fCB2b2lkIDAgIT09IGUuYXR0cihcImFyaWEtdmFsdWVtYXhcIikpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSB2b2lkIDAgIT09IGUuYXR0cihcIm1heFwiKSA/IGUuYXR0cihcIm1heFwiKSA6IGUuYXR0cihcImFyaWEtdmFsdWVtYXhcIik7XG4gICAgICAgICAgICAgICAgICAgIChjID0gXCJUb28gaGlnaDogTWF4aW11bSBvZiAnXCIgKyB2ICsgXCInPCEtLSBkYXRhLXZhbGlkYXRpb24tbWF4LW1lc3NhZ2UgdG8gb3ZlcnJpZGUgLS0+XCIpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NYXhNZXNzYWdlXCIpICYmIChjID0gZS5kYXRhKFwidmFsaWRhdGlvbk1heE1lc3NhZ2VcIikpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NYXhNZXNzYWdlXCIsIGMpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NYXhNYXhcIiwgdik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBlLmF0dHIoXCJtaW5cIikgfHwgdm9pZCAwICE9PSBlLmF0dHIoXCJhcmlhLXZhbHVlbWluXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtID0gdm9pZCAwICE9PSBlLmF0dHIoXCJtaW5cIikgPyBlLmF0dHIoXCJtaW5cIikgOiBlLmF0dHIoXCJhcmlhLXZhbHVlbWluXCIpO1xuICAgICAgICAgICAgICAgICAgICAoYyA9IFwiVG9vIGxvdzogTWluaW11bSBvZiAnXCIgKyBtICsgXCInPCEtLSBkYXRhLXZhbGlkYXRpb24tbWluLW1lc3NhZ2UgdG8gb3ZlcnJpZGUgLS0+XCIpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NaW5NZXNzYWdlXCIpICYmIChjID0gZS5kYXRhKFwidmFsaWRhdGlvbk1pbk1lc3NhZ2VcIikpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NaW5NZXNzYWdlXCIsIGMpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NaW5NaW5cIiwgbSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUuYXR0cihcIm1heGxlbmd0aFwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAoKGMgPSBcIlRvbyBsb25nOiBNYXhpbXVtIG9mICdcIiArIGUuYXR0cihcIm1heGxlbmd0aFwiKSArIFwiJyBjaGFyYWN0ZXJzPCEtLSBkYXRhLXZhbGlkYXRpb24tbWF4bGVuZ3RoLW1lc3NhZ2UgdG8gb3ZlcnJpZGUgLS0+XCIpLFxuICAgICAgICAgICAgICAgICAgICBlLmRhdGEoXCJ2YWxpZGF0aW9uTWF4bGVuZ3RoTWVzc2FnZVwiKSAmJiAoYyA9IGUuZGF0YShcInZhbGlkYXRpb25NYXhsZW5ndGhNZXNzYWdlXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgZS5kYXRhKFwidmFsaWRhdGlvbk1heGxlbmd0aE1lc3NhZ2VcIiwgYyksXG4gICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NYXhsZW5ndGhNYXhsZW5ndGhcIiwgZS5hdHRyKFwibWF4bGVuZ3RoXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gZS5hdHRyKFwibWlubGVuZ3RoXCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgKChjID0gXCJUb28gc2hvcnQ6IE1pbmltdW0gb2YgJ1wiICsgZS5hdHRyKFwibWlubGVuZ3RoXCIpICsgXCInIGNoYXJhY3RlcnM8IS0tIGRhdGEtdmFsaWRhdGlvbi1taW5sZW5ndGgtbWVzc2FnZSB0byBvdmVycmlkZSAtLT5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgZS5kYXRhKFwidmFsaWRhdGlvbk1pbmxlbmd0aE1lc3NhZ2VcIikgJiYgKGMgPSBlLmRhdGEoXCJ2YWxpZGF0aW9uTWlubGVuZ3RoTWVzc2FnZVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgZS5kYXRhKFwidmFsaWRhdGlvbk1pbmxlbmd0aE1lc3NhZ2VcIiwgYyksXG4gICAgICAgICAgICAgICAgICAgICAgZS5kYXRhKFwidmFsaWRhdGlvbk1pbmxlbmd0aE1pbmxlbmd0aFwiLCBlLmF0dHIoXCJtaW5sZW5ndGhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgKHZvaWQgMCAhPT0gZS5hdHRyKFwicmVxdWlyZWRcIikgfHwgdm9pZCAwICE9PSBlLmF0dHIoXCJhcmlhLXJlcXVpcmVkXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICgoYyA9IHIuYnVpbHRJblZhbGlkYXRvcnMucmVxdWlyZWQubWVzc2FnZSksIGUuZGF0YShcInZhbGlkYXRpb25SZXF1aXJlZE1lc3NhZ2VcIikgJiYgKGMgPSBlLmRhdGEoXCJ2YWxpZGF0aW9uUmVxdWlyZWRNZXNzYWdlXCIpKSwgZS5kYXRhKFwidmFsaWRhdGlvblJlcXVpcmVkTWVzc2FnZVwiLCBjKSksXG4gICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gZS5hdHRyKFwidHlwZVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgIFwibnVtYmVyXCIgPT09IGUuYXR0cihcInR5cGVcIikudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICgoYyA9IHIuYnVpbHRJblZhbGlkYXRvcnMubnVtYmVyLm1lc3NhZ2UpLCBlLmRhdGEoXCJ2YWxpZGF0aW9uTnVtYmVyTWVzc2FnZVwiKSAmJiAoYyA9IGUuZGF0YShcInZhbGlkYXRpb25OdW1iZXJNZXNzYWdlXCIpKSwgZS5kYXRhKFwidmFsaWRhdGlvbk51bWJlck1lc3NhZ2VcIiwgYykpLFxuICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUuYXR0cihcInR5cGVcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICBcImVtYWlsXCIgPT09IGUuYXR0cihcInR5cGVcIikudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICgoYyA9IFwiTm90IGEgdmFsaWQgZW1haWwgYWRkcmVzczwhLS0gZGF0YS12YWxpZGF0b3ItdmFsaWRlbWFpbC1tZXNzYWdlIHRvIG92ZXJyaWRlIC0tPlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBlLmRhdGEoXCJ2YWxpZGF0aW9uVmFsaWRlbWFpbE1lc3NhZ2VcIikgPyAoYyA9IGUuZGF0YShcInZhbGlkYXRpb25WYWxpZGVtYWlsTWVzc2FnZVwiKSkgOiBlLmRhdGEoXCJ2YWxpZGF0aW9uRW1haWxNZXNzYWdlXCIpICYmIChjID0gZS5kYXRhKFwidmFsaWRhdGlvbkVtYWlsTWVzc2FnZVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgZS5kYXRhKFwidmFsaWRhdGlvblZhbGlkZW1haWxNZXNzYWdlXCIsIGMpKSxcbiAgICAgICAgICAgICAgICAgICAgdm9pZCAwICE9PSBlLmF0dHIoXCJtaW5jaGVja2VkXCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgKChjID0gXCJOb3QgZW5vdWdoIG9wdGlvbnMgY2hlY2tlZDsgTWluaW11bSBvZiAnXCIgKyBlLmF0dHIoXCJtaW5jaGVja2VkXCIpICsgXCInIHJlcXVpcmVkPCEtLSBkYXRhLXZhbGlkYXRpb24tbWluY2hlY2tlZC1tZXNzYWdlIHRvIG92ZXJyaWRlIC0tPlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBlLmRhdGEoXCJ2YWxpZGF0aW9uTWluY2hlY2tlZE1lc3NhZ2VcIikgJiYgKGMgPSBlLmRhdGEoXCJ2YWxpZGF0aW9uTWluY2hlY2tlZE1lc3NhZ2VcIikpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NaW5jaGVja2VkTWVzc2FnZVwiLCBjKSxcbiAgICAgICAgICAgICAgICAgICAgICBlLmRhdGEoXCJ2YWxpZGF0aW9uTWluY2hlY2tlZE1pbmNoZWNrZWRcIiwgZS5hdHRyKFwibWluY2hlY2tlZFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUuYXR0cihcIm1heGNoZWNrZWRcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoKGMgPSBcIlRvbyBtYW55IG9wdGlvbnMgY2hlY2tlZDsgTWF4aW11bSBvZiAnXCIgKyBlLmF0dHIoXCJtYXhjaGVja2VkXCIpICsgXCInIHJlcXVpcmVkPCEtLSBkYXRhLXZhbGlkYXRpb24tbWF4Y2hlY2tlZC1tZXNzYWdlIHRvIG92ZXJyaWRlIC0tPlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBlLmRhdGEoXCJ2YWxpZGF0aW9uTWF4Y2hlY2tlZE1lc3NhZ2VcIikgJiYgKGMgPSBlLmRhdGEoXCJ2YWxpZGF0aW9uTWF4Y2hlY2tlZE1lc3NhZ2VcIikpLFxuICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YShcInZhbGlkYXRpb25NYXhjaGVja2VkTWVzc2FnZVwiLCBjKSxcbiAgICAgICAgICAgICAgICAgICAgICBlLmRhdGEoXCJ2YWxpZGF0aW9uTWF4Y2hlY2tlZE1heGNoZWNrZWRcIiwgZS5hdHRyKFwibWF4Y2hlY2tlZFwiKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2b2lkIDAgIT09IGUuZGF0YShcInZhbGlkYXRpb25cIikgJiYgKHMgPSBlLmRhdGEoXCJ2YWxpZGF0aW9uXCIpLnNwbGl0KFwiLFwiKSksXG4gICAgICAgICAgICAgICAgICBhLmVhY2goZS5kYXRhKCksIGZ1bmN0aW9uIChhLCB0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlID0gYS5yZXBsYWNlKC8oW0EtWl0pL2csIFwiLCQxXCIpLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uXCIgPT09IGVbMF0gJiYgZVsxXSAmJiBzLnB1c2goZVsxXSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgdSA9IHMsXG4gICAgICAgICAgICAgICAgICBnID0gW107XG4gICAgICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgICAgIGEuZWFjaChzLCBmdW5jdGlvbiAoYSwgdCkge1xuICAgICAgICAgICAgICAgICAgICBzW2FdID0gaSh0KTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAocyA9IGEudW5pcXVlKHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKGcgPSBbXSksXG4gICAgICAgICAgICAgICAgICAgIGEuZWFjaCh1LCBmdW5jdGlvbiAodCwgbikge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGUuZGF0YShcInZhbGlkYXRpb25cIiArIG4gKyBcIlNob3J0Y3V0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgYS5lYWNoKGUuZGF0YShcInZhbGlkYXRpb25cIiArIG4gKyBcIlNob3J0Y3V0XCIpLnNwbGl0KFwiLFwiKSwgZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZy5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoci5idWlsdEluVmFsaWRhdG9yc1tuLnRvTG93ZXJDYXNlKCldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHIuYnVpbHRJblZhbGlkYXRvcnNbbi50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2hvcnRjdXRcIiA9PT0gby50eXBlLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYS5lYWNoKG8uc2hvcnRjdXQuc3BsaXQoXCIsXCIpLCBmdW5jdGlvbiAoYSwgdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ID0gaSh0KSksIGcucHVzaCh0KSwgcy5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAodSA9IGcpO1xuICAgICAgICAgICAgICAgIHdoaWxlICh1Lmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgICAgIHZhciBoID0ge307XG4gICAgICAgICAgICAgICAgYS5lYWNoKHMsIGZ1bmN0aW9uICh0LCBuKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgbyA9IGUuZGF0YShcInZhbGlkYXRpb25cIiArIG4gKyBcIk1lc3NhZ2VcIiksXG4gICAgICAgICAgICAgICAgICAgIGwgPSB2b2lkIDAgIT09IG8sXG4gICAgICAgICAgICAgICAgICAgIGQgPSAhMTtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKChvID0gbyB8fCBcIidcIiArIG4gKyBcIicgdmFsaWRhdGlvbiBmYWlsZWQgPCEtLSBBZGQgYXR0cmlidXRlICdkYXRhLXZhbGlkYXRpb24tXCIgKyBuLnRvTG93ZXJDYXNlKCkgKyBcIi1tZXNzYWdlJyB0byBpbnB1dCB0byBjaGFuZ2UgdGhpcyBtZXNzYWdlIC0tPlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYS5lYWNoKHIudmFsaWRhdG9yVHlwZXMsIGZ1bmN0aW9uICh0LCByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBoW3RdICYmIChoW3RdID0gW10pLCBkIHx8IHZvaWQgMCA9PT0gZS5kYXRhKFwidmFsaWRhdGlvblwiICsgbiArIGkoci5uYW1lKSkgfHwgKGhbdF0ucHVzaChhLmV4dGVuZCghMCwgeyBuYW1lOiBpKHIubmFtZSksIG1lc3NhZ2U6IG8gfSwgci5pbml0KGUsIG4pKSksIChkID0gITApKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICFkICYmIHIuYnVpbHRJblZhbGlkYXRvcnNbbi50b0xvd2VyQ2FzZSgpXSlcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IGEuZXh0ZW5kKCEwLCB7fSwgci5idWlsdEluVmFsaWRhdG9yc1tuLnRvTG93ZXJDYXNlKCldKTtcbiAgICAgICAgICAgICAgICAgICAgbCAmJiAocy5tZXNzYWdlID0gbyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjID0gcy50eXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIFwic2hvcnRjdXRcIiA9PT0gY1xuICAgICAgICAgICAgICAgICAgICAgID8gKGQgPSAhMClcbiAgICAgICAgICAgICAgICAgICAgICA6IGEuZWFjaChyLnZhbGlkYXRvclR5cGVzLCBmdW5jdGlvbiAodCwgbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGhbdF0gJiYgKGhbdF0gPSBbXSksIGQgfHwgYyAhPT0gdC50b0xvd2VyQ2FzZSgpIHx8IChlLmRhdGEoXCJ2YWxpZGF0aW9uXCIgKyBuICsgaShvLm5hbWUpLCBzW28ubmFtZS50b0xvd2VyQ2FzZSgpXSksIGhbY10ucHVzaChhLmV4dGVuZChzLCBvLmluaXQoZSwgbikpKSwgKGQgPSAhMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkIHx8IGEuZXJyb3IoXCJDYW5ub3QgZmluZCB2YWxpZGF0aW9uIGluZm8gZm9yICdcIiArIG4gKyBcIidcIik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBsLmRhdGEoXCJvcmlnaW5hbC1jb250ZW50c1wiLCBsLmRhdGEoXCJvcmlnaW5hbC1jb250ZW50c1wiKSA/IGwuZGF0YShcIm9yaWdpbmFsLWNvbnRlbnRzXCIpIDogbC5odG1sKCkpLFxuICAgICAgICAgICAgICAgICAgbC5kYXRhKFwib3JpZ2luYWwtcm9sZVwiLCBsLmRhdGEoXCJvcmlnaW5hbC1yb2xlXCIpID8gbC5kYXRhKFwib3JpZ2luYWwtcm9sZVwiKSA6IGwuYXR0cihcInJvbGVcIikpLFxuICAgICAgICAgICAgICAgICAgby5kYXRhKFwib3JpZ2luYWwtY2xhc3Nlc1wiLCBvLmRhdGEoXCJvcmlnaW5hbC1jbGFzZXNcIikgPyBvLmRhdGEoXCJvcmlnaW5hbC1jbGFzc2VzXCIpIDogby5hdHRyKFwiY2xhc3NcIikpLFxuICAgICAgICAgICAgICAgICAgZS5kYXRhKFwib3JpZ2luYWwtYXJpYS1pbnZhbGlkXCIsIGUuZGF0YShcIm9yaWdpbmFsLWFyaWEtaW52YWxpZFwiKSA/IGUuZGF0YShcIm9yaWdpbmFsLWFyaWEtaW52YWxpZFwiKSA6IGUuYXR0cihcImFyaWEtaW52YWxpZFwiKSksXG4gICAgICAgICAgICAgICAgICBlLmJpbmQoXCJ2YWxpZGF0aW9uLnZhbGlkYXRpb25cIiwgZnVuY3Rpb24gKHQsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSBuKGUpLFxuICAgICAgICAgICAgICAgICAgICAgIGwgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICBhLmVhY2goaCwgZnVuY3Rpb24gKHQsIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChvIHx8IChpICYmIGkuaW5jbHVkZUVtcHR5KSB8fCAoci52YWxpZGF0b3JUeXBlc1t0XS5ibG9ja1N1Ym1pdCAmJiBpICYmIGkuc3VibWl0dGluZykpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGEuZWFjaChuLCBmdW5jdGlvbiAoYSwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIudmFsaWRhdG9yVHlwZXNbdF0udmFsaWRhdGUoZSwgbywgaSkgJiYgbC5wdXNoKGkubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgZS5iaW5kKFwiZ2V0VmFsaWRhdG9ycy52YWxpZGF0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGg7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGUuYmluZChcInN1Ym1pdC52YWxpZGF0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUudHJpZ2dlckhhbmRsZXIoXCJjaGFuZ2UudmFsaWRhdGlvblwiLCB7IHN1Ym1pdHRpbmc6ICEwIH0pO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBlLmJpbmQoXCJrZXl1cC52YWxpZGF0aW9uIGZvY3VzLnZhbGlkYXRpb24gYmx1ci52YWxpZGF0aW9uIGNsaWNrLnZhbGlkYXRpb24ga2V5ZG93bi52YWxpZGF0aW9uIGtleXByZXNzLnZhbGlkYXRpb24gY2hhbmdlLnZhbGlkYXRpb25cIiwgZnVuY3Rpb24gKHQsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBuKGUpLFxuICAgICAgICAgICAgICAgICAgICAgIGMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgby5maW5kKFwiaW5wdXQsdGV4dGFyZWEsc2VsZWN0XCIpLmVhY2goZnVuY3Rpb24gKHQsIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IGMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIChhLmVhY2goYShuKS50cmlnZ2VySGFuZGxlcihcInZhbGlkYXRpb24udmFsaWRhdGlvblwiLCBpKSwgZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYy5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmxlbmd0aCA+IG8pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgYShuKS5hdHRyKFwiYXJpYS1pbnZhbGlkXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gZS5kYXRhKFwib3JpZ2luYWwtYXJpYS1pbnZhbGlkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYShuKS5hdHRyKFwiYXJpYS1pbnZhbGlkXCIsIHZvaWQgMCAhPT0gciAmJiByKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKFwiaW5wdXQsc2VsZWN0LHRleHRhcmVhXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAubm90KGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAubm90KCdbbmFtZT1cIicgKyBlLmF0dHIoXCJuYW1lXCIpICsgJ1wiXScpXG4gICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcihcInZhbGlkYXRpb25Mb3N0Rm9jdXMudmFsaWRhdGlvblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAoYyA9IGEudW5pcXVlKGMuc29ydCgpKSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvLnJlbW92ZUNsYXNzKFwic3VjY2VzcyBlcnJvclwiKS5hZGRDbGFzcyhcIndhcm5pbmdcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHIub3B0aW9ucy5zZW1hbnRpY2FsbHlTdHJpY3QgJiYgMSA9PT0gYy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGwuaHRtbChjWzBdICsgKHIub3B0aW9ucy5wcmVwZW5kRXhpc3RpbmdIZWxwQmxvY2sgPyBsLmRhdGEoXCJvcmlnaW5hbC1jb250ZW50c1wiKSA6IFwiXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbC5odG1sKCc8dWwgcm9sZT1cImFsZXJ0XCI+PGxpPicgKyBjLmpvaW4oXCI8L2xpPjxsaT5cIikgKyBcIjwvbGk+PC91bD5cIiArIChyLm9wdGlvbnMucHJlcGVuZEV4aXN0aW5nSGVscEJsb2NrID8gbC5kYXRhKFwib3JpZ2luYWwtY29udGVudHNcIikgOiBcIlwiKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvLnJlbW92ZUNsYXNzKFwid2FybmluZyBlcnJvciBzdWNjZXNzXCIpLCBzLmxlbmd0aCA+IDAgJiYgby5hZGRDbGFzcyhcInN1Y2Nlc3NcIiksIGwuaHRtbChsLmRhdGEoXCJvcmlnaW5hbC1jb250ZW50c1wiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgIFwiYmx1clwiID09PSB0LnR5cGUgJiYgby5yZW1vdmVDbGFzcyhcInN1Y2Nlc3NcIik7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIGUuYmluZChcInZhbGlkYXRpb25Mb3N0Rm9jdXMudmFsaWRhdGlvblwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIG8ucmVtb3ZlQ2xhc3MoXCJzdWNjZXNzXCIpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciBlID0gYSh0aGlzKSxcbiAgICAgICAgICAgICAgICBpID0gZS5wYXJlbnRzKFwiLmZvcm0tZ3JvdXBcIikuZmlyc3QoKSxcbiAgICAgICAgICAgICAgICBuID0gaS5maW5kKFwiLmhlbHAtYmxvY2tcIikuZmlyc3QoKTtcbiAgICAgICAgICAgICAgZS51bmJpbmQoXCIudmFsaWRhdGlvblwiKSxcbiAgICAgICAgICAgICAgICBuLmh0bWwobi5kYXRhKFwib3JpZ2luYWwtY29udGVudHNcIikpLFxuICAgICAgICAgICAgICAgIGkuYXR0cihcImNsYXNzXCIsIGkuZGF0YShcIm9yaWdpbmFsLWNsYXNzZXNcIikpLFxuICAgICAgICAgICAgICAgIGUuYXR0cihcImFyaWEtaW52YWxpZFwiLCBlLmRhdGEoXCJvcmlnaW5hbC1hcmlhLWludmFsaWRcIikpLFxuICAgICAgICAgICAgICAgIG4uYXR0cihcInJvbGVcIiwgZS5kYXRhKFwib3JpZ2luYWwtcm9sZVwiKSksXG4gICAgICAgICAgICAgICAgdC5pbmRleE9mKG5bMF0pID4gLTEgJiYgbi5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29sbGVjdEVycm9yczogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHZhciBlID0ge307XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24gKHQsIGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbiA9IGEoaSksXG4gICAgICAgICAgICAgICAgICBvID0gbi5hdHRyKFwibmFtZVwiKSxcbiAgICAgICAgICAgICAgICAgIHIgPSBuLnRyaWdnZXJIYW5kbGVyKFwidmFsaWRhdGlvbi52YWxpZGF0aW9uXCIsIHsgaW5jbHVkZUVtcHR5OiAhMCB9KTtcbiAgICAgICAgICAgICAgICBlW29dID0gYS5leHRlbmQoITAsIHIsIGVbb10pO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgYS5lYWNoKGUsIGZ1bmN0aW9uIChhLCB0KSB7XG4gICAgICAgICAgICAgICAgMCA9PT0gdC5sZW5ndGggJiYgZGVsZXRlIGVbYV07XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGFzRXJyb3JzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdCA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlLCBpKSB7XG4gICAgICAgICAgICAgICAgdCA9IHQuY29uY2F0KGEoaSkudHJpZ2dlckhhbmRsZXIoXCJnZXRWYWxpZGF0b3JzLnZhbGlkYXRpb25cIikgPyBhKGkpLnRyaWdnZXJIYW5kbGVyKFwidmFsaWRhdGlvbi52YWxpZGF0aW9uXCIsIHsgc3VibWl0dGluZzogITAgfSkgOiBbXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdmVycmlkZTogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIGUgPSBhLmV4dGVuZCghMCwgZSwgdCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdG9yVHlwZXM6IHtcbiAgICAgICAgICBjYWxsYmFjazoge1xuICAgICAgICAgICAgbmFtZTogXCJjYWxsYmFja1wiLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yTmFtZTogdCwgY2FsbGJhY2s6IGEuZGF0YShcInZhbGlkYXRpb25cIiArIHQgKyBcIkNhbGxiYWNrXCIpLCBsYXN0VmFsdWU6IGEudmFsKCksIGxhc3RWYWxpZDogITAsIGxhc3RGaW5pc2hlZDogITAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgaWYgKGUubGFzdFZhbHVlID09PSB0ICYmIGUubGFzdEZpbmlzaGVkKSByZXR1cm4gIWUubGFzdFZhbGlkO1xuICAgICAgICAgICAgICAvLyBkZWVwY29kZSBpZ25vcmUgT3BlcmF0b3JQcmVjZWRlbmNlOiA8cGxlYXNlIHNwZWNpZnkgYSByZWFzb24gb2YgaWdub3JpbmcgdGhpcz5cbiAgICAgICAgICAgICAgaWYgKCEwID09PSBlLmxhc3RGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgIChlLmxhc3RWYWx1ZSA9IHQpLCAoZS5sYXN0VmFsaWQgPSAhMCksIChlLmxhc3RGaW5pc2hlZCA9ICExKTtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IGUsXG4gICAgICAgICAgICAgICAgICBuID0gYTtcbiAgICAgICAgICAgICAgICAhKGZ1bmN0aW9uIGEodCwgZSkge1xuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykuc3BsaWNlKDIpLCBuID0gdC5zcGxpdChcIi5cIiksIG8gPSBuLnBvcCgpLCByID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIGUgPSBlW25bcl1dO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbb10uYXBwbHkodGhpcywgaSk7XG4gICAgICAgICAgICAgICAgfSkoZS5jYWxsYmFjaywgd2luZG93LCBhLCB0LCBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgaS5sYXN0VmFsdWUgPT09IGEudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKChpLmxhc3RWYWxpZCA9IGEudmFsaWQpLFxuICAgICAgICAgICAgICAgICAgICBhLm1lc3NhZ2UgJiYgKGkubWVzc2FnZSA9IGEubWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgIChpLmxhc3RGaW5pc2hlZCA9ICEwKSxcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRhKFwidmFsaWRhdGlvblwiICsgaS52YWxpZGF0b3JOYW1lICsgXCJNZXNzYWdlXCIsIGkubWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgIG4udHJpZ2dlcihcImNoYW5nZS52YWxpZGF0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFqYXg6IHtcbiAgICAgICAgICAgIG5hbWU6IFwiYWpheFwiLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yTmFtZTogdCwgdXJsOiBhLmRhdGEoXCJ2YWxpZGF0aW9uXCIgKyB0ICsgXCJBamF4XCIpLCBsYXN0VmFsdWU6IGEudmFsKCksIGxhc3RWYWxpZDogITAsIGxhc3RGaW5pc2hlZDogITAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKHQsIGUsIGkpIHtcbiAgICAgICAgICAgICAgLy8gZGVlcGNvZGUgaWdub3JlIE9wZXJhdG9yUHJlY2VkZW5jZTogPHBsZWFzZSBzcGVjaWZ5IGEgcmVhc29uIG9mIGlnbm9yaW5nIHRoaXM+XG4gICAgICAgICAgICAgIHJldHVybiBcIlwiICsgaS5sYXN0VmFsdWUgPT0gXCJcIiArIGUgJiYgITAgPT09IGkubGFzdEZpbmlzaGVkXG4gICAgICAgICAgICAgICAgLy8gZGVlcGNvZGUgaWdub3JlIE9wZXJhdG9yUHJlY2VkZW5jZTogPHBsZWFzZSBzcGVjaWZ5IGEgcmVhc29uIG9mIGlnbm9yaW5nIHRoaXM+XG4gICAgICAgICAgICAgICAgPyAhMSA9PT0gaS5sYXN0VmFsaWRcbiAgICAgICAgICAgICAgICAvLyBkZWVwY29kZSBpZ25vcmUgT3BlcmF0b3JQcmVjZWRlbmNlOiA8cGxlYXNlIHNwZWNpZnkgYSByZWFzb24gb2YgaWdub3JpbmcgdGhpcz5cbiAgICAgICAgICAgICAgICA6ICghMCA9PT0gaS5sYXN0RmluaXNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKChpLmxhc3RWYWx1ZSA9IGUpLFxuICAgICAgICAgICAgICAgICAgICAoaS5sYXN0VmFsaWQgPSAhMCksXG4gICAgICAgICAgICAgICAgICAgIChpLmxhc3RGaW5pc2hlZCA9ICExKSxcbiAgICAgICAgICAgICAgICAgICAgYS5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgICB1cmw6IGkudXJsLFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFwidmFsdWU9XCIgKyBlICsgXCImZmllbGQ9XCIgKyB0LmF0dHIoXCJuYW1lXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25cIixcbiAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcIiArIGkubGFzdFZhbHVlID09IFwiXCIgKyBhLnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgoaS5sYXN0VmFsaWQgPSAhIWEudmFsaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhLm1lc3NhZ2UgJiYgKGkubWVzc2FnZSA9IGEubWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpLmxhc3RGaW5pc2hlZCA9ICEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdC5kYXRhKFwidmFsaWRhdGlvblwiICsgaS52YWxpZGF0b3JOYW1lICsgXCJNZXNzYWdlXCIsIGkubWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpZ2dlcihcImNoYW5nZS52YWxpZGF0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoaS5sYXN0VmFsaWQgPSAhMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpLm1lc3NhZ2UgPSBcImFqYXggY2FsbCBmYWlsZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpLmxhc3RGaW5pc2hlZCA9ICEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdC5kYXRhKFwidmFsaWRhdGlvblwiICsgaS52YWxpZGF0b3JOYW1lICsgXCJNZXNzYWdlXCIsIGkubWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpZ2dlcihcImNoYW5nZS52YWxpZGF0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAhMSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVnZXg6IHtcbiAgICAgICAgICAgIG5hbWU6IFwicmVnZXhcIixcbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChhLCB0KSB7XG4gICAgICAgICAgICAgIHZhciBlO1xuICAgICAgICAgICAgICByZXR1cm4geyByZWdleDogKChlID0gYS5kYXRhKFwidmFsaWRhdGlvblwiICsgdCArIFwiUmVnZXhcIikpLCBSZWdFeHAoXCJeXCIgKyBlICsgXCIkXCIpKSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoYSwgdCwgZSkge1xuICAgICAgICAgICAgICByZXR1cm4gKCFlLnJlZ2V4LnRlc3QodCkgJiYgIWUubmVnYXRpdmUpIHx8IChlLnJlZ2V4LnRlc3QodCkgJiYgZS5uZWdhdGl2ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICAgIG5hbWU6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChhLCB0KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICEhKDAgPT09IHQubGVuZ3RoICYmICFlLm5lZ2F0aXZlKSB8fCAhISh0Lmxlbmd0aCA+IDAgJiYgZS5uZWdhdGl2ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmxvY2tTdWJtaXQ6ICEwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF0Y2g6IHtcbiAgICAgICAgICAgIG5hbWU6IFwibWF0Y2hcIixcbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChhLCB0KSB7XG4gICAgICAgICAgICAgIHZhciBlID0gYVxuICAgICAgICAgICAgICAgIC5wYXJlbnRzKFwiZm9ybVwiKVxuICAgICAgICAgICAgICAgIC5maXJzdCgpXG4gICAgICAgICAgICAgICAgLmZpbmQoJ1tuYW1lPVwiJyArIGEuZGF0YShcInZhbGlkYXRpb25cIiArIHQgKyBcIk1hdGNoXCIpICsgJ1wiXScpXG4gICAgICAgICAgICAgICAgLmZpcnN0KCk7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgZS5iaW5kKFwidmFsaWRhdGlvbi52YWxpZGF0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIGEudHJpZ2dlcihcImNoYW5nZS52YWxpZGF0aW9uXCIsIHsgc3VibWl0dGluZzogITAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50OiBlIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICh0ICE9PSBlLmVsZW1lbnQudmFsKCkgJiYgIWUubmVnYXRpdmUpIHx8ICh0ID09PSBlLmVsZW1lbnQudmFsKCkgJiYgZS5uZWdhdGl2ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmxvY2tTdWJtaXQ6ICEwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF4OiB7XG4gICAgICAgICAgICBuYW1lOiBcIm1heFwiLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgbWF4OiBhLmRhdGEoXCJ2YWxpZGF0aW9uXCIgKyB0ICsgXCJNYXhcIikgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChwYXJzZUZsb2F0KHQsIDEwKSA+IHBhcnNlRmxvYXQoZS5tYXgsIDEwKSAmJiAhZS5uZWdhdGl2ZSkgfHwgKHBhcnNlRmxvYXQodCwgMTApIDw9IHBhcnNlRmxvYXQoZS5tYXgsIDEwKSAmJiBlLm5lZ2F0aXZlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtaW46IHtcbiAgICAgICAgICAgIG5hbWU6IFwibWluXCIsXG4gICAgICAgICAgICBpbml0OiBmdW5jdGlvbiAoYSwgdCkge1xuICAgICAgICAgICAgICByZXR1cm4geyBtaW46IGEuZGF0YShcInZhbGlkYXRpb25cIiArIHQgKyBcIk1pblwiKSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoYSwgdCwgZSkge1xuICAgICAgICAgICAgICByZXR1cm4gKHBhcnNlRmxvYXQodCkgPCBwYXJzZUZsb2F0KGUubWluKSAmJiAhZS5uZWdhdGl2ZSkgfHwgKHBhcnNlRmxvYXQodCkgPj0gcGFyc2VGbG9hdChlLm1pbikgJiYgZS5uZWdhdGl2ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF4bGVuZ3RoOiB7XG4gICAgICAgICAgICBuYW1lOiBcIm1heGxlbmd0aFwiLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgbWF4bGVuZ3RoOiBhLmRhdGEoXCJ2YWxpZGF0aW9uXCIgKyB0ICsgXCJNYXhsZW5ndGhcIikgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICh0Lmxlbmd0aCA+IGUubWF4bGVuZ3RoICYmICFlLm5lZ2F0aXZlKSB8fCAodC5sZW5ndGggPD0gZS5tYXhsZW5ndGggJiYgZS5uZWdhdGl2ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWlubGVuZ3RoOiB7XG4gICAgICAgICAgICBuYW1lOiBcIm1pbmxlbmd0aFwiLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgbWlubGVuZ3RoOiBhLmRhdGEoXCJ2YWxpZGF0aW9uXCIgKyB0ICsgXCJNaW5sZW5ndGhcIikgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICh0Lmxlbmd0aCA8IGUubWlubGVuZ3RoICYmICFlLm5lZ2F0aXZlKSB8fCAodC5sZW5ndGggPj0gZS5taW5sZW5ndGggJiYgZS5uZWdhdGl2ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF4Y2hlY2tlZDoge1xuICAgICAgICAgICAgbmFtZTogXCJtYXhjaGVja2VkXCIsXG4gICAgICAgICAgICBpbml0OiBmdW5jdGlvbiAoYSwgdCkge1xuICAgICAgICAgICAgICB2YXIgZSA9IGFcbiAgICAgICAgICAgICAgICAucGFyZW50cyhcImZvcm1cIilcbiAgICAgICAgICAgICAgICAuZmlyc3QoKVxuICAgICAgICAgICAgICAgIC5maW5kKCdbbmFtZT1cIicgKyBhLmF0dHIoXCJuYW1lXCIpICsgJ1wiXScpO1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGUuYmluZChcImNsaWNrLnZhbGlkYXRpb25cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgYS50cmlnZ2VyKFwiY2hhbmdlLnZhbGlkYXRpb25cIiwgeyBpbmNsdWRlRW1wdHk6ICEwIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHsgbWF4Y2hlY2tlZDogYS5kYXRhKFwidmFsaWRhdGlvblwiICsgdCArIFwiTWF4Y2hlY2tlZFwiKSwgZWxlbWVudHM6IGUgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoYSwgdCwgZSkge1xuICAgICAgICAgICAgICByZXR1cm4gKGUuZWxlbWVudHMuZmlsdGVyKFwiOmNoZWNrZWRcIikubGVuZ3RoID4gZS5tYXhjaGVja2VkICYmICFlLm5lZ2F0aXZlKSB8fCAoZS5lbGVtZW50cy5maWx0ZXIoXCI6Y2hlY2tlZFwiKS5sZW5ndGggPD0gZS5tYXhjaGVja2VkICYmIGUubmVnYXRpdmUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJsb2NrU3VibWl0OiAhMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1pbmNoZWNrZWQ6IHtcbiAgICAgICAgICAgIG5hbWU6IFwibWluY2hlY2tlZFwiLFxuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24gKGEsIHQpIHtcbiAgICAgICAgICAgICAgdmFyIGUgPSBhXG4gICAgICAgICAgICAgICAgLnBhcmVudHMoXCJmb3JtXCIpXG4gICAgICAgICAgICAgICAgLmZpcnN0KClcbiAgICAgICAgICAgICAgICAuZmluZCgnW25hbWU9XCInICsgYS5hdHRyKFwibmFtZVwiKSArICdcIl0nKTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBlLmJpbmQoXCJjbGljay52YWxpZGF0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIGEudHJpZ2dlcihcImNoYW5nZS52YWxpZGF0aW9uXCIsIHsgaW5jbHVkZUVtcHR5OiAhMCB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7IG1pbmNoZWNrZWQ6IGEuZGF0YShcInZhbGlkYXRpb25cIiArIHQgKyBcIk1pbmNoZWNrZWRcIiksIGVsZW1lbnRzOiBlIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGEsIHQsIGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChlLmVsZW1lbnRzLmZpbHRlcihcIjpjaGVja2VkXCIpLmxlbmd0aCA8IGUubWluY2hlY2tlZCAmJiAhZS5uZWdhdGl2ZSkgfHwgKGUuZWxlbWVudHMuZmlsdGVyKFwiOmNoZWNrZWRcIikubGVuZ3RoID49IGUubWluY2hlY2tlZCAmJiBlLm5lZ2F0aXZlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBibG9ja1N1Ym1pdDogITAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYnVpbHRJblZhbGlkYXRvcnM6IHtcbiAgICAgICAgICBlbWFpbDogeyBuYW1lOiBcIkVtYWlsXCIsIHR5cGU6IFwic2hvcnRjdXRcIiwgc2hvcnRjdXQ6IFwidmFsaWRlbWFpbFwiIH0sXG4gICAgICAgICAgdmFsaWRlbWFpbDogeyBuYW1lOiBcIlZhbGlkZW1haWxcIiwgdHlwZTogXCJyZWdleFwiLCByZWdleDogXCJbQS1aYS16MC05Ll8lKy1dK0BbQS1aYS16MC05Li1dK1xcXFwuW0EtWmEtel17Miw0fVwiLCBtZXNzYWdlOiBcIk5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3M8IS0tIGRhdGEtdmFsaWRhdG9yLXZhbGlkZW1haWwtbWVzc2FnZSB0byBvdmVycmlkZSAtLT5cIiB9LFxuICAgICAgICAgIHBhc3N3b3JkYWdhaW46IHsgbmFtZTogXCJQYXNzd29yZGFnYWluXCIsIHR5cGU6IFwibWF0Y2hcIiwgbWF0Y2g6IFwicGFzc3dvcmRcIiwgbWVzc2FnZTogXCJEb2VzIG5vdCBtYXRjaCB0aGUgZ2l2ZW4gcGFzc3dvcmQ8IS0tIGRhdGEtdmFsaWRhdG9yLXBhc3dvcmRhZ2Fpbi1tZXNzYWdlIHRvIG92ZXJyaWRlIC0tPlwiIH0sXG4gICAgICAgICAgcG9zaXRpdmU6IHsgbmFtZTogXCJQb3NpdGl2ZVwiLCB0eXBlOiBcInNob3J0Y3V0XCIsIHNob3J0Y3V0OiBcIm51bWJlcixwb3NpdGl2ZW51bWJlclwiIH0sXG4gICAgICAgICAgbmVnYXRpdmU6IHsgbmFtZTogXCJOZWdhdGl2ZVwiLCB0eXBlOiBcInNob3J0Y3V0XCIsIHNob3J0Y3V0OiBcIm51bWJlcixuZWdhdGl2ZW51bWJlclwiIH0sXG4gICAgICAgICAgbnVtYmVyOiB7IG5hbWU6IFwiTnVtYmVyXCIsIHR5cGU6IFwicmVnZXhcIiwgcmVnZXg6IFwiKFsrLV0/XFxcXGQrKFxcXFwuXFxcXGQqKT8oW2VFXVsrLV0/WzAtOV0rKT8pP1wiLCBtZXNzYWdlOiBcIk11c3QgYmUgYSBudW1iZXI8IS0tIGRhdGEtdmFsaWRhdG9yLW51bWJlci1tZXNzYWdlIHRvIG92ZXJyaWRlIC0tPlwiIH0sXG4gICAgICAgICAgaW50ZWdlcjogeyBuYW1lOiBcIkludGVnZXJcIiwgdHlwZTogXCJyZWdleFwiLCByZWdleDogXCJbKy1dP1xcXFxkK1wiLCBtZXNzYWdlOiBcIk5vIGRlY2ltYWwgcGxhY2VzIGFsbG93ZWQ8IS0tIGRhdGEtdmFsaWRhdG9yLWludGVnZXItbWVzc2FnZSB0byBvdmVycmlkZSAtLT5cIiB9LFxuICAgICAgICAgIHBvc2l0aXZlbnVtYmVyOiB7IG5hbWU6IFwiUG9zaXRpdmVudW1iZXJcIiwgdHlwZTogXCJtaW5cIiwgbWluOiAwLCBtZXNzYWdlOiBcIk11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXI8IS0tIGRhdGEtdmFsaWRhdG9yLXBvc2l0aXZlbnVtYmVyLW1lc3NhZ2UgdG8gb3ZlcnJpZGUgLS0+XCIgfSxcbiAgICAgICAgICBuZWdhdGl2ZW51bWJlcjogeyBuYW1lOiBcIk5lZ2F0aXZlbnVtYmVyXCIsIHR5cGU6IFwibWF4XCIsIG1heDogMCwgbWVzc2FnZTogXCJNdXN0IGJlIGEgbmVnYXRpdmUgbnVtYmVyPCEtLSBkYXRhLXZhbGlkYXRvci1uZWdhdGl2ZW51bWJlci1tZXNzYWdlIHRvIG92ZXJyaWRlIC0tPlwiIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IHsgbmFtZTogXCJSZXF1aXJlZFwiLCB0eXBlOiBcInJlcXVpcmVkXCIsIG1lc3NhZ2U6IFwiVGhpcyBpcyByZXF1aXJlZDwhLS0gZGF0YS12YWxpZGF0b3ItcmVxdWlyZWQtbWVzc2FnZSB0byBvdmVycmlkZSAtLT5cIiB9LFxuICAgICAgICAgIGNoZWNrb25lOiB7IG5hbWU6IFwiQ2hlY2tvbmVcIiwgdHlwZTogXCJtaW5jaGVja2VkXCIsIG1pbmNoZWNrZWQ6IDEsIG1lc3NhZ2U6IFwiQ2hlY2sgYXQgbGVhc3Qgb25lIG9wdGlvbjwhLS0gZGF0YS12YWxpZGF0aW9uLWNoZWNrb25lLW1lc3NhZ2UgdG8gb3ZlcnJpZGUgLS0+XCIgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIGEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oXnxcXHMpKFthLXpdKS9nLCBmdW5jdGlvbiAoYSwgdCwgZSkge1xuICAgICAgICAgIHJldHVybiB0ICsgZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBuID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIGUgPSB0LnZhbCgpLFxuICAgICAgICAgIGkgPSB0LmF0dHIoXCJ0eXBlXCIpO1xuICAgICAgICByZXR1cm4gXCJjaGVja2JveFwiID09PSBpICYmIChlID0gdC5pcyhcIjpjaGVja2VkXCIpID8gZSA6IFwiXCIpLCBcInJhZGlvXCIgPT09IGkgJiYgKGUgPSBhKCdpbnB1dFtuYW1lPVwiJyArIHQuYXR0cihcIm5hbWVcIikgKyAnXCJdOmNoZWNrZWQnKS5sZW5ndGggPiAwID8gZSA6IFwiXCIpLCBlO1xuICAgICAgfTtcbiAgICAoYS5mbi5qcUJvb3RzdHJhcFZhbGlkYXRpb24gPSBmdW5jdGlvbiAodCkge1xuICAgICAgcmV0dXJuIGUubWV0aG9kc1t0XVxuICAgICAgICA/IGUubWV0aG9kc1t0XS5hcHBseSh0aGlzLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKVxuICAgICAgICA6IFwib2JqZWN0XCIgIT0gdHlwZW9mIHQgJiYgdFxuICAgICAgICA/IChhLmVycm9yKFwiTWV0aG9kIFwiICsgdCArIFwiIGRvZXMgbm90IGV4aXN0IG9uIGpRdWVyeS5qcUJvb3RzdHJhcFZhbGlkYXRpb25cIiksIG51bGwpXG4gICAgICAgIDogZS5tZXRob2RzLmluaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9KSxcbiAgICAgIChhLmpxQm9vdHN0cmFwVmFsaWRhdGlvbiA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIGEoXCI6aW5wdXRcIikubm90KFwiW3R5cGU9aW1hZ2VdLFt0eXBlPXN1Ym1pdF1cIikuanFCb290c3RyYXBWYWxpZGF0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9KTtcbiAgfSkoalF1ZXJ5KTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDZixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDZCxNQUFNLENBQUMsR0FBRztBQUNWLFFBQVEsT0FBTyxFQUFFO0FBQ2pCLFVBQVUsd0JBQXdCLEVBQUUsS0FBRTtBQUN0QyxVQUFVLFNBQVMsRUFBRSxJQUFFO0FBQ3ZCLFVBQVUsYUFBYSxFQUFFLElBQUU7QUFDM0IsVUFBVSxXQUFXLEVBQUUsS0FBRTtBQUN6QixVQUFVLGFBQWEsRUFBRSxLQUFFO0FBQzNCLFVBQVUsa0JBQWtCLEVBQUUsS0FBRTtBQUNoQyxVQUFVLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFFLEVBQUU7QUFDckMsVUFBVSxNQUFNLEVBQUUsWUFBWTtBQUM5QixZQUFZLE9BQU8sSUFBRTtBQUNyQixXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVEsT0FBTyxFQUFFO0FBQ2pCLFVBQVUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQzdCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN2QyxZQUFZLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDbEQsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTTtBQUM1QixjQUFjLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWTtBQUNuQyxnQkFBZ0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxlQUFlLENBQUMsQ0FBQyxPQUFPO0FBQ3hCLGFBQWE7QUFDYixZQUFZO0FBQ1osY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRTtBQUMvQyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMvQixrQkFBa0IsQ0FBQyxHQUFHLENBQUM7QUFDdkIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ2hILGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO0FBQ3hGLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QyxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDL0Qsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDOUYsbUJBQW1CLENBQUM7QUFDcEIsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUM7QUFDN0Qsa0JBQWtCO0FBQ2xCLHVCQUF1QixDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsZUFBZSxFQUFFLElBQUUsQ0FBQyxDQUFDO0FBQzNNLHVCQUF1QixDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEgsZUFBZSxDQUFDO0FBQ2hCLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ3BDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQy9CLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDdEQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNuRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQy9DLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRztBQUNuTSxrQkFBa0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUM1QixrQkFBa0I7QUFDbEIscUJBQXFCLFNBQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUNqRCx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsZ0ZBQWdGO0FBQzVHLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUNwRyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7QUFDM0Qsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzFFLG9CQUFvQixTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDbEYsb0JBQW9CO0FBQ3BCLG9CQUFvQixJQUFJLENBQUMsR0FBRyxTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQzlGLG9CQUFvQixDQUFDLENBQUMsR0FBRyx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsbURBQW1EO0FBQzNHLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUM1RixzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFDdkQsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBQ25EO0FBQ0Esa0JBQWtCLElBQUksU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7QUFDdEYsb0JBQW9CLElBQUksQ0FBQyxHQUFHLFNBQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDOUYsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixHQUFHLENBQUMsR0FBRyxtREFBbUQ7QUFDMUcsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQzVGLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztBQUN2RCxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFDbkQ7QUFDQSxrQkFBa0IsU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ2hELHFCQUFxQixDQUFDLENBQUMsR0FBRyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLG9FQUFvRTtBQUMvSSxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDdEcsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0FBQzNELG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNoRixvQkFBb0IsU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0FBQ2xELHVCQUF1QixDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLG9FQUFvRTtBQUNsSixzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDeEcsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0FBQzdELHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNsRixvQkFBb0IsQ0FBQyxTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDeEYsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1TCxvQkFBb0IsU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzdDLHNCQUFzQixRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUU7QUFDL0QsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwTCxvQkFBb0IsU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzdDLHNCQUFzQixPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUU7QUFDOUQsdUJBQXVCLENBQUMsQ0FBQyxHQUFHLGlGQUFpRjtBQUM3RyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDdEwsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0Qsb0JBQW9CLFNBQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUNuRCx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsMENBQTBDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxtRUFBbUU7QUFDbkssc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBQzFHLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQztBQUM5RCxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDckYsb0JBQW9CLFNBQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUNuRCx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsd0NBQXdDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxtRUFBbUU7QUFDakssc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBQzFHLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQztBQUM5RCxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDckY7QUFDQSxnQkFBZ0IsU0FBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hGLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbkQsb0JBQW9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDbkUsb0JBQW9CLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLG1CQUFtQixDQUFDO0FBQ3BCLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3pCLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtBQUN4QixnQkFBZ0I7QUFDaEIsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM1QyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsbUJBQW1CLENBQUM7QUFDcEIscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7QUFDM0Isb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM5QyxzQkFBc0IsSUFBSSxTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUMxRSx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkMseUJBQXlCLENBQUM7QUFDMUIsMkJBQTJCLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0FBQ3JFLHdCQUF3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3BFLHdCQUF3QixVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDM0QsMEJBQTBCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hFLDRCQUE0QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RCwyQkFBMkIsQ0FBQztBQUM1QjtBQUNBLHFCQUFxQixDQUFDO0FBQ3RCLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLHVCQUF1QixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDbkMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDMUIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMxQyxrQkFBa0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM5RCxvQkFBb0IsQ0FBQyxHQUFHLFNBQU0sS0FBSyxDQUFDO0FBQ3BDLG9CQUFvQixDQUFDLEdBQUcsS0FBRTtBQUMxQixrQkFBa0I7QUFDbEIscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLDBEQUEwRCxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRywrQ0FBK0M7QUFDdkssb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDN0Qsc0JBQXNCLFNBQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxTQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBRSxDQUFDLENBQUM7QUFDaE0scUJBQXFCLENBQUM7QUFDdEIsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDOUQsb0JBQW9CO0FBQ3BCLG9CQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2xGLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDeEMsb0JBQW9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ2hELG9CQUFvQixVQUFVLEtBQUs7QUFDbkMseUJBQXlCLENBQUMsR0FBRyxJQUFFO0FBQy9CLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2pFLDBCQUEwQixTQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUUsQ0FBQyxDQUFDO0FBQ3ZNLHlCQUF5QixDQUFDO0FBQzFCO0FBQ0Esa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDN0UsaUJBQWlCLENBQUM7QUFDbEIsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkgsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdHLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0SCxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDN0ksa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xFLG9CQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtBQUM1QixvQkFBb0I7QUFDcEIsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNoRCx3QkFBd0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUM3RywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3BELDRCQUE0QixDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN0RiwyQkFBMkIsQ0FBQztBQUM1Qix1QkFBdUIsQ0FBQztBQUN4QixzQkFBc0I7QUFDdEI7QUFDQSxtQkFBbUIsQ0FBQztBQUNwQixrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxZQUFZO0FBQ2pFLG9CQUFvQixPQUFPLENBQUM7QUFDNUIsbUJBQW1CLENBQUM7QUFDcEIsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsWUFBWTtBQUMxRCxvQkFBb0IsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUUsRUFBRSxDQUFDO0FBQ3BGLG1CQUFtQixDQUFDO0FBQ3BCLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLDZIQUE2SCxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN4SyxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUU7QUFDNUIsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pFLHNCQUFzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTTtBQUN0QyxzQkFBc0I7QUFDdEIseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDakcsMEJBQTBCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25DLHlCQUF5QixDQUFDO0FBQzFCLHdCQUF3QixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDcEM7QUFDQSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO0FBQ3pELDJCQUEyQjtBQUMzQix3QkFBd0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztBQUMvRCx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEU7QUFDQSxxQkFBcUIsQ0FBQztBQUN0QixzQkFBc0I7QUFDdEIseUJBQXlCLElBQUksQ0FBQyx1QkFBdUI7QUFDckQseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLHlCQUF5QixHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSTtBQUM5RCx5QkFBeUIsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO0FBQ2xFLHNCQUFzQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQy9DLDJCQUEyQixDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDN0UsMEJBQTBCLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRSw4QkFBOEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25ILDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzVLLDJCQUEyQixDQUFDLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQzlJLHNCQUFzQixNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztBQUNuRSxtQkFBbUIsQ0FBQztBQUNwQixrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxZQUFZO0FBQ3ZFLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztBQUM1QyxtQkFBbUIsQ0FBQztBQUNwQixlQUFlO0FBQ2Y7QUFDQSxXQUFXO0FBQ1gsVUFBVSxPQUFPLEVBQUUsWUFBWTtBQUMvQixZQUFZLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ3pDLGNBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ3BELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDakQsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztBQUNyQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDbkQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUMzRCxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3ZFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZELGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ2xELGFBQWEsQ0FBQztBQUNkLFdBQVc7QUFDWCxVQUFVLGFBQWEsRUFBRSxVQUFVLENBQUMsRUFBRTtBQUN0QyxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDdEIsWUFBWTtBQUNaLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDeEMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNwQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBRSxFQUFFLENBQUM7QUFDckYsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDLGVBQWUsQ0FBQztBQUNoQixjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN4QyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLGVBQWUsQ0FBQztBQUNoQixjQUFjO0FBQ2Q7QUFDQSxXQUFXO0FBQ1gsVUFBVSxTQUFTLEVBQUUsWUFBWTtBQUNqQyxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDdEIsWUFBWTtBQUNaLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDeEMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JKLGVBQWUsQ0FBQztBQUNoQixjQUFjLENBQUMsQ0FBQyxNQUFNLEdBQUc7QUFDekI7QUFDQSxXQUFXO0FBQ1gsVUFBVSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUU7QUFDakMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQyxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVEsY0FBYyxFQUFFO0FBQ3hCLFVBQVUsUUFBUSxFQUFFO0FBQ3BCLFlBQVksSUFBSSxFQUFFLFVBQVU7QUFDNUIsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLGNBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFFLEVBQUUsWUFBWSxFQUFFLElBQUUsRUFBRTtBQUMvSSxhQUFhO0FBQ2IsWUFBWSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QyxjQUFjLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFDMUU7QUFDQSxjQUFjLElBQUksSUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUU7QUFDekMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFFLElBQUksQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFFLENBQUM7QUFDNUUsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDekIsa0JBQWtCLENBQUMsR0FBRyxDQUFDO0FBQ3ZCLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNuQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwSixrQkFBa0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDNUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRTtBQUMxRCxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsS0FBSztBQUN6QyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLO0FBQzNDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN4RCxxQkFBcUIsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFFO0FBQ3hDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsYUFBYSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ2pGLG9CQUFvQixVQUFVLENBQUMsWUFBWTtBQUMzQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUNwRCxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQixpQkFBaUIsQ0FBQztBQUNsQjtBQUNBLGNBQWMsT0FBTyxLQUFFO0FBQ3ZCLGFBQWE7QUFDYixXQUFXO0FBQ1gsVUFBVSxJQUFJLEVBQUU7QUFDaEIsWUFBWSxJQUFJLEVBQUUsTUFBTTtBQUN4QixZQUFZLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEMsY0FBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUUsRUFBRSxZQUFZLEVBQUUsSUFBRSxFQUFFO0FBQ3RJLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pDO0FBQ0EsY0FBYyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1RDtBQUNBLGtCQUFrQixLQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsbUJBQW1CLElBQUUsS0FBSyxDQUFDLENBQUMsWUFBWTtBQUN4QyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUM7QUFDckMscUJBQXFCLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBRTtBQUNyQyxxQkFBcUIsQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFFO0FBQ3hDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNCLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUc7QUFDaEMsc0JBQXNCLElBQUksRUFBRSxRQUFRLEdBQUcsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNyRSxzQkFBc0IsUUFBUSxFQUFFLE1BQU07QUFDdEMsc0JBQXNCLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtBQUM1Qyx3QkFBd0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLO0FBQ3hELDJCQUEyQixDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ25ELDBCQUEwQixDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM5RCwyQkFBMkIsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFFO0FBQzlDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsYUFBYSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3ZGLDBCQUEwQixVQUFVLENBQUMsWUFBWTtBQUNqRCw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUMxRCwyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQyx1QkFBdUI7QUFDdkIsc0JBQXNCLE9BQU8sRUFBRSxZQUFZO0FBQzNDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBRTtBQUN6QywyQkFBMkIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxrQkFBa0I7QUFDekQsMkJBQTJCLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBRTtBQUM5QywwQkFBMEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLGFBQWEsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN2RiwwQkFBMEIsVUFBVSxDQUFDLFlBQVk7QUFDakQsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDMUQsMkJBQTJCLEVBQUUsQ0FBQyxDQUFDO0FBQy9CLHVCQUF1QjtBQUN2QixxQkFBcUIsQ0FBQyxDQUFDO0FBQ3ZCLGtCQUFrQixLQUFFLENBQUM7QUFDckIsYUFBYTtBQUNiLFdBQVc7QUFDWCxVQUFVLEtBQUssRUFBRTtBQUNqQixZQUFZLElBQUksRUFBRSxPQUFPO0FBQ3pCLFlBQVksSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsQyxjQUFjLElBQUksQ0FBQztBQUNuQixjQUFjLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDakcsYUFBYTtBQUNiLFlBQVksUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekMsY0FBYyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN6RixhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVUsUUFBUSxFQUFFO0FBQ3BCLFlBQVksSUFBSSxFQUFFLFVBQVU7QUFDNUIsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLGNBQWMsT0FBTyxFQUFFO0FBQ3ZCLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pDLGNBQWMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEYsYUFBYTtBQUNiLFlBQVksV0FBVyxFQUFFLElBQUU7QUFDM0IsV0FBVztBQUNYLFVBQVUsS0FBSyxFQUFFO0FBQ2pCLFlBQVksSUFBSSxFQUFFLE9BQU87QUFDekIsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLGNBQWMsSUFBSSxDQUFDLEdBQUc7QUFDdEIsaUJBQWlCLE9BQU8sQ0FBQyxNQUFNO0FBQy9CLGlCQUFpQixLQUFLO0FBQ3RCLGlCQUFpQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJO0FBQzNFLGlCQUFpQixLQUFLLEVBQUU7QUFDeEIsY0FBYztBQUNkLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFlBQVk7QUFDNUQsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBRSxFQUFFLENBQUM7QUFDcEUsaUJBQWlCLENBQUM7QUFDbEIsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDNUI7QUFDQSxhQUFhO0FBQ2IsWUFBWSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QyxjQUFjLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNwRyxhQUFhO0FBQ2IsWUFBWSxXQUFXLEVBQUUsSUFBRTtBQUMzQixXQUFXO0FBQ1gsVUFBVSxHQUFHLEVBQUU7QUFDZixZQUFZLElBQUksRUFBRSxLQUFLO0FBQ3ZCLFlBQVksSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsQyxjQUFjLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFO0FBQzlELGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pDLGNBQWMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM3SSxhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVUsR0FBRyxFQUFFO0FBQ2YsWUFBWSxJQUFJLEVBQUUsS0FBSztBQUN2QixZQUFZLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEMsY0FBYyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtBQUM5RCxhQUFhO0FBQ2IsWUFBWSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QyxjQUFjLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUM3SCxhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVUsU0FBUyxFQUFFO0FBQ3JCLFlBQVksSUFBSSxFQUFFLFdBQVc7QUFDN0IsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLGNBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUU7QUFDMUUsYUFBYTtBQUNiLFlBQVksUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekMsY0FBYyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN2RyxhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVUsU0FBUyxFQUFFO0FBQ3JCLFlBQVksSUFBSSxFQUFFLFdBQVc7QUFDN0IsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLGNBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUU7QUFDMUUsYUFBYTtBQUNiLFlBQVksUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekMsY0FBYyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN2RyxhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVUsVUFBVSxFQUFFO0FBQ3RCLFlBQVksSUFBSSxFQUFFLFlBQVk7QUFDOUIsWUFBWSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLGNBQWMsSUFBSSxDQUFDLEdBQUc7QUFDdEIsaUJBQWlCLE9BQU8sQ0FBQyxNQUFNO0FBQy9CLGlCQUFpQixLQUFLO0FBQ3RCLGlCQUFpQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3hELGNBQWM7QUFDZCxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZO0FBQ3ZELGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUUsRUFBRSxDQUFDO0FBQ3RFLGlCQUFpQixDQUFDO0FBQ2xCLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDbEY7QUFDQSxhQUFhO0FBQ2IsWUFBWSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QyxjQUFjLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNqSyxhQUFhO0FBQ2IsWUFBWSxXQUFXLEVBQUUsSUFBRTtBQUMzQixXQUFXO0FBQ1gsVUFBVSxVQUFVLEVBQUU7QUFDdEIsWUFBWSxJQUFJLEVBQUUsWUFBWTtBQUM5QixZQUFZLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbEMsY0FBYyxJQUFJLENBQUMsR0FBRztBQUN0QixpQkFBaUIsT0FBTyxDQUFDLE1BQU07QUFDL0IsaUJBQWlCLEtBQUs7QUFDdEIsaUJBQWlCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDeEQsY0FBYztBQUNkLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQVk7QUFDdkQsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBRSxFQUFFLENBQUM7QUFDdEUsaUJBQWlCLENBQUM7QUFDbEIsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNsRjtBQUNBLGFBQWE7QUFDYixZQUFZLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pDLGNBQWMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ2pLLGFBQWE7QUFDYixZQUFZLFdBQVcsRUFBRSxJQUFFO0FBQzNCLFdBQVc7QUFDWCxTQUFTO0FBQ1QsUUFBUSxpQkFBaUIsRUFBRTtBQUMzQixVQUFVLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFO0FBQzVFLFVBQVUsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxrREFBa0QsRUFBRSxPQUFPLEVBQUUsaUZBQWlGLEVBQUU7QUFDbE4sVUFBVSxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsMkZBQTJGLEVBQUU7QUFDMUwsVUFBVSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFO0FBQzdGLFVBQVUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTtBQUM3RixVQUFVLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsMENBQTBDLEVBQUUsT0FBTyxFQUFFLG9FQUFvRSxFQUFFO0FBQ3JMLFVBQVUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLDhFQUE4RSxFQUFFO0FBQ2xLLFVBQVUsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUscUZBQXFGLEVBQUU7QUFDekssVUFBVSxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxRkFBcUYsRUFBRTtBQUN6SyxVQUFVLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsc0VBQXNFLEVBQUU7QUFDM0ksVUFBVSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0ZBQWdGLEVBQUU7QUFDdEssU0FBUztBQUNULE9BQU87QUFDUCxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtBQUN2QixRQUFRLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzVFLFVBQVUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRTtBQUNwQyxTQUFTLENBQUM7QUFDVixPQUFPO0FBQ1AsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDdkIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO0FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzVCLFFBQVEsT0FBTyxVQUFVLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNuSyxPQUFPO0FBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDL0MsTUFBTSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QixVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUMzRSxVQUFVLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSTtBQUNsQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxpREFBaUQsQ0FBQyxFQUFFLElBQUk7QUFDM0YsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztBQUMvQyxLQUFLO0FBQ0wsT0FBTyxDQUFDLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDOUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7QUFDbEcsT0FBTyxDQUFDO0FBQ1IsR0FBRyxFQUFFLE1BQU0sQ0FBQyJ9
|