galaxy-commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
June 2014
- 1 participants
- 233 discussions
commit/galaxy-central: dan: Fix for Safari Caching External View application 302 redirect links. See https://trello.com/c/optldnPm
by commits-noreply@bitbucket.org 04 Jun '14
by commits-noreply@bitbucket.org 04 Jun '14
04 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c68aa8a8e769/
Changeset: c68aa8a8e769
Branch: stable
User: dan
Date: 2014-06-03 23:03:17
Summary: Fix for Safari Caching External View application 302 redirect links. See https://trello.com/c/optldnPm
Affected #: 1 file
diff -r f9c050410d6a56d7f6fe503b4f22f286bd5a40e2 -r c68aa8a8e769437473bd23586d1b55fc66cc8c47 lib/galaxy/webapps/galaxy/controllers/dataset.py
--- a/lib/galaxy/webapps/galaxy/controllers/dataset.py
+++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py
@@ -738,6 +738,8 @@
return rval
elif app_action == None:
#redirect user to url generated by display link
+ #Fix for Safari caching display links, which can change if the underlying dataset has an attribute change, e.g. name, metadata, etc
+ trans.response.headers[ 'Cache-Control' ] = [ 'no-cache', 'max-age=0', 'no-store', 'must-revalidate' ]
return trans.response.send_redirect( display_link.display_url() )
else:
msg.append( ( 'Invalid action provided: %s' % app_action, 'error' ) )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: Charts: Improve notifications and error handling
by commits-noreply@bitbucket.org 04 Jun '14
by commits-noreply@bitbucket.org 04 Jun '14
04 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/0cb88fa06c32/
Changeset: 0cb88fa06c32
User: guerler
Date: 2014-06-04 09:54:54
Summary: Charts: Improve notifications and error handling
Affected #: 4 files
diff -r 9c1a51c9f85f52d4570dede166155700130d8234 -r 0cb88fa06c32e13c8881ed90af02b239aa574313 config/plugins/visualizations/charts/static/charts/highcharts/common/wrapper.js
--- a/config/plugins/visualizations/charts/static/charts/highcharts/common/wrapper.js
+++ b/config/plugins/visualizations/charts/static/charts/highcharts/common/wrapper.js
@@ -30,22 +30,28 @@
this.app.datasets.request(request_dictionary, function() {
if (self.options.canvas.length == 1) {
// groups
- self._drawGroups(hc_type, chart, request_dictionary.groups, self.options.canvas[0]);
-
- // set chart state
- chart.state('ok', 'Chart drawn.');
+ if (self._drawGroups(hc_type, chart, request_dictionary.groups, self.options.canvas[0])) {
+ // set chart state
+ chart.state('ok', 'Chart drawn.');
+ }
} else {
// loop through data groups
+ var valid = true;
for (var group_index in request_dictionary.groups) {
// get group
var group = request_dictionary.groups[group_index];
// draw group
- self._drawGroups(hc_type, chart, [group], self.options.canvas[group_index]);
+ if (!self._drawGroups(hc_type, chart, [group], self.options.canvas[group_index])) {
+ valid = false;
+ break;
+ }
}
// set chart state
- chart.state('ok', 'Multi-panel chart drawn.');
+ if (valid) {
+ chart.state('ok', 'Multi-panel chart drawn.');
+ }
}
// unregister process
@@ -90,7 +96,19 @@
}
// draw plot
- canvas.highcharts(this.hc_config);
+ try {
+ canvas.highcharts(this.hc_config);
+ return true;
+ } catch (err) {
+ var regex = /\www\.highcharts\.com([^&]+)/;
+ var match = err.match(regex);
+ if (match.length > 0) {
+ chart.state('failed', 'Highcharts error: <a target="_blank" href="http://' + match[0] + '">' + match[0] + '</a>');
+ } else {
+ chart.state('failed', err);
+ }
+ return false;
+ }
}
});
diff -r 9c1a51c9f85f52d4570dede166155700130d8234 -r 0cb88fa06c32e13c8881ed90af02b239aa574313 config/plugins/visualizations/charts/static/views/editor.js
--- a/config/plugins/visualizations/charts/static/views/editor.js
+++ b/config/plugins/visualizations/charts/static/views/editor.js
@@ -28,6 +28,9 @@
// configure options
this.options = Utils.merge(options, this.optionsDefault);
+ // message element
+ this.message = new Ui.Message();
+
// create portlet
this.portlet = new Portlet.View({
icon : 'fa-bar-chart-o',
@@ -38,10 +41,6 @@
tooltip : 'Draw Chart',
title : 'Draw',
onclick : function() {
- // show viewport
- self.app.go('viewer');
-
- // save chart
self._saveChart();
}
}),
@@ -75,10 +74,6 @@
self.chart.set('modified', true);
},
ondblclick : function(chart_id) {
- // show viewport
- self.app.go('viewer');
-
- // save chart
self._saveChart();
}
});
@@ -135,6 +130,7 @@
});
// append tabs
+ this.portlet.append(this.message.$el);
this.portlet.append(this.tabs.$el);
// elements
@@ -266,6 +262,35 @@
// create chart
_saveChart: function() {
+ // ensure that data group is available
+ if (this.chart.groups.length == 0) {
+ var group = this._addGroupModel();
+ this.tabs.show(group.id);
+ return;
+ }
+
+ // very selected group columns
+ var self = this;
+ var valid = true;
+ this.chart.groups.each(function(group) {
+ for (var key in group.attributes) {
+ if (group.attributes[key] == 'null') {
+ self.message.update({status: 'danger', message: 'This chart type requires column types not found in your tabular file.'});
+ self.tabs.show(group.id);
+ valid = false;
+ return;
+ }
+ }
+ });
+
+ // validate if columns have been selected
+ if (!valid) {
+ return;
+ }
+
+ // show viewport
+ this.app.go('viewer');
+
// update chart data
this.chart.set({
type : this.types.value(),
@@ -273,11 +298,6 @@
date : Utils.time()
});
- // ensure that data group is available
- if (this.chart.groups.length == 0) {
- this._addGroupModel();
- }
-
// wait until chart is ready
var self = this;
this.chart.deferred.execute(function() {
diff -r 9c1a51c9f85f52d4570dede166155700130d8234 -r 0cb88fa06c32e13c8881ed90af02b239aa574313 config/plugins/visualizations/charts/static/views/viewer.js
--- a/config/plugins/visualizations/charts/static/views/viewer.js
+++ b/config/plugins/visualizations/charts/static/views/viewer.js
@@ -21,6 +21,9 @@
// link this
var self = this;
+ // message element
+ this.message = new Ui.Message();
+
// create portlet
this.portlet = new Portlet.View({
icon : 'fa-bar-chart-o',
@@ -53,6 +56,7 @@
});
// append portlet
+ this.portlet.append(this.message.$el);
this.portlet.append(this.viewport_view.$el);
// set element
@@ -91,22 +95,7 @@
if (chart.deferred.ready()) {
callback();
} else {
- // show modal
- var self = this;
- this.app.modal.show({
- title : 'Please wait!',
- body : 'Your chart is currently being processed. Please wait and try again.',
- buttons : {
- 'Close' : function() {self.app.modal.hide();},
- 'Retry' : function() {
- // hide modal
- self.app.modal.hide();
-
- // retry
- setTimeout(function() { self._wait(chart, callback); }, self.app.config.get('query_timeout'));
- }
- }
- });
+ this.message.update({message: 'Your chart is currently being processed. Please wait and try again.'});
}
}
});
diff -r 9c1a51c9f85f52d4570dede166155700130d8234 -r 0cb88fa06c32e13c8881ed90af02b239aa574313 config/plugins/visualizations/charts/static/views/viewport.js
--- a/config/plugins/visualizations/charts/static/views/viewport.js
+++ b/config/plugins/visualizations/charts/static/views/viewport.js
@@ -39,7 +39,7 @@
this.chart.on('set:state', function() {
// get info element
var $info = self.$el.find('#info');
- var $container = self.$el.find('container');
+ var $container = self.$el.find('.charts-viewport-container');
// get icon
var $icon = $info.find('#icon');
@@ -51,21 +51,20 @@
$info.show();
$info.find('#text').html(self.chart.get('state_info'));
- // hide containers
- $container.hide();
-
// check status
var state = self.chart.get('state');
switch (state) {
case 'ok':
$info.hide();
- $container.show()
+ $container.show();
break;
case 'failed':
$icon.addClass('icon fa fa-warning');
+ $container.hide();
break;
default:
$icon.addClass('icon fa fa-spinner fa-spin');
+ $container.show();
}
});
},
@@ -182,7 +181,6 @@
}
);
} else {
- // load data into view
view.draw(process_id, chart, self._defaultRequestDictionary(chart));
}
});
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: Charts: Extend boxplot options
by commits-noreply@bitbucket.org 04 Jun '14
by commits-noreply@bitbucket.org 04 Jun '14
04 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/9c1a51c9f85f/
Changeset: 9c1a51c9f85f
User: guerler
Date: 2014-06-04 08:10:32
Summary: Charts: Extend boxplot options
Affected #: 3 files
diff -r c93e85d8ac0d28ea07a985ddd15f014216dd6ddb -r 9c1a51c9f85f52d4570dede166155700130d8234 config/plugins/visualizations/charts/static/charts/highcharts/boxplot/config.js
--- a/config/plugins/visualizations/charts/static/charts/highcharts/boxplot/config.js
+++ b/config/plugins/visualizations/charts/static/charts/highcharts/boxplot/config.js
@@ -1,6 +1,6 @@
-define([], function() {
+define(['plugin/charts/highcharts/common/config'], function(config) {
-return $.extend(true, {}, {
+return $.extend(true, {}, config, {
title : 'Box plot',
category : 'Data processing (requires \'charts\' tool from Toolshed)',
library : 'Highcharts',
diff -r c93e85d8ac0d28ea07a985ddd15f014216dd6ddb -r 9c1a51c9f85f52d4570dede166155700130d8234 config/plugins/visualizations/charts/static/charts/highcharts/boxplot/wrapper.js
--- a/config/plugins/visualizations/charts/static/charts/highcharts/boxplot/wrapper.js
+++ b/config/plugins/visualizations/charts/static/charts/highcharts/boxplot/wrapper.js
@@ -29,7 +29,7 @@
chart.settings.set('legend_enabled', 'false')
// create configuration
- this.hc_config = configmaker(chart.settings);
+ this.hc_config = configmaker(chart, chart.settings);
// request data
var self = this;
diff -r c93e85d8ac0d28ea07a985ddd15f014216dd6ddb -r 9c1a51c9f85f52d4570dede166155700130d8234 config/plugins/visualizations/charts/static/charts/highcharts/common/highcharts-config.js
--- a/config/plugins/visualizations/charts/static/charts/highcharts/common/highcharts-config.js
+++ b/config/plugins/visualizations/charts/static/charts/highcharts/common/highcharts-config.js
@@ -36,6 +36,8 @@
},
labels: {
formatter : function() {
+ if (settings.get('x_axis_type') == 'auto')
+ return this.value;
var format = d3.format(settings.get('x_axis_tick') + settings.get('x_axis_type'));
return format(this.value);
},
@@ -50,6 +52,8 @@
},
labels: {
formatter : function() {
+ if (settings.get('y_axis_type') == 'auto')
+ return this.value;
var format = d3.format(settings.get('y_axis_tick') + settings.get('y_axis_type'));
return format(this.value);
},
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: Charts: Remove helper function
by commits-noreply@bitbucket.org 04 Jun '14
by commits-noreply@bitbucket.org 04 Jun '14
04 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c93e85d8ac0d/
Changeset: c93e85d8ac0d
User: guerler
Date: 2014-06-04 07:52:58
Summary: Charts: Remove helper function
Affected #: 1 file
diff -r 2df424fc0536831e49b09d4d2ffa3a111fba1282 -r c93e85d8ac0d28ea07a985ddd15f014216dd6ddb config/plugins/visualizations/charts/static/charts/highcharts/common/highcharts-config.js
--- a/config/plugins/visualizations/charts/static/charts/highcharts/common/highcharts-config.js
+++ b/config/plugins/visualizations/charts/static/charts/highcharts/common/highcharts-config.js
@@ -3,15 +3,6 @@
// widget
return function(chart, settings) {
- // helper label enabled
- var labelEnabled = function(axis) {
- if (settings.get(axis + '_type') == 'hide') {
- return false;
- } else {
- return true;
- }
- };
-
// highcharts configuration
return {
chart: {
@@ -48,7 +39,7 @@
var format = d3.format(settings.get('x_axis_tick') + settings.get('x_axis_type'));
return format(this.value);
},
- enabled : labelEnabled('x_axis')
+ enabled : !(settings.get('x_axis_type') == 'hide')
},
tickPixelInterval : 100
},
@@ -62,7 +53,7 @@
var format = d3.format(settings.get('y_axis_tick') + settings.get('y_axis_type'));
return format(this.value);
},
- enabled : labelEnabled('y_axis')
+ enabled : !(settings.get('y_axis_type') == 'hide')
}
},
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: guerler: Charts: Adding chart subset selection filter, setting zoomable charts as default
by commits-noreply@bitbucket.org 04 Jun '14
by commits-noreply@bitbucket.org 04 Jun '14
04 Jun '14
MSBuZXcgY29tbWl0IGluIGdhbGF4eS1jZW50cmFsOgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh
bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzJkZjQyNGZjMDUzNi8KQ2hhbmdlc2V0OiAgIDJk
ZjQyNGZjMDUzNgpVc2VyOiAgICAgICAgZ3VlcmxlcgpEYXRlOiAgICAgICAgMjAxNC0wNi0wNCAw
Nzo0OTo0MwpTdW1tYXJ5OiAgICAgQ2hhcnRzOiBBZGRpbmcgY2hhcnQgc3Vic2V0IHNlbGVjdGlv
biBmaWx0ZXIsIHNldHRpbmcgem9vbWFibGU9CiBjaGFydHMgYXMgZGVmYXVsdApBZmZlY3RlZCAj
OiAgMzEgZmlsZXMKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEzMjMwYzI5YTcy
MTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTExMWZiYTEyODIgY29uZmln
L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRz
L2Jhci9jb25maWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRz
L3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9iYXIvY29uPQpmaWcuanMKKysrIGIvY29uZmlnL3Bs
dWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9iYXIv
Y29uPQpmaWcuanMKQEAgLTMsNiArMyw3IEBACiByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIGNv
bmZpZywgewogICAgIHRpdGxlICAgICAgIDogJ1JlZ3VsYXInLAogICAgIGNhdGVnb3J5ICAgIDog
J0JhciBkaWFncmFtcycsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBoaWdoY2hhcnRzJywK
ICAgICBjb2x1bW5zICAgICA6IHsKICAgICAgICAgeCA6IHsKICAgICAgICAgICAgIHRpdGxlICAg
ICAgIDogJ1ZhbHVlcyBmb3IgeC1heGlzJywKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdj
ZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTEx
MWZiYTEyODIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFy
dHMvaGlnaGNoPQphcnRzL2Jhcl9ob3Jpem9udGFsL2NvbmZpZy5qcwotLS0gYS9jb25maWcvcGx1
Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2Jhcl9o
b3I9Cml6b250YWwvY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z
L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFyX2hvcj0KaXpvbnRhbC9jb25maWcu
anMKQEAgLTMsNiArMyw3IEBACiByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIGNvbmZpZywgewog
ICAgIHRpdGxlICAgICAgIDogJ0hvcml6b250YWwnLAogICAgIGNhdGVnb3J5ICAgIDogJ0JhciBk
aWFncmFtcycsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBoaWdoY2hhcnRzJywKICAgICBj
b2x1bW5zICAgICA6IHsKICAgICAgICAgeCA6IHsKICAgICAgICAgICAgIHRpdGxlICAgICAgIDog
J1ZhbHVlcyBmb3IgeC1heGlzJywKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEz
MjMwYzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTExMWZiYTEy
ODIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGln
aGNoPQphcnRzL2Jhcl9ob3Jpem9udGFsX3N0YWNrZWQvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9w
bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFy
X2hvcj0KaXpvbnRhbF9zdGFja2VkL2NvbmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1
YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2Jhcl9ob3I9Cml6b250
YWxfc3RhY2tlZC9jb25maWcuanMKQEAgLTMsNiArMyw3IEBACiByZXR1cm4gJC5leHRlbmQodHJ1
ZSwge30sIGNvbmZpZywgewogICAgIHRpdGxlICAgICAgIDogJ1N0YWNrZWQgaG9yaXpvbnRhbCcs
CiAgICAgY2F0ZWdvcnkgICAgOiAnQmFyIGRpYWdyYW1zJywKKyAgICBrZXl3b3JkcyAgICA6ICdk
ZWZhdWx0IGhpZ2hjaGFydHMnLAogICAgIHNldHRpbmdzICAgIDogewogICAgICAgICB4X2F4aXNf
dHlwZSA6IHsKICAgICAgICAgICAgIGluaXQgOiAnaGlkZScKCmRpZmYgLXIgMWJlMDdkZTg2YzJh
NjA2NTE4YTdjZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0K
ZDJmZmEzYTExMWZiYTEyODIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0
YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2Jhcl9zdGFja2VkL2NvbmZpZy5qcwotLS0gYS9jb25m
aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRz
L2Jhcl9zdGE9CmNrZWQvY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp
b25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYmFyX3N0YT0KY2tlZC9jb25maWcu
anMKQEAgLTMsNiArMyw3IEBACiByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIGNvbmZpZywgewog
ICAgIHRpdGxlICAgICAgIDogJ1N0YWNrZWQnLAogICAgIGNhdGVnb3J5ICAgIDogJ0JhciBkaWFn
cmFtcycsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBoaWdoY2hhcnRzJywKICAgICBjb2x1
bW5zICAgICA6IHsKICAgICAgICAgeCA6IHsKICAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ1Zh
bHVlcyBmb3IgeC1heGlzJywKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEzMjMw
YzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTExMWZiYTEyODIg
Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNo
PQphcnRzL2JveHBsb3QvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp
b25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvYm94cGxvdD0KL2NvbmZpZy5qcwor
KysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9o
aWdoY2hhcnRzL2JveHBsb3Q9Ci9jb25maWcuanMKQEAgLTMsOSArMywxMCBAQAogcmV0dXJuICQu
ZXh0ZW5kKHRydWUsIHt9LCB7CiAgICAgdGl0bGUgICAgICAgOiAnQm94IHBsb3QnLAogICAgIGNh
dGVnb3J5ICAgIDogJ0RhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMgXCdjaGFydHNcJyB0b29sIGZy
b20gVG9vbHNoZWQ9CiknLAotICAgIGxpYnJhcnkgICAgIDogJ2hpZ2hjaGFydHMuanMnLAorICAg
IGxpYnJhcnkgICAgIDogJ0hpZ2hjaGFydHMnLAogICAgIHRhZyAgICAgICAgIDogJ2RpdicsCiAg
ICAgZXhlY3V0ZSAgICAgOiAnYm94cGxvdCcsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBo
aWdoY2hhcnRzJywKICAgICBjb2x1bW5zICAgICA6IHsKICAgICAgICAgeSA6IHsKICAgICAgICAg
ICAgIHRpdGxlICAgICAgIDogJ09ic2VydmF0aW9ucycsCgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYw
NjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQy
ZmZhM2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0
aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9jb21tb24vY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVn
aW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9u
Lz0KY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9z
dGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uLz0KY29uZmlnLmpzCkBAIC0zLDggKzMsOSBA
QAogcmV0dXJuIHsKICAgICB0aXRsZSAgICAgICA6ICcnLAogICAgIGNhdGVnb3J5ICAgIDogJycs
Ci0gICAgbGlicmFyeSAgICAgOiAnaGlnaGNoYXJ0cycsCisgICAgbGlicmFyeSAgICAgOiAnSGln
aGNoYXJ0cycsCiAgICAgdGFnICAgICAgICAgOiAnZGl2JywKKyAgICBrZXl3b3JkcyAgICA6ICdo
aWdoY2hhcnRzJywKICAgICBzZXR0aW5ncyAgICA6IHsKICAgICAgICAgc2VwYXJhdG9yX2xhYmVs
ICA6IHsKICAgICAgICAgICAgIHRpdGxlICAgICAgIDogJ1ggYXhpcycsCkBAIC0xOTcsNyArMTk4
LDcgQEAKICAgICAgICAgbGVnZW5kX2VuYWJsZWQgOiB7CiAgICAgICAgICAgICB0aXRsZSAgICAg
ICA6ICdTaG93IGxlZ2VuZCcsCiAgICAgICAgICAgICBpbmZvICAgICAgICA6ICdXb3VsZCB5b3Ug
bGlrZSB0byBhZGQgYSBsZWdlbmQ/JywKLSAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3NlbGVj
dCcsCisgICAgICAgICAgICB0eXBlICAgICAgICA6ICdyYWRpb2J1dHRvbicsCiAgICAgICAgICAg
ICBpbml0ICAgICAgICA6ICd0cnVlJywKICAgICAgICAgICAgIGRhdGEgICAgICAgIDogWwogICAg
ICAgICAgICAgICAgIHsKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEzMjMwYzI5
YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTExMWZiYTEyODIgY29u
ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQph
cnRzL2NvbW1vbi9oaWdoY2hhcnRzLWNvbmZpZy5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1
YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1vbi89CmhpZ2hj
aGFydHMtY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0
cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uLz0KaGlnaGNoYXJ0cy1jb25maWcuanMK
QEAgLTIsNyArMiwxNiBAQAogZGVmaW5lKFtdLCBmdW5jdGlvbigpIHsKPTIwCiAvLyB3aWRnZXQK
LXJldHVybiBmdW5jdGlvbihzZXR0aW5ncykgeworcmV0dXJuIGZ1bmN0aW9uKGNoYXJ0LCBzZXR0
aW5ncykgeworICAgIC8vIGhlbHBlciBsYWJlbCBlbmFibGVkCisgICAgdmFyIGxhYmVsRW5hYmxl
ZCA9M0QgZnVuY3Rpb24oYXhpcykgeworICAgICAgICBpZiAoc2V0dGluZ3MuZ2V0KGF4aXMgKyAn
X3R5cGUnKSA9M0Q9M0QgJ2hpZGUnKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07
CisKICAgICAvLyBoaWdoY2hhcnRzIGNvbmZpZ3VyYXRpb24KICAgICByZXR1cm4gewogICAgICAg
ICBjaGFydDogewpAQCAtMTEsNyArMjAsNyBAQAogCSAgICB9LAogCSAgID0yMAogCSAgICB0aXRs
ZTogewotCSAgICAgICAgdGV4dCAgICAgICAgICAgICAgICAgICAgICAgIDogJycKKwkgICAgICAg
IHRleHQgICAgICAgICAgICAgICAgICAgICAgICA6IGNoYXJ0LmdldCgndGl0bGUnKQogCSAgICB9
LAogCSAgID0yMAogCSAgICBsZWdlbmQ6IHsKQEAgLTM0LDEyICs0MywyNiBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29sb3IgICAgICAgICAgIDogKEhpZ2hjaGFydHMudGhlbWUgJiYgSGln
aGNoYXJ0cy49CnRoZW1lLnRleHRDb2xvcikgfHwgJ2dyYXknCiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgbGFiZWxzOiB7CisgICAgICAgICAg
ICAgICAgZm9ybWF0dGVyICAgICAgICAgICAgICAgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGZvcm1hdCA9M0QgZDMuZm9ybWF0KHNldHRpbmdzLmdldCgneF9heGlzX3Rp
Y2snKSArPQogc2V0dGluZ3MuZ2V0KCd4X2F4aXNfdHlwZScpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdCh0aGlzLnZhbHVlKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGVuYWJsZWQgICAgICAgICAgICAgICAgIDogbGFiZWxFbmFibGVkKCd4X2F4aXMn
KQorICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHRpY2tQaXhlbEludGVydmFsICAgICAgICAg
ICA6IDEwMAogICAgICAgICB9LAogICAgICAgID0yMAogICAgICAgICB5QXhpczogewogICAgICAg
ICAgICAgdGl0bGU6IHsKICAgICAgICAgICAgICAgICB0ZXh0ICAgICAgICAgICAgICAgICAgICA6
IHNldHRpbmdzLmdldCgneV9heGlzX2xhYmVsJykKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICBsYWJlbHM6IHsKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgICAgICAgICAgICAgICA6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0zRCBkMy5mb3JtYXQo
c2V0dGluZ3MuZ2V0KCd5X2F4aXNfdGljaycpICs9CiBzZXR0aW5ncy5nZXQoJ3lfYXhpc190eXBl
JykpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KHRoaXMudmFsdWUpOworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZW5hYmxlZCAgICAgICAgICAgICAgICAg
OiBsYWJlbEVuYWJsZWQoJ3lfYXhpcycpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICA9
MjAKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAy
ZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTExMWZiYTEyODIgY29uZmlnL3BsdWdpbnMv
dmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoPQphcnRzL2NvbW1vbi93
cmFwcGVyLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0
aWMvY2hhcnRzL2hpZ2hjaGFydHMvY29tbW9uLz0Kd3JhcHBlci5qcworKysgYi9jb25maWcvcGx1
Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL2NvbW1v
bi89CndyYXBwZXIuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAgICBkcmF3IDogZnVuY3Rpb24ocHJv
Y2Vzc19pZCwgaGNfdHlwZSwgY2hhcnQsIHJlcXVlc3RfZGljdGlvbmFyeSwgY2FsbGJhPQpjaykK
ICAgICB7CiAgICAgICAgIC8vIGNyZWF0ZSBjb25maWd1cmF0aW9uCi0gICAgICAgIHRoaXMuaGNf
Y29uZmlnID0zRCBjb25maWdtYWtlcihjaGFydC5zZXR0aW5ncyk7CisgICAgICAgIHRoaXMuaGNf
Y29uZmlnID0zRCBjb25maWdtYWtlcihjaGFydCwgY2hhcnQuc2V0dGluZ3MpOwogICAgICAgID0y
MAogICAgICAgICAvLyByZXF1ZXN0IGRhdGEKICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7Cgpk
aWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0
ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3Vh
bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9oaXN0b2dyYW0vY29u
ZmlnLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMv
Y2hhcnRzL2hpZ2hjaGFydHMvaGlzdG9ncj0KYW0vY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVn
aW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvaGlzdG9n
cj0KYW0vY29uZmlnLmpzCkBAIC00LDYgKzQsNyBAQAogICAgIHRpdGxlICAgICAgIDogJ0hpc3Rv
Z3JhbScsCiAgICAgY2F0ZWdvcnkgICAgOiAnRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyBcJ2No
YXJ0c1wnIHRvb2wgZnJvbSBUb29sc2hlZD0KKScsCiAgICAgZXhlY3V0ZSAgICAgOiAnaGlzdG9n
cmFtJywKKyAgICBrZXl3b3JkcyAgICA6ICdkZWZhdWx0IGhpZ2hjaGFydHMnLAogICAgIGNvbHVt
bnMgICAgIDogewogICAgICAgICB5IDogewogICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnT2Jz
ZXJ2YXRpb25zJywKQEAgLTEyLDcgKzEzLDcgQEAKICAgICB9LAogICAgIHNldHRpbmdzICAgIDog
ewogICAgICAgICB4X2F4aXNfbGFiZWwgOiB7Ci0gICAgICAgICAgICBpbml0IDogJ0JyZWFrcycK
KyAgICAgICAgICAgIGluaXQgOiAnVmFsdWVzJwogICAgICAgICB9LAogICAgICAgICB5X2F4aXNf
bGFiZWwgOiB7CiAgICAgICAgICAgICBpbml0IDogJ0RlbnNpdHknCgpkaWZmIC1yIDFiZTA3ZGU4
NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5
ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0
cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnLmpz
Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRz
L2hpZ2hjaGFydHMvaGlzdG9ncj0KYW1fZGlzY3JldGUvY29uZmlnLmpzCisrKyBiL2NvbmZpZy9w
bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaGFydHMvaGlz
dG9ncj0KYW1fZGlzY3JldGUvY29uZmlnLmpzCkBAIC0xLDkgKzEsMTAgQEAKIGRlZmluZShbJ3Bs
dWdpbi9jaGFydHMvaGlnaGNoYXJ0cy9jb21tb24vY29uZmlnJ10sIGZ1bmN0aW9uKGNvbmZpZykg
ewo9MjAKIHJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwgY29uZmlnLCB7Ci0gICAgdGl0bGUgICAg
ICAgOiAnSGlzdG9ncmFtIChEaXNjcmV0ZSknLAorICAgIHRpdGxlICAgICAgIDogJ0Rpc2NyZXRl
IEhpc3RvZ3JhbScsCiAgICAgY2F0ZWdvcnkgICAgOiAnRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJl
cyBcJ2NoYXJ0c1wnIHRvb2wgZnJvbSBUb29sc2hlZD0KKScsCiAgICAgZXhlY3V0ZSAgICAgOiAn
aGlzdG9ncmFtZGlzY3JldGUnLAorICAgIGtleXdvcmRzICAgIDogJ2RlZmF1bHQgaGlnaGNoYXJ0
cycsCiAgICAgY29sdW1ucyAgICAgOiB7CiAgICAgICAgIHkgOiB7CiAgICAgICAgICAgICB0aXRs
ZSAgICAgICA6ICdPYnNlcnZhdGlvbnMnLAoKZGlmZiAtciAxYmUwN2RlODZjMmE2MDY1MThhN2Nm
YzI5MTMyMzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpkMmZmYTNhMTEx
ZmJhMTI4MiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0
cy9oaWdoY2g9CmFydHMvbGluZS9jb25maWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs
aXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9saW5lL2NvPQpuZmlnLmpz
CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRz
L2hpZ2hjaGFydHMvbGluZS9jbz0KbmZpZy5qcwpAQCAtMyw2ICszLDcgQEAKIHJldHVybiAkLmV4
dGVuZCh0cnVlLCB7fSwgY29uZmlnLCB7CiAgICAgdGl0bGUgICAgICAgOiAnTGluZScsCiAgICAg
Y2F0ZWdvcnkgICAgOiAnT3RoZXJzJywKKyAgICBrZXl3b3JkcyAgICA6ICdkZWZhdWx0IGhpZ2hj
aGFydHMnLAogICAgIGNvbHVtbnMgICAgIDogewogICAgICAgICB4IDogewogICAgICAgICAgICAg
dGl0bGUgICAgICAgOiAnVmFsdWVzIGZvciB4LWF4aXMnLAoKZGlmZiAtciAxYmUwN2RlODZjMmE2
MDY1MThhN2NmYzI5MTMyMzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpk
MmZmYTNhMTExZmJhMTI4MiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3Rh
dGljL2NoYXJ0cy9oaWdoY2g9CmFydHMvcGllL2NvbmZpZy5qcwotLS0gYS9jb25maWcvcGx1Z2lu
cy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL3BpZS9jb249
CmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj
L2NoYXJ0cy9oaWdoY2hhcnRzL3BpZS9jb249CmZpZy5qcwpAQCAtMyw2ICszLDcgQEAKIHJldHVy
biAkLmV4dGVuZCh0cnVlLCB7fSwgY29uZmlnLCB7CiAgICAgdGl0bGUgICAgICAgOiAnUGllIGNo
YXJ0JywKICAgICBjYXRlZ29yeSAgICA6ICdBcmVhIGNoYXJ0cycsCisgICAga2V5d29yZHMgICAg
OiAnaGlnaGNoYXJ0cycsCiAgICAgdXNlX3BhbmVscyAgOiB0cnVlLAogICAgIGNvbHVtbnMgOiB7
CiAgICAgICAgIGxhYmVsIDogewoKZGlmZiAtciAxYmUwN2RlODZjMmE2MDY1MThhN2NmYzI5MTMy
MzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpkMmZmYTNhMTExZmJhMTI4
MiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdo
Y2g9CmFydHMvc2NhdHRlci9jb25maWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph
dGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvaGlnaGNoYXJ0cy9zY2F0dGVyPQovY29uZmlnLmpz
CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRz
L2hpZ2hjaGFydHMvc2NhdHRlcj0KL2NvbmZpZy5qcwpAQCAtMyw2ICszLDcgQEAKIHJldHVybiAk
LmV4dGVuZCh0cnVlLCB7fSwgY29uZmlnLCB7CiAgICAgdGl0bGUgICAgICAgOiAnU2NhdHRlciBw
bG90JywKICAgICBjYXRlZ29yeSAgICA6ICdPdGhlcnMnLAorICAgIGtleXdvcmRzICAgIDogJ2Rl
ZmF1bHQgaGlnaGNoYXJ0cycsCiAgICAgY29sdW1ucyAgICAgOiB7CiAgICAgICAgIHggOiB7CiAg
ICAgICAgICAgICB0aXRsZSAgICAgICA6ICdWYWx1ZXMgZm9yIHgtYXhpcycsCgpkaWZmIC1yIDFi
ZTA3ZGU4NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMx
ZTQ5YjA5ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z
L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL2hpZ2hjaD0KYXJ0cy9zdGFja2VkYXJlYS9jb25maWcuanMK
LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMv
aGlnaGNoYXJ0cy9zdGFja2VkPQphcmVhL2NvbmZpZy5qcworKysgYi9jb25maWcvcGx1Z2lucy92
aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9oaWdoY2hhcnRzL3N0YWNrZWQ9CmFy
ZWEvY29uZmlnLmpzCkBAIC0zLDYgKzMsNyBAQAogcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBj
b25maWcsIHsKICAgICB0aXRsZSAgICAgICA6ICdSZWd1bGFyJywKICAgICBjYXRlZ29yeSAgICA6
ICdBcmVhIGNoYXJ0cycsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBoaWdoY2hhcnRzJywK
ICAgICBjb2x1bW5zICAgICA6IHsKICAgICAgICAgeCA6IHsKICAgICAgICAgICAgIHRpdGxlICAg
ICAgIDogJ1ZhbHVlcyBmb3IgeC1heGlzJywKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdj
ZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTEx
MWZiYTEyODIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFy
dHMvbnZkMy9jPQpvbW1vbi9jb25maWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph
dGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnPQouanMKKysrIGIv
Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvbnZkMy9j
b21tb24vY29uZmlnPQouanMKQEAgLTMsOCArMyw5IEBACiByZXR1cm4gewogICAgIHRpdGxlICAg
ICAgIDogJycsCiAgICAgY2F0ZWdvcnkgICAgOiAnJywKLSAgICBsaWJyYXJ5ICAgICA6ICdudmQz
LmpzJywKKyAgICBsaWJyYXJ5ICAgICA6ICdOVkQzJywKICAgICB0YWcgICAgICAgICA6ICdzdmcn
LAorICAgIGtleXdvcmRzICAgIDogJ252ZDMnLAogICAgIHNldHRpbmdzICAgIDogewogICAgICAg
ICBzZXBhcmF0b3JfbGFiZWwgIDogewogICAgICAgICAgICAgdGl0bGUgICAgICAgOiAnWCBheGlz
JywKCmRpZmYgLXIgMWJlMDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAy
ZGY0MjRmYzA1MzY4MzFlNDliMDlkND0KZDJmZmEzYTExMWZiYTEyODIgY29uZmlnL3BsdWdpbnMv
dmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvbnZkMy9oPQppc3RvZ3JhbS9jb25m
aWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9j
aGFydHMvbnZkMy9oaXN0b2dyYW0vY29uPQpmaWcuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlz
dWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvbnZkMy9oaXN0b2dyYW0vY29uPQpmaWcu
anMKQEAgLTEzLDcgKzEzLDcgQEAKICAgICB9LAogICAgIHNldHRpbmdzICAgIDogewogICAgICAg
ICB4X2F4aXNfbGFiZWwgOiB7Ci0gICAgICAgICAgICBpbml0IDogJ0JyZWFrcycKKyAgICAgICAg
ICAgIGluaXQgOiAnVmFsdWVzJwogICAgICAgICB9LAogICAgICAgICB5X2F4aXNfbGFiZWwgOiB7
CiAgICAgICAgICAgICBpbml0IDogJ0RlbnNpdHknCgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUx
OGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZh
M2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMv
Y2hhcnRzL252ZDMvaD0KaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnLmpzCi0tLSBhL2NvbmZpZy9w
bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvaGlzdG9ncmFt
X2Rpcz0KY3JldGUvY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z
L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvaGlzdG9ncmFtX2Rpcz0KY3JldGUvY29uZmlnLmpz
CkBAIC0xLDcgKzEsNyBAQAogZGVmaW5lKFsncGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25m
aWcnXSwgZnVuY3Rpb24obnZkM19jb25maWcpIHsKPTIwCiByZXR1cm4gJC5leHRlbmQodHJ1ZSwg
e30sIG52ZDNfY29uZmlnLCB7Ci0gICAgdGl0bGUgICAgICAgOiAnSGlzdG9ncmFtIChkaXNjcmV0
ZSknLAorICAgIHRpdGxlICAgICAgIDogJ0Rpc2NyZXRlIEhpc3RvZ3JhbScsCiAgICAgY2F0ZWdv
cnkgICAgOiAnRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyBcJ2NoYXJ0c1wnIHRvb2wgZnJvbSBU
b29sc2hlZD0KKScsCiAgICAgZXhlY3V0ZSAgICAgOiAnaGlzdG9ncmFtZGlzY3JldGUnLAogICAg
IGNvbHVtbnMgICAgIDogewoKZGlmZiAtciAxYmUwN2RlODZjMmE2MDY1MThhN2NmYzI5MTMyMzBj
MjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpkMmZmYTNhMTExZmJhMTI4MiBj
b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9udmQzL2w9
CmluZV9mb2N1cy9jb25maWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv
Y2hhcnRzL3N0YXRpYy9jaGFydHMvbnZkMy9saW5lX2ZvY3VzL2NvPQpuZmlnLmpzCisrKyBiL2Nv
bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvbGlu
ZV9mb2N1cy9jbz0KbmZpZy5qcwpAQCAtMyw2ICszLDcgQEAKIHJldHVybiAkLmV4dGVuZCh0cnVl
LCB7fSwgbnZkM19jb25maWcsIHsKICAgICB0aXRsZSAgICAgICA6ICdMaW5lIHdpdGggZm9jdXMn
LAogICAgIGNhdGVnb3J5ICAgIDogJ090aGVycycsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVs
dCBudmQzJywKICAgICBjb2x1bW5zICAgICA6IHsKICAgICAgICAgeSA6IHsKICAgICAgICAgICAg
IHRpdGxlICAgICAgIDogJ1ZhbHVlcyBmb3IgeS1heGlzJywKCmRpZmYgLXIgMWJlMDdkZTg2YzJh
NjA2NTE4YTdjZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFlNDliMDlkND0K
ZDJmZmEzYTExMWZiYTEyODIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0
YXRpYy9jaGFydHMvbnZkMy9wPQppZS9jb25maWcuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlz
dWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMvbnZkMy9waWUvY29uZmlnLmpzCisrKyBi
L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMv
cGllL2NvbmZpZy5qcwpAQCAtMyw3ICszLDkgQEAKIHJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwg
ewogICAgIHRpdGxlICAgICAgIDogJ1BpZSBjaGFydCcsCiAgICAgY2F0ZWdvcnkgICAgOiAnQXJl
YSBjaGFydHMnLAorICAgIGxpYnJhcnkgICAgIDogJ05WRDMnLAogICAgIHRhZyAgICAgICAgIDog
J3N2ZycsCisgICAga2V5d29yZHMgICAgOiAnZGVmYXVsdCBudmQzJywKICAgICB1c2VfcGFuZWxz
ICA6IHRydWUsCiAgICAgY29sdW1ucyA6IHsKICAgICAgICAgbGFiZWwgOiB7CgpkaWZmIC1yIDFi
ZTA3ZGU4NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMx
ZTQ5YjA5ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z
L2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvcz0KdGFja2VkYXJlYV9zdHJlYW0vY29uZmlnLmpz
Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRz
L252ZDMvc3RhY2tlZGFyZWFfcz0KdHJlYW0vY29uZmlnLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5z
L3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvY2hhcnRzL252ZDMvc3RhY2tlZGFyZWFfcz0K
dHJlYW0vY29uZmlnLmpzCkBAIC0zLDYgKzMsNyBAQAogcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9
LCBudmQzX2NvbmZpZywgewogICAgIHRpdGxlICAgICAgIDogJ1N0cmVhbScsCiAgICAgY2F0ZWdv
cnkgICAgOiAnQXJlYSBjaGFydHMnLAorICAgIGtleXdvcmRzICAgIDogJ2RlZmF1bHQgbnZkMycs
CiAgICAgY29sdW1ucyAgICAgOiB7CiAgICAgICAgIHkgOiB7CiAgICAgICAgICAgICB0aXRsZSAg
ICAgICA6ICdWYWx1ZXMgZm9yIHktYXhpcycsCgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUxOGE3
Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZhM2Ex
MTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvbGli
cmFyeS9zY3JlZT0KbnNob3QuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv
Y2hhcnRzL3N0YXRpYy9saWJyYXJ5L3NjcmVlbnNob3QuanMKKysrIGIvY29uZmlnL3BsdWdpbnMv
dmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9saWJyYXJ5L3NjcmVlbnNob3QuanMKQEAgLTMw
LDkgKzMwLDE3IEBACiAgICAgICAgICAgICAgICAgd2lkdGggICA6IHdpZHRoLAogICAgICAgICAg
ICAgICAgIGhlaWdodCAgOiBoZWlnaHQKICAgICAgICAgICAgIH0pOworICAgICAgICAgICA9MjAK
KyAgICAgICAgICAgIC8vIGhpZGUgaW5wdXQgZmllbGRzCisgICAgICAgICAgICAkc3ZnLmZpbmQo
Jy5oaWdoY2hhcnRzLWJ1dHRvbicpLmhpZGUoKTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAg
ICAvLyBjcmVhdGUgeG1sIHN0cmluZwogICAgICAgICAgICAgeG1sU3RyaW5nICs9M0Qgc2VyaWFs
aXplci5zZXJpYWxpemVUb1N0cmluZyh0aGlzKTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAg
ICAvLyBzaG93IGlucHV0IGZpZWxkcworICAgICAgICAgICAgJHN2Zy5maW5kKCcuaGlnaGNoYXJ0
cy1idXR0b24nKS5zaG93KCk7CiAgICAgICAgIH0pOwotICAgICAgICAgID0yMAorICAgICAgPTIw
CiAgICAgICAgIC8vIGRvIHRoZSBwb3N0CiAgICAgICAgIF9wb3N0KCRlbCwgc2NyZWVuc2hvdF91
cmwsIHsKICAgICAgICAgICAgIGZpbGVuYW1lICAgIDogbmFtZSB8fCAnY2hhcnQnLAoKZGlmZiAt
ciAxYmUwN2RlODZjMmE2MDY1MThhN2NmYzI5MTMyMzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUz
NjgzMWU0OWIwOWQ0PQpkMmZmYTNhMTExZmJhMTI4MiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0
aW9ucy9jaGFydHMvc3RhdGljL2xpYnJhcnkvdWktdGE9CmJsZS1mb3JtLmpzCi0tLSBhL2NvbmZp
Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvbGlicmFyeS91aS10YWJsZS1m
b3JtLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMv
bGlicmFyeS91aS10YWJsZS1mb3JtLmpzCkBAIC04NSw2ICs4NSwzMSBAQAogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAvLyByYWRpb2JveCBmaWVsZAorICAgICAgICAgICAgY2FzZSAncmFkaW9idXR0
b24nIDoKKyAgICAgICAgICAgICAgICBmaWVsZCA9M0QgbmV3IFVpLlJhZGlvQnV0dG9uKHsKKyAg
ICAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQtJyArIGlkLAorICAgICAgICAg
ICAgICAgICAgICBkYXRhICAgICAgICA6IHNldHRpbmdzX2RlZi5kYXRhLAorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSAgICAgICA6IG1vZGVsLmdldChpZCksCisgICAgICAgICAgICAgICAgICAg
IG9uY2hhbmdlICAgIDogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHNldCBuZXcgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLnNldChpZCwg
dmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGZpbmQgc2VsZWN0ZWQgZGljdGlvbmFyeQorICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGRpY3QgPTNEIF8uZmluZFdoZXJlKHNldHRpbmdzX2RlZi5kYXRhLCB7dmFsdWU9CjogdmFs
dWV9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWN0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBkaWN0LnNob3cpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9M0QgZGljdC5zaG93W2ldOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlLmdldCh0YXJnZXQpLnNob3coKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSBpbiBkaWN0LmhpZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHRhcmdldCA9M0QgZGljdC5oaWRlW2ldOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLnRhYmxlLmdldCh0YXJnZXQpLmhpZGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIC8vIHNlbGVjdCBmaWVsZAogICAgICAgICAgICAgY2FzZSAnc2VsZWN0JyA6CiAgICAg
ICAgICAgICAgICAgZmllbGQgPTNEIG5ldyBVaS5TZWxlY3QuVmlldyh7CgpkaWZmIC1yIDFiZTA3
ZGU4NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5
YjA5ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2No
YXJ0cy9zdGF0aWMvbGlicmFyeS91aS5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0
aW9ucy9jaGFydHMvc3RhdGljL2xpYnJhcnkvdWkuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlz
dWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9saWJyYXJ5L3VpLmpzCkBAIC01NzYsMTEgKzU3Niwx
MCBAQAogICAgIC8vIG9wdGlvbnMKICAgICBvcHRpb25zRGVmYXVsdDogewogICAgICAgICB2YWx1
ZSAgICAgICAgICAgOiAnJywKLSAgICAgICAgdHlwZSAgICAgICAgICAgIDogJ3RleHQnLAotICAg
ICAgICBwbGFjZWhvbGRlciAgICAgOiAnJywKLSAgICAgICAgZGlzYWJsZWQgICAgICAgIDogZmFs
c2UsCiAgICAgICAgIHZpc2libGUgICAgICAgICA6IHRydWUsCi0gICAgICAgIGNscyAgICAgICAg
ICAgICA6ICdmb3JtLWNvbnRyb2wnCisgICAgICAgIGNscyAgICAgICAgICAgICA6ICcnLAorICAg
ICAgICBkYXRhICAgICAgICAgICAgOiBbXSwKKyAgICAgICAgaWQgICAgICAgICAgICAgIDogVXRp
bHMudXVpZCgpCiAgICAgfSwKICAgID0yMAogICAgIC8vIGluaXRpYWxpemUKQEAgLTU5MSwzNiAr
NTkwLDY5IEBACiAgICAgICAgIC8vIGNyZWF0ZSBuZXcgZWxlbWVudAogICAgICAgICB0aGlzLnNl
dEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7CiAgICAgICAgPTIwCi0gICAg
ICAgIC8vIGRpc2FibGUgaW5wdXQgZmllbGQKLSAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kaXNh
YmxlZCkgewotICAgICAgICAgICAgdGhpcy4kZWwucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAg
ICAgICAgfQotICAgICAgID0yMAogICAgICAgICAvLyBoaWRlIGlucHV0IGZpZWxkCiAgICAgICAg
IGlmICghdGhpcy5vcHRpb25zLnZpc2libGUpIHsKICAgICAgICAgICAgIHRoaXMuJGVsLmhpZGUo
KTsKICAgICAgICAgfQogICAgICAgID0yMAorICAgICAgICAvLyBzZXQgaW5pdGlhbCB2YWx1ZQor
ICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZhbHVlKSB7CisgICAgICAgICAgICB0aGlzLnZhbHVl
KHRoaXMub3B0aW9ucy52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICA9MjAKKyAgICAgICAgLy8g
Y3VycmVudCB2YWx1ZQorICAgICAgICB0aGlzLmN1cnJlbnQgPTNEIHRoaXMub3B0aW9ucy52YWx1
ZTsKKyAgICAgICA9MjAKICAgICAgICAgLy8gb25jaGFuZ2UgZXZlbnQgaGFuZGxlci4gZmlyZXMg
b24gdXNlciBhY3Rpdml0eS4KICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7Ci0gICAgICAgIHRo
aXMuJGVsLm9uKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHNlbGYub3B0
aW9ucy5vbmNoYW5nZSkgewotICAgICAgICAgICAgICAgIHNlbGYub3B0aW9ucy5vbmNoYW5nZShz
ZWxmLiRlbC52YWwoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIHRoaXMuJGVsLmZpbmQoJ2lu
cHV0Jykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgeyAgICAgICA9MjAKKyAgICAgICAgICAgIHNl
bGYudmFsdWUoc2VsZi5fZ2V0VmFsdWUoKSk7CiAgICAgICAgIH0pOwogICAgIH0sCiAgICA9MjAK
ICAgICAvLyB2YWx1ZQogICAgIHZhbHVlIDogZnVuY3Rpb24gKG5ld192YWwpIHsKKyAgICAgICAg
Ly8gZ2V0IGN1cnJlbnQgdmFsdWUKKyAgICAgICAgdmFyIGJlZm9yZSA9M0QgdGhpcy5jdXJyZW50
OworICAgICAgID0yMAorICAgICAgICAvLyBzZXQgbmV3IHZhbHVlCiAgICAgICAgIGlmIChuZXdf
dmFsICE9M0Q9M0QgdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB0aGlzLiRlbC52YWwobmV3X3Zh
bCk7CisgICAgICAgICAgICB0aGlzLiRlbC5maW5kKCdsYWJlbCcpLnJlbW92ZUNsYXNzKCdhY3Rp
dmUnKTsKKyAgICAgICAgICAgIHRoaXMuJGVsLmZpbmQoJ1t2YWx1ZT0zRCInICsgbmV3X3ZhbCAr
ICciXScpLmNsb3Nlc3QoJ2xhYmVsJykuPQphZGRDbGFzcygnYWN0aXZlJyk7CisgICAgICAgICAg
ICB0aGlzLmN1cnJlbnQgPTNEIG5ld192YWw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRo
aXMuJGVsLnZhbCgpOworCisgICAgICAgIC8vIGNoZWNrIHZhbHVlCisgICAgICAgIHZhciBhZnRl
ciA9M0QgdGhpcy5jdXJyZW50OworICAgICAgICBpZiAoYWZ0ZXIgIT0zRCBiZWZvcmUgJiYgdGhp
cy5vcHRpb25zLm9uY2hhbmdlKSB7CisgICAgICAgICAgICB0aGlzLm9wdGlvbnMub25jaGFuZ2Uo
dGhpcy5jdXJyZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGdldCBhbmQgcmV0dXJuIHZh
bHVlCisgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQ7CisgICAgfSwKKyAgID0yMAorICAgIC8v
IGdldCB2YWx1ZQorICAgIF9nZXRWYWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzZWxl
Y3RlZCA9M0QgdGhpcy4kZWwuZmluZCgnOmNoZWNrZWQnKTsKKyAgICAgICAgdmFyIHZhbHVlID0z
RCBudWxsOworICAgICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
dmFsdWUgPTNEIHNlbGVjdGVkLnZhbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1
ZTsKICAgICB9LAogICAgPTIwCiAgICAgLy8gZWxlbWVudAogICAgIF90ZW1wbGF0ZTogZnVuY3Rp
b24ob3B0aW9ucykgewotICAgICAgICByZXR1cm4gJzxpbnB1dCBpZD0zRCInICsgb3B0aW9ucy5p
ZCArICciIHR5cGU9M0QiJyArIG9wdGlvbnMudHlwZSA9CisgJyIgdmFsdWU9M0QiJyArIG9wdGlv
bnMudmFsdWUgKyAnIiBwbGFjZWhvbGRlcj0zRCInICsgb3B0aW9ucy5wbGFjZWhvbGRlcj0KICsg
JyIgY2xhc3M9M0QidWktaW5wdXQgJyArIG9wdGlvbnMuY2xzICsgJyI+JzsKKyAgICAgICAgdmFy
IHRtcGwgPTNEICAnPGRpdiBjbGFzcz0zRCJidG4tZ3JvdXAgdWktcmFkaW9idXR0b24iIGRhdGEt
dG9nZ2xlPQo9M0QiYnV0dG9ucyI+JzsKKyAgICAgICAgZm9yIChrZXkgaW4gb3B0aW9ucy5kYXRh
KSB7CisgICAgICAgICAgICB2YXIgcGFpciA9M0Qgb3B0aW9ucy5kYXRhW2tleV07CisgICAgICAg
ICAgICB0bXBsICs9M0QgICAgICc8bGFiZWwgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0Ij4nICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9M0QicmFkaW8iIG5hbWU9
M0QiJyArIG9wdGlvbnMuaWQgPQorICciIHZhbHVlPTNEIicgKyBwYWlyLnZhbHVlICsgJyIgc2Vs
ZWN0ZWQ+JyArIHBhaXIubGFiZWwgKworICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGFiZWw+
JzsKKyAgICAgICAgfQorICAgICAgICB0bXBsICs9M0QgICAgICc8L2Rpdj4nOworICAgICAgICBy
ZXR1cm4gdG1wbDsKICAgICB9CiB9KTsKPTIwCkBAIC02MzgsNiArNjcwLDcgQEAKICAgICBCdXR0
b25NZW51IDogQnV0dG9uTWVudSwKICAgICBNb2RhbDogTW9kYWwsCiAgICAgVGV4dGFyZWE6IFRl
eHRhcmVhLAotICAgIEltYWdlOiBJbWFnZQorICAgIEltYWdlOiBJbWFnZSwKKyAgICBSYWRpb0J1
dHRvbjogUmFkaW9CdXR0b24KIH0KIH0pOwoKZGlmZiAtciAxYmUwN2RlODZjMmE2MDY1MThhN2Nm
YzI5MTMyMzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpkMmZmYTNhMTEx
ZmJhMTI4MiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL3BsdWdp
bnMvaGlnaGM9CmhhcnRzL2hpZ2hjaGFydHMuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs
aXphdGlvbnMvY2hhcnRzL3N0YXRpYy9wbHVnaW5zL2hpZ2hjaGFydHMvaGlnaGNoPQphcnRzLmpz
CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvcGx1Z2lu
cy9oaWdoY2hhcnRzL2hpZ2hjaD0KYXJ0cy5qcwpAQCAtMjgsNyArMjgsNyBAQAogMTBdLGJhY2tn
cm91bmRDb2xvcjoiI0ZGRkZGRiIscGxvdEJvcmRlckNvbG9yOiIjQzBDMEMwIixyZXNldFpvb21C
dXR0b246e3Q9CmhlbWU6e3pJbmRleDoyMH0scG9zaXRpb246e2FsaWduOiJyaWdodCIseDotMTAs
eToxMH19fSx0aXRsZTp7dGV4dDoiQ2hhcnQgdD0KaXRsZSIsYWxpZ246ImNlbnRlciIsbWFyZ2lu
OjE1LHN0eWxlOntjb2xvcjoiIzMzMzMzMyIsZm9udFNpemU6IjE4cHgifX0sc3ViPQp0aXRsZTp7
dGV4dDoiIixhbGlnbjoiY2VudGVyIixzdHlsZTp7Y29sb3I6IiM1NTU1NTUifX0scGxvdE9wdGlv
bnM6e2xpbmU6e2E9Cmxsb3dQb2ludFNlbGVjdDohMSxzaG93Q2hlY2tib3g6ITEsYW5pbWF0aW9u
OntkdXJhdGlvbjoxRTN9LGV2ZW50czp7fSxsaW5lVz0KaWR0aDoyLG1hcmtlcjp7bGluZVdpZHRo
OjAscmFkaXVzOjQsbGluZUNvbG9yOiIjRkZGRkZGIixzdGF0ZXM6e2hvdmVyOntlbmFiPQpsZWQ6
ITB9LHNlbGVjdDp7ZmlsbENvbG9yOiIjRkZGRkZGIixsaW5lQ29sb3I6IiMwMDAwMDAiLAogbGlu
ZVdpZHRoOjJ9fX0scG9pbnQ6e2V2ZW50czp7fX0sZGF0YUxhYmVsczp3KE4se2FsaWduOiJjZW50
ZXIiLGVuYWJsZWQ6ITE9Cixmb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55PTNEPTNE
PTNEbnVsbD8iIjpHYSh0aGlzLnksLTEpfSx2ZXJ0aWNhbD0KQWxpZ246ImJvdHRvbSIseTowfSks
Y3JvcFRocmVzaG9sZDozMDAscG9pbnRSYW5nZTowLHN0YXRlczp7aG92ZXI6e21hcmtlcjp7PQp9
LGhhbG86e3NpemU6MTAsb3BhY2l0eTowLjI1fX0sc2VsZWN0OnttYXJrZXI6e319fSxzdGlja3lU
cmFja2luZzohMCx0dXJib1Q9CmhyZXNob2xkOjFFM319LGxhYmVsczp7c3R5bGU6e3Bvc2l0aW9u
OiJhYnNvbHV0ZSIsY29sb3I6IiMzRTU3NkYifX0sbGVnZW5kOj0Ke2VuYWJsZWQ6ITAsYWxpZ246
ImNlbnRlciIsbGF5b3V0OiJob3Jpem9udGFsIixsYWJlbEZvcm1hdHRlcjpmdW5jdGlvbigpe3Jl
PQp0dXJuIHRoaXMubmFtZX0sYm9yZGVyQ29sb3I6IiM5MDkwOTAiLGJvcmRlclJhZGl1czowLG5h
dmlnYXRpb246e2FjdGl2ZUNvbG89CnI6IiMyNzRiNmQiLAogaW5hY3RpdmVDb2xvcjoiI0NDQyJ9
LHNoYWRvdzohMSxpdGVtU3R5bGU6e2NvbG9yOiIjMzMzMzMzIixmb250U2l6ZToiMTJweCI9Cixm
b250V2VpZ2h0OiJib2xkIn0saXRlbUhvdmVyU3R5bGU6e2NvbG9yOiIjMDAwIn0saXRlbUhpZGRl
blN0eWxlOntjb2xvcjoiIz0KQ0NDIn0saXRlbUNoZWNrYm94U3R5bGU6e3Bvc2l0aW9uOiJhYnNv
bHV0ZSIsd2lkdGg6IjEzcHgiLGhlaWdodDoiMTNweCJ9LHN5PQptYm9sUGFkZGluZzo1LHZlcnRp
Y2FsQWxpZ246ImJvdHRvbSIseDowLHk6MCx0aXRsZTp7c3R5bGU6e2ZvbnRXZWlnaHQ6ImJvbGQ9
CiJ9fX0sbG9hZGluZzp7bGFiZWxTdHlsZTp7Zm9udFdlaWdodDoiYm9sZCIscG9zaXRpb246InJl
bGF0aXZlIix0b3A6IjFlbSJ9LD0Kc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYmFja2dyb3Vu
ZENvbG9yOiJ3aGl0ZSIsb3BhY2l0eTowLjUsdGV4dEFsaWduOiJjPQplbnRlciJ9fSx0b29sdGlw
OntlbmFibGVkOiEwLGFuaW1hdGlvbjphYSxiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMjQ5LCAyNDks
IDI9CjQ5LCAuODUpIiwKLWJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjMsZGF0ZVRpbWVMYWJl
bEZvcm1hdHM6e21pbGxpc2Vjb25kOiIlQSwgJWIgJWUsPQogJUg6JU06JVMuJUwiLHNlY29uZDoi
JUEsICViICVlLCAlSDolTTolUyIsbWludXRlOiIlQSwgJWIgJWUsICVIOiVNIixob3VyOiI9CiVB
LCAlYiAlZSwgJUg6JU0iLGRheToiJUEsICViICVlLCAlWSIsd2VlazoiV2VlayBmcm9tICVBLCAl
YiAlZSwgJVkiLG1vbnRoOj0KIiVCICVZIix5ZWFyOiIlWSJ9LGhlYWRlckZvcm1hdDonPHNwYW4g
c3R5bGU9M0QiZm9udC1zaXplOiAxMHB4Ij57cG9pbnQua2V5PQp9PC9zcGFuPjxici8+Jyxwb2lu
dEZvcm1hdDonPHNwYW4gc3R5bGU9M0QiY29sb3I6e3Nlcmllcy5jb2xvcn0iPj1FMj05Nz04Rjw9
Ci9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueX08L2I+PGJyLz4nLHNoYWRvdzohMCxz
bmFwOkpiPzI1OjEwLHN0eWxlOj0Ke2NvbG9yOiIjMzMzMzMzIixjdXJzb3I6ImRlZmF1bHQiLGZv
bnRTaXplOiIxMnB4IixwYWRkaW5nOiI4cHgiLAorYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6
MyxkYXRlVGltZUxhYmVsRm9ybWF0czp7bWlsbGlzZWNvbmQ6IiVBLCAlYiAlZSw9CiAlSDolTTol
Uy4lTCIsc2Vjb25kOiIlQSwgJWIgJWUsICVIOiVNOiVTIixtaW51dGU6IiVBLCAlYiAlZSwgJUg6
JU0iLGhvdXI6Ij0KJUEsICViICVlLCAlSDolTSIsZGF5OiIlQSwgJWIgJWUsICVZIix3ZWVrOiJX
ZWVrIGZyb20gJUEsICViICVlLCAlWSIsbW9udGg6PQoiJUIgJVkiLHllYXI6IiVZIn0saGVhZGVy
Rm9ybWF0Oic8c3BhbiBzdHlsZT0zRCJmb250LXNpemU6IDEwcHgiPntwb2ludC5rZXk9Cn08L3Nw
YW4+PGJyLz4nLHBvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0zRCJjb2xvcjp7c2VyaWVzLmNvbG9y
fSI+PUMzPUEyPUUyPQo9ODA9OTQ9QzI9OEY8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2lu
dC55fTwvYj48YnIvPicsc2hhZG93OiEwLHNuYXA6SmI9Cj8yNToxMCxzdHlsZTp7Y29sb3I6IiMz
MzMzMzMiLGN1cnNvcjoiZGVmYXVsdCIsZm9udFNpemU6IjEycHgiLHBhZGRpbmc6IjhweD0KIiwK
IHdoaXRlU3BhY2U6Im5vd3JhcCJ9fSxjcmVkaXRzOntlbmFibGVkOiEwLHRleHQ6IkhpZ2hjaGFy
dHMuY29tIixocmVmOiJodHRwPQo6Ly93d3cuaGlnaGNoYXJ0cy5jb20iLHBvc2l0aW9uOnthbGln
bjoicmlnaHQiLHg6LTEwLHZlcnRpY2FsQWxpZ246ImJvdHRvbSI9Cix5Oi01fSxzdHlsZTp7Y3Vy
c29yOiJwb2ludGVyIixjb2xvcjoiIzkwOTA5MCIsZm9udFNpemU6IjlweCJ9fX07dmFyIGJhPTNE
RT0KLnBsb3RPcHRpb25zLFM9M0RiYS5saW5lO0NiKCk7dmFyIFRiPTNEL3JnYmFcKFxzKihbMC05
XXsxLDN9KVxzKixccyooWzAtOV17PQoxLDN9KVxzKixccyooWzAtOV17MSwzfSlccyosXHMqKFsw
LTldPyg/OlwuWzAtOV0rKT8pXHMqXCkvLFViPTNELyMoW2EtZkEtRjA9Ci05XXsyfSkoW2EtZkEt
RjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KS8sVmI9M0QvcmdiXChccyooWzAtOV17MSwzfSlccyos
XHMqKD0KWzAtOV17MSwzfSlccyosXHMqKFswLTldezEsM30pXHMqXCkvLHlhPTNEZnVuY3Rpb24o
YSl7dmFyIGI9M0RbXSxjLAogZDsoZnVuY3Rpb24oYSl7YSYmYS5zdG9wcz9kPTNEVWEoYS5zdG9w
cyxmdW5jdGlvbihhKXtyZXR1cm4geWEoYVsxXSl9KTooYz0KPTNEVGIuZXhlYyhhKSk/Yj0zRFt6
KGNbMV0pLHooY1syXSkseihjWzNdKSxwYXJzZUZsb2F0KGNbNF0sMTApXTooYz0zRFViLmV4PQpl
YyhhKSk/Yj0zRFt6KGNbMV0sMTYpLHooY1syXSwxNikseihjWzNdLDE2KSwxXTooYz0zRFZiLmV4
ZWMoYSkpJiYoYj0zRFt6KGM9ClsxXSkseihjWzJdKSx6KGNbM10pLDFdKX0pKGEpO3JldHVybntn
ZXQ6ZnVuY3Rpb24oYyl7dmFyIGY7ZD8oZj0zRHcoYSksZi5zdD0Kb3BzPTNEW10uY29uY2F0KGYu
c3RvcHMpLHAoZCxmdW5jdGlvbihhLGIpe2Yuc3RvcHNbYl09M0RbZi5zdG9wc1tiXVswXSxhLmdl
PQp0KGMpXX0pKTpmPTNEYiYmIWlzTmFOKGJbMF0pP2M9M0Q9M0Q9M0QicmdiIj8icmdiKCIrYlsw
XSsiLCIrYlsxXSsiLCIrYlsyXSs9CiIpIjpjPTNEPTNEPTNEImEiP2JbM106InJnYmEoIitiLmpv
aW4oIiwiKSsiKSI6YTtyZXR1cm4gZn0sYnJpZ2h0ZW46ZnVuY3Rpbz0KbihhKXtpZihkKXAoZCwK
IGZ1bmN0aW9uKGIpe2IuYnJpZ2h0ZW4oYSl9KTtlbHNlIGlmKGhhKGEpJiZhIT0zRD0zRDApe3Zh
ciBjO2ZvcihjPTNEMDtjPDM7PQpjKyspYltjXSs9M0R6KGEqMjU1KSxiW2NdPDAmJihiW2NdPTNE
MCksYltjXT4yNTUmJihiW2NdPTNEMjU1KX1yZXR1cm4gdGhpc309CixyZ2JhOmIsc2V0T3BhY2l0
eTpmdW5jdGlvbihhKXtiWzNdPTNEYTtyZXR1cm4gdGhpc319fTtQLnByb3RvdHlwZT0zRHtpbml0
Oj0KZnVuY3Rpb24oYSxiKXt0aGlzLmVsZW1lbnQ9M0RiPTNEPTNEPTNEInNwYW4iP1koYik6eS5j
cmVhdGVFbGVtZW50TlMoeGEsYik7PQp0aGlzLnJlbmRlcmVyPTNEYX0sb3BhY2l0eToxLGFuaW1h
dGU6ZnVuY3Rpb24oYSxiLGMpe2I9M0RtKGIsdmEsITApO2JiKHRoaXM9Cik7aWYoYil7Yj0zRHco
Yix7fSk7aWYoYyliLmNvbXBsZXRlPTNEYztrYih0aGlzLGEsYil9ZWxzZSB0aGlzLmF0dHIoYSks
YyYmYz0KKCl9LGNvbG9yR3JhZGllbnQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTNEdGhpcy5yZW5k
ZXJlcixlLGYsZyxoLGksaixrLGwsbyxuPQoscz0zRFtdO2EubGluZWFyR3JhZGllbnQ/CkBAIC0y
NjUsNyArMjY1LDcgQEAKIDApOmEuY29sdW1uSW5kZXgpfHwwKSprLWMvMikqKGU/LTE6MSl9fSx0
cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsPQpiPTNEYS5jaGFydCxjPTNEYS5vcHRp
b25zLGQ9M0RhLmJvcmRlcldpZHRoPTNEbShjLmJvcmRlcldpZHRoLGEuYWN0aXZlUG9pbnQ9CkNv
dW50PjAuNSphLnhBeGlzLmxlbj8wOjEpLGU9M0RhLnlBeGlzLGY9M0RhLnRyYW5zbGF0ZWRUaHJl
c2hvbGQ9M0RlLmdldFRocj0KZXNob2xkKGMudGhyZXNob2xkKSxnPTNEbShjLm1pblBvaW50TGVu
Z3RoLDUpLGM9M0RhLmdldENvbHVtbk1ldHJpY3MoKSxoPTNEPQpjLndpZHRoLGk9M0RhLmJhclc9
M0RLYSh2KGgsMSsyKmQpKSxqPTNEYS5wb2ludFhPZmZzZXQ9M0RjLm9mZnNldCxrPTNELShkJTI9
Cj8wLjU6MCksbD0zRGQlMj8wLjU6MTtiLnJlbmRlcmVyLmlzVk1MJiZiLmludmVydGVkJiYobCs9
M0QxKTtPLnByb3RvdHlwZS50cj0KYW5zbGF0ZS5hcHBseShhKTtwKGEucG9pbnRzLGZ1bmN0aW9u
KGMpe3ZhciBkPTNEbShjLnlCb3R0b20sZikscD0zREModigtOTk5PQotZCxjLnBsb3RZKSxlLmxl
bisKIDk5OStkKSxxPTNEYy5wbG90WCtqLHI9M0RpLHQ9M0RDKHAsZCkseDt4PTNEdihwLGQpLXQ7
TSh4KTxnJiZnJiYoeD0zRGcsdD0KPTNEdShNKHQtZik+Zz9kLWc6Zi0oZS50cmFuc2xhdGUoYy55
LDAsMSwwLDEpPD0zRGY/ZzowKSkpO2MuYmFyWD0zRHE7Yy5wb2luPQp0V2lkdGg9M0RoO2MudG9v
bHRpcFBvcz0zRGIuaW52ZXJ0ZWQ/W2UubGVuLXAsYS54QXhpcy5sZW4tcS1yLzJdOltxK3IvMixw
XTs9CmQ9M0RNKHEpPDAuNTtyPTNEdShxK3IpK2s7cT0zRHUocSkraztyLT0zRHE7cD0zRE0odCk8
MC41O3g9M0R1KHQreCkrbDt0PTNEdT0KKHQpK2w7eC09M0R0O2QmJihxKz0zRDEsci09M0QxKTtw
JiYodC09M0QxLHgrPTNEMSk7Yy5zaGFwZVR5cGU9M0QicmVjdCI7Yy5zPQpoYXBlQXJncz0zRHt4
OnEseTp0LHdpZHRoOnIsaGVpZ2h0Onh9fSl9LGdldFN5bWJvbDpzYSxkcmF3TGVnZW5kU3ltYm9s
Ok4uZHI9CmF3UmVjdGFuZ2xlLGRyYXdHcmFwaDpzYSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFy
IGE9M0R0aGlzLGI9M0R0aGlzLmNoYXJ0LD0KYz0zRGEub3B0aW9ucyxkPTNEYi5yZW5kZXJlcixl
PTNEYy5hbmltYXRpb25MaW1pdHx8CiAyNTAsZixnLGg7cChhLnBvaW50cyxmdW5jdGlvbihpKXt2
YXIgaj0zRGkucGxvdFksaz0zRGkuZ3JhcGhpYztpZihqIT0zRD0zRD0KdCYmIWlzTmFOKGopJiZp
LnkhPTNEPTNEbnVsbClmPTNEaS5zaGFwZUFyZ3MsaD0zRHIoYS5ib3JkZXJXaWR0aCk/eyJzdHJv
a2UtPQp3aWR0aCI6YS5ib3JkZXJXaWR0aH06e30sZz0zRGkucG9pbnRBdHRyW2kuc2VsZWN0ZWQ/
InNlbGVjdCI6IiJdfHxhLnBvaW50QXQ9CnRyWyIiXSxrPyhiYihrKSxrLmF0dHIoaClbYi5wb2lu
dENvdW50PGU/ImFuaW1hdGUiOiJhdHRyIl0odyhmKSkpOmkuZ3JhcGhpYz0KPTNEZFtpLnNoYXBl
VHlwZV0oZikuYXR0cihnKS5hdHRyKGgpLmFkZChhLmdyb3VwKS5zaGFkb3coYy5zaGFkb3csbnVs
bCxjLnN0PQphY2tpbmcmJiFjLmJvcmRlclJhZGl1cyk7ZWxzZSBpZihrKWkuZ3JhcGhpYz0zRGsu
ZGVzdHJveSgpfSl9LGFuaW1hdGU6ZnVuY3Q9CmlvbihhKXt2YXIgYj0zRHRoaXMueUF4aXMsYz0z
RHRoaXMub3B0aW9ucyxkPTNEdGhpcy5jaGFydC5pbnZlcnRlZCxlPTNEe307aT0KZihhYSlhPwot
KGUuc2NhbGVZPTNEMC4wMDEsYT0zREMoYi5wb3MrYi5sZW4sdihiLnBvcyxiLnRvUGl4ZWxzKGMu
dGhyZXNob2xkKSkpLGQ/ZS49CnRyYW5zbGF0ZVg9M0RhLWIubGVuOmUudHJhbnNsYXRlWT0zRGEs
dGhpcy5ncm91cC5hdHRyKGUpKTooZS5zY2FsZVk9M0QxLGVbZD0KPyJ0cmFuc2xhdGVYIjoidHJh
bnNsYXRlWSJdPTNEYi5wb3MsdGhpcy5ncm91cC5hbmltYXRlKGUsdGhpcy5vcHRpb25zLmFuaW1h
PQp0aW9uKSx0aGlzLmFuaW1hdGU9M0RudWxsKX0scmVtb3ZlOmZ1bmN0aW9uKCl7dmFyIGE9M0R0
aGlzLGI9M0RhLmNoYXJ0O2IuaGE9CnNSZW5kZXJlZCYmcChiLnNlcmllcyxmdW5jdGlvbihiKXtp
ZihiLnR5cGU9M0Q9M0Q9M0RhLnR5cGUpYi5pc0RpcnR5PTNEITB9KT0KO08ucHJvdG90eXBlLnJl
bW92ZS5hcHBseShhLGFyZ3VtZW50cyl9fSk7Ri5jb2x1bW49M0RnYTtiYS5iYXI9M0R3KGJhLmNv
bHVtPQpuKTtwYT0zRGthKGdhLHt0eXBlOiJiYXIiLGludmVydGVkOiEwfSk7Ri5iYXI9M0RwYTti
YS5zY2F0dGVyPTNEdyhTLHtsaW5lV2k9CmR0aDowLHRvb2x0aXA6e2hlYWRlckZvcm1hdDonPHNw
YW4gc3R5bGU9M0QiY29sb3I6e3Nlcmllcy5jb2xvcn0iPj1FMj05Nz04Rj0KPC9zcGFuPjxzcGFu
IHN0eWxlPTNEImZvbnQtc2l6ZTogMTBweDsiPiB7c2VyaWVzLm5hbWV9PC9zcGFuPjxici8+JywK
KyhlLnNjYWxlWT0zRDAuMDAxLGE9M0RDKGIucG9zK2IubGVuLHYoYi5wb3MsYi50b1BpeGVscyhj
LnRocmVzaG9sZCkpKSxkP2UuPQp0cmFuc2xhdGVYPTNEYS1iLmxlbjplLnRyYW5zbGF0ZVk9M0Rh
LHRoaXMuZ3JvdXAuYXR0cihlKSk6KGUuc2NhbGVZPTNEMSxlW2Q9Cj8idHJhbnNsYXRlWCI6InRy
YW5zbGF0ZVkiXT0zRGIucG9zLHRoaXMuZ3JvdXAuYW5pbWF0ZShlLHRoaXMub3B0aW9ucy5hbmlt
YT0KdGlvbiksdGhpcy5hbmltYXRlPTNEbnVsbCl9LHJlbW92ZTpmdW5jdGlvbigpe3ZhciBhPTNE
dGhpcyxiPTNEYS5jaGFydDtiLmhhPQpzUmVuZGVyZWQmJnAoYi5zZXJpZXMsZnVuY3Rpb24oYil7
aWYoYi50eXBlPTNEPTNEPTNEYS50eXBlKWIuaXNEaXJ0eT0zRCEwfSk9CjtPLnByb3RvdHlwZS5y
ZW1vdmUuYXBwbHkoYSxhcmd1bWVudHMpfX0pO0YuY29sdW1uPTNEZ2E7YmEuYmFyPTNEdyhiYS5j
b2x1bT0Kbik7cGE9M0RrYShnYSx7dHlwZToiYmFyIixpbnZlcnRlZDohMH0pO0YuYmFyPTNEcGE7
YmEuc2NhdHRlcj0zRHcoUyx7bGluZVdpPQpkdGg6MCx0b29sdGlwOntoZWFkZXJGb3JtYXQ6Jzxz
cGFuIHN0eWxlPTNEImNvbG9yOntzZXJpZXMuY29sb3J9Ij49QzM9QTI9RTI9Cj04MD05ND1DMj04
Rjwvc3Bhbj48c3BhbiBzdHlsZT0zRCJmb250LXNpemU6IDEwcHg7Ij4ge3Nlcmllcy5uYW1lfTwv
c3Bhbj48Yj0Kci8+JywKIHBvaW50Rm9ybWF0OiJ4OiA8Yj57cG9pbnQueH08L2I+PGJyLz55OiA8
Yj57cG9pbnQueX08L2I+PGJyLz4ifSxzdGlja3lUcmFjPQpraW5nOiExfSk7cGE9M0RrYShPLHt0
eXBlOiJzY2F0dGVyIixzb3J0ZWQ6ITEscmVxdWlyZVNvcnRpbmc6ITEsbm9TaGFyZWRUb289Cmx0
aXA6ITAsdHJhY2tlckdyb3VwczpbIm1hcmtlckdyb3VwIl0sdGFrZU9yZGluYWxQb3NpdGlvbjoh
MSxzaW5ndWxhclRvb2x0aT0KcHM6ITAsZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25z
LmxpbmVXaWR0aCYmTy5wcm90b3R5cGUuZHJhd0dyYXBoLmNhPQpsbCh0aGlzKX19KTtGLnNjYXR0
ZXI9M0RwYTtiYS5waWU9M0R3KFMse2JvcmRlckNvbG9yOiIjRkZGRkZGIixib3JkZXJXaWR0aDo9
CjEsY2VudGVyOltudWxsLG51bGxdLGNsaXA6ITEsY29sb3JCeVBvaW50OiEwLGRhdGFMYWJlbHM6
e2Rpc3RhbmNlOjMwLGVuYWJsZT0KZDohMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5wb2ludC5uYW1lfX0saWdub3JlSGlkZGVuUG9pbnQ6ITAsCiBsZWdlbmRUeXBlOiJwb2ludCIs
bWFya2VyOm51bGwsc2l6ZTpudWxsLHNob3dJbkxlZ2VuZDohMSxzbGljZWRPZmZzZXQ6MTAscz0K
dGF0ZXM6e2hvdmVyOnticmlnaHRuZXNzOjAuMSxzaGFkb3c6ITF9fSxzdGlja3lUcmFja2luZzoh
MSx0b29sdGlwOntmb2xsb3dQPQpvaW50ZXI6ITB9fSk7Uz0zRHt0eXBlOiJwaWUiLGlzQ2FydGVz
aWFuOiExLHBvaW50Q2xhc3M6a2EoRWEse2luaXQ6ZnVuY3Rpb249Cigpe0VhLnByb3RvdHlwZS5p
bml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgYT0zRHRoaXMsYjtpZihhLnk8MClhLnk9M0Ru
dT0KbGw7cShhLHt2aXNpYmxlOmEudmlzaWJsZSE9M0Q9M0QhMSxuYW1lOm0oYS5uYW1lLCJTbGlj
ZSIpfSk7Yj0zRGZ1bmN0aW9uKGIpPQp7YS5zbGljZShiLnR5cGU9M0Q9M0Q9M0Qic2VsZWN0Iil9
O0soYSwic2VsZWN0IixiKTtLKGEsInVuc2VsZWN0IixiKTtyZXR1cm49CiBhfSxzZXRWaXNpYmxl
OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEYi5zZXJpZXMsZD0zRGMuY2hhcnQ7Yi52aXNp
YmxlPQo9M0RiLm9wdGlvbnMudmlzaWJsZT0zRAogYT0zRGE9M0Q9M0Q9M0R0PyFiLnZpc2libGU6
YTtjLm9wdGlvbnMuZGF0YVtEYShiLGMuZGF0YSldPTNEYi5vcHRpb25zO3AoWyI9CmdyYXBoaWMi
LCJkYXRhTGFiZWwiLCJjb25uZWN0b3IiLCJzaGFkb3dHcm91cCJdLGZ1bmN0aW9uKGMpe2lmKGJb
Y10pYltjXVthPz0KInNob3ciOiJoaWRlIl0oITApfSk7Yi5sZWdlbmRJdGVtJiZkLmxlZ2VuZC5j
b2xvcml6ZUl0ZW0oYixhKTtpZighYy5pc0RpcnR5PQomJmMub3B0aW9ucy5pZ25vcmVIaWRkZW5Q
b2ludCljLmlzRGlydHk9M0QhMCxkLnJlZHJhdygpfSxzbGljZTpmdW5jdGlvbihhLGI9CixjKXt2
YXIgZD0zRHRoaXMuc2VyaWVzO1FhKGMsZC5jaGFydCk7bShiLCEwKTt0aGlzLnNsaWNlZD0zRHRo
aXMub3B0aW9ucy5zbD0KaWNlZD0zRGE9M0RyKGEpP2E6IXRoaXMuc2xpY2VkO2Qub3B0aW9ucy5k
YXRhW0RhKHRoaXMsZC5kYXRhKV09M0R0aGlzLm9wdGlvPQpuczthPTNEYT90aGlzLnNsaWNlZFRy
YW5zbGF0aW9uOnt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfTt0aGlzLmdyYXBoaWMuYW49Cmlt
YXRlKGEpOwpAQCAtMzAyLDQgKzMwMiw0IEBACiBzZXRWaXNpYmxlOmZ1bmN0aW9uKGEsYil7dmFy
IGM9M0R0aGlzLGQ9M0RjLmNoYXJ0LGU9M0RjLmxlZ2VuZEl0ZW0sZixnPTNEZD0KLm9wdGlvbnMu
Y2hhcnQuaWdub3JlSGlkZGVuU2VyaWVzLGg9M0RjLnZpc2libGU7Zj0zRChjLnZpc2libGU9M0Rh
PTNEYy51c2VyPQpPcHRpb25zLnZpc2libGU9M0RhPTNEPTNEPTNEdD8haDphKT8ic2hvdyI6Imhp
ZGUiO3AoWyJncm91cCIsImRhdGFMYWJlbHNHcm89CnVwIiwibWFya2VyR3JvdXAiLCJ0cmFja2Vy
Il0sZnVuY3Rpb24oYSl7aWYoY1thXSljW2FdW2ZdKCl9KTtpZihkLmhvdmVyU2VyaT0KZXM9M0Q9
M0Q9M0RjKWMub25Nb3VzZU91dCgpO2UmJmQubGVnZW5kLmNvbG9yaXplSXRlbShjLGEpO2MuaXNE
aXJ0eT0zRCEwO2MuPQpvcHRpb25zLnN0YWNraW5nJiZwKGQuc2VyaWVzLGZ1bmN0aW9uKGEpe2lm
KGEub3B0aW9ucy5zdGFja2luZyYmYS52aXNpYmxlKWE9Ci5pc0RpcnR5PTNEITB9KTtwKGMubGlu
a2VkU2VyaWVzLGZ1bmN0aW9uKGIpe2Iuc2V0VmlzaWJsZShhLCExKX0pO2lmKGcpZC5pcz0KRGly
dHlCb3g9M0QhMDsKIGIhPTNEPTNEITEmJmQucmVkcmF3KCk7RChjLGYpfSxzZXRUb29sdGlwUG9p
bnRzOmZ1bmN0aW9uKGEpe3ZhciBiPTNEW10sYyxkPQosZT0zRHRoaXMueEF4aXMsZj0zRGUmJmUu
Z2V0RXh0cmVtZXMoKSxnPTNEZT9lLnRvb2x0aXBMZW58fGUubGVuOnRoaXMuY2hhcnQ9Ci5wbG90
U2l6ZVgsaCxpLGo9M0RbXTtpZighKHRoaXMub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nPTNE
PTNEPTNEITF8fHRoaT0Kcy5zaW5ndWxhclRvb2x0aXBzKSl7aWYoYSl0aGlzLnRvb2x0aXBQb2lu
dHM9M0RudWxsO3AodGhpcy5zZWdtZW50c3x8dGhpcy5wPQpvaW50cyxmdW5jdGlvbihhKXtiPTNE
Yi5jb25jYXQoYSl9KTtlJiZlLnJldmVyc2VkJiYoYj0zRGIucmV2ZXJzZSgpKTt0aGlzLm89CnJk
ZXJUb29sdGlwUG9pbnRzJiZ0aGlzLm9yZGVyVG9vbHRpcFBvaW50cyhiKTthPTNEYi5sZW5ndGg7
Zm9yKGk9M0QwO2k8YTtpKz0KKylpZihlPTNEYltpXSxjPTNEZS54LGM+PTNEZi5taW4mJmM8PTNE
Zi5tYXgpe2g9M0RiW2krMV07Yz0zRGQ9M0Q9M0Q9M0R0PzA6PQpkKzE7Zm9yKGQ9M0RiW2krMV0/
Qyh2KDAsVCgoZS5jbGllbnRYKwogKGg/aC53cmFwcGVkQ2xpZW50WHx8aC5jbGllbnRYOmcpKS8y
KSksZyk6ZztjPj0zRDAmJmM8PTNEZDspaltjKytdPTNEZX10aGk9CnMudG9vbHRpcFBvaW50cz0z
RGp9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5zZXRWaXNpYmxlKCEwKX0saGlkZTpmdW5jdGlvbigp
ez0KdGhpcy5zZXRWaXNpYmxlKCExKX0sc2VsZWN0OmZ1bmN0aW9uKGEpe3RoaXMuc2VsZWN0ZWQ9
M0RhPTNEYT0zRD0zRD0zRHQ/IXRoPQppcy5zZWxlY3RlZDphO2lmKHRoaXMuY2hlY2tib3gpdGhp
cy5jaGVja2JveC5jaGVja2VkPTNEYTtEKHRoaXMsYT8ic2VsZWN0Ijo9CiJ1bnNlbGVjdCIpfSxk
cmF3VHJhY2tlcjpTLmRyYXdUcmFja2VyR3JhcGh9KTtxKFIse0F4aXM6bGEsQ2hhcnQ6WWEsQ29s
b3I6eT0KYSxQb2ludDpFYSxUaWNrOlNhLFJlbmRlcmVyOlphLFNlcmllczpPLFNWR0VsZW1lbnQ6
UCxTVkdSZW5kZXJlcjp0YSxhcnJheU1pPQpuOk5hLGFycmF5TWF4OkJhLGNoYXJ0czpWLGRhdGVG
b3JtYXQ6Y2IsZm9ybWF0OklhLHBhdGhBbmltOnViLGdldE9wdGlvbnM6ZnU9Cm5jdGlvbigpe3Jl
dHVybiBFfSwKLWhhc0JpZGlCdWc6TmIsaXNUb3VjaERldmljZTpKYixudW1iZXJGb3JtYXQ6R2Es
c2VyaWVzVHlwZXM6RixzZXRPcHRpb25zOmZ1PQpuY3Rpb24oYSl7RT0zRHcoITAsRSxhKTtDYigp
O3JldHVybiBFfSxhZGRFdmVudDpLLHJlbW92ZUV2ZW50OlcsY3JlYXRlRWxlbWU9Cm50OlksZGlz
Y2FyZEVsZW1lbnQ6UGEsY3NzOkcsZWFjaDpwLGV4dGVuZDpxLG1hcDpVYSxtZXJnZTp3LHBpY2s6
bSxzcGxhdDpxYT0KLGV4dGVuZENsYXNzOmthLHBJbnQ6eix3cmFwOk1hLHN2ZzphYSxjYW52YXM6
ZmEsdm1sOiFhYSYmIWZhLHByb2R1Y3Q6IkhpZ2hjPQpoYXJ0cyIsdmVyc2lvbjoiNC4wLjEifSl9
KSgpOworaGFzQmlkaUJ1ZzpOYixpc1RvdWNoRGV2aWNlOkpiLG51bWJlckZvcm1hdDpHYSxzZXJp
ZXNUeXBlczpGLHNldE9wdGlvbnM6ZnU9Cm5jdGlvbihhKXtFPTNEdyghMCxFLGEpO0NiKCk7cmV0
dXJuIEV9LGFkZEV2ZW50OksscmVtb3ZlRXZlbnQ6VyxjcmVhdGVFbGVtZT0KbnQ6WSxkaXNjYXJk
RWxlbWVudDpQYSxjc3M6RyxlYWNoOnAsZXh0ZW5kOnEsbWFwOlVhLG1lcmdlOncscGljazptLHNw
bGF0OnFhPQosZXh0ZW5kQ2xhc3M6a2EscEludDp6LHdyYXA6TWEsc3ZnOmFhLGNhbnZhczpmYSx2
bWw6IWFhJiYhZmEscHJvZHVjdDoiSGlnaGM9CmhhcnRzIix2ZXJzaW9uOiI0LjAuMSJ9KX0pKCk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciAxYmUwN2RlODZjMmE2MDY1MThh
N2NmYzI5MTMyMzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpkMmZmYTNh
MTExZmJhMTI4MiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL3Zp
ZXdzL3R5cGVzLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9z
dGF0aWMvdmlld3MvdHlwZXMuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv
Y2hhcnRzL3N0YXRpYy92aWV3cy90eXBlcy5qcwpAQCAtMjksNDIgKzI5LDI0IEBACiAgICAgICAg
IC8vIGNyZWF0ZSBuZXcgZWxlbWVudAogICAgICAgICB2YXIgJGVsID0zRCAkKCc8ZGl2IGNsYXNz
PTNEImNoYXJ0cy1ncmlkIi8+Jyk7CiAgICAgICAgPTIwCisgICAgICAgIC8vIGNvbnN0cnVjdCBj
aGFydCB0eXBlIHN1YnNldCBzZWxlY3Rpb24gYnV0dG9ucworICAgICAgICB0aGlzLmxpYnJhcnkg
PTNEIG5ldyBVaS5SYWRpb0J1dHRvbih7CisgICAgICAgICAgICBkYXRhICAgIDogWyB7IGxhYmVs
OiAnRGVmYXVsdCcsIHZhbHVlOiAnZGVmYXVsdCcgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsgbGFiZWw6ICdOVkQzIChvbmx5KScsIHZhbHVlOiAnbnZkMycgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsgbGFiZWw6ICdIaWdoY2hhcnRzIChvbmx5KScsIHZhbHVlOiAnaGlnaGNoYXJ0
cycgPQp9XSwKKyAgICAgICAgICAgIG9uY2hhbmdlOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAg
ICAgICAgICAgIHNlbGYuX2ZpbHRlcih2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgICAgICAkZWwuYXBwZW5kKFV0aWxzLndyYXAodGhpcy5saWJyYXJ5LiRlbCkuY3NzKCd0
ZXh0LWFsaWduJywgJ2NlbnRlcic9CikpOworICAgICAgID0yMAogICAgICAgICAvLyBzZXQgZWxl
bWVudAogICAgICAgICB0aGlzLnNldEVsZW1lbnQoJGVsKTsKLSAgICAgICAgICAgICAgID0yMAot
ICAgICAgICAvLyBsb2FkIGNoYXJ0IHR5cGVzIGludG8gY2F0ZWdvcmllcwotICAgICAgICB2YXIg
Y2F0ZWdvcmllcyA9M0Qge307Ci0gICAgICAgIHZhciB0eXBlcyA9M0QgYXBwLnR5cGVzLmF0dHJp
YnV0ZXM7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHR5cGVzKSB7Ci0gICAgICAgICAgICB2YXIg
dHlwZSA9M0QgdHlwZXNbaWRdOwotICAgICAgICAgICAgdmFyIGNhdGVnb3J5ID0zRCB0eXBlLmNh
dGVnb3J5OwotICAgICAgICAgICAgaWYgKCFjYXRlZ29yaWVzW2NhdGVnb3J5XSkgewotICAgICAg
ICAgICAgICAgIGNhdGVnb3JpZXNbY2F0ZWdvcnldID0zRCB7fTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhdGVnb3JpZXNbY2F0ZWdvcnldW2lkXSA9M0QgdHlwZTsKLSAgICAgICAgfQog
ICAgICAgID0yMAotICAgICAgICAvLyBhZGQgY2F0ZWdvcmllcyBhbmQgY2hhcnRzIHRvIHNjcmVl
bgotICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSBpbiBjYXRlZ29yaWVzKSB7Ci0gICAgICAgICAg
ICAvLyBjcmVhdGUgZW1wdHkgZWxlbWVudAotICAgICAgICAgICAgdmFyICRlbCA9M0QgJCgnPGRp
diBzdHlsZT0zRCJjbGVhcjogYm90aDsiLz4nKQotICAgICAgICAgICA9MjAKLSAgICAgICAgICAg
IC8vIGFkZCBoZWFkZXIgbGFiZWwKLSAgICAgICAgICAgICRlbC5hcHBlbmQoVXRpbHMud3JhcCh0
aGlzLl90ZW1wbGF0ZV9oZWFkZXIoe3RpdGxlOiBjYXRlZ29yeX0pPQopKTsKLSAgICAgICAgICAg
PTIwCi0gICAgICAgICAgICAvLyBhZGQgY2hhcnQgdHlwZXMKLSAgICAgICAgICAgIGZvciAodmFy
IGlkIGluIGNhdGVnb3JpZXNbY2F0ZWdvcnldKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHR5cGUg
PTNEIGNhdGVnb3JpZXNbY2F0ZWdvcnldW2lkXTsKLSAgICAgICAgICAgICAgICAkZWwuYXBwZW5k
KFV0aWxzLndyYXAodGhpcy5fdGVtcGxhdGVfaXRlbSh7Ci0gICAgICAgICAgICAgICAgICAgIGlk
ICAgICAgOiBpZCwKLSAgICAgICAgICAgICAgICAgICAgdGl0bGUgICA6IHR5cGUudGl0bGUsCi0g
ICAgICAgICAgICAgICAgICAgIHVybCAgICAgOiBjb25maWcuYXBwX3Jvb3QgKyAnY2hhcnRzLycg
KyBzZWxmLmFwcC5jaGFydD0KUGF0aChpZCkgKyAnL2xvZ28ucG5nJwotICAgICAgICAgICAgICAg
IH0pKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gYWRk
IHRvIHZpZXcKLSAgICAgICAgICAgIHRoaXMuJGVsLmFwcGVuZChVdGlscy53cmFwKCRlbCkpOwot
ICAgICAgICB9CisgICAgICAgIC8vIHJlbmRlcgorICAgICAgICB0aGlzLl9yZW5kZXIoKTsKKyAg
ICAgICA9MjAKKyAgICAgICAgdGhpcy5saWJyYXJ5LnZhbHVlKCdkZWZhdWx0Jyk7CiAgICAgfSwK
ICAgID0yMAogICAgIC8vIHZhbHVlCkBAIC05Nyw2ICs3OSw1OSBAQAogICAgICAgICB9CiAgICAg
fSwKICAgID0yMAorICAgIC8vIGZpbHRlcgorICAgIF9maWx0ZXI6IGZ1bmN0aW9uKHZhbHVlKSB7
CisgICAgICAgIHZhciB0eXBlcyA9M0QgdGhpcy5hcHAudHlwZXMuYXR0cmlidXRlczsKKyAgICAg
ICAgZm9yICh2YXIgaWQgaW4gdHlwZXMpIHsKKyAgICAgICAgICAgIHZhciB0eXBlID0zRCB0eXBl
c1tpZF07CisgICAgICAgICAgICB2YXIgJGVsID0zRCB0aGlzLiRlbC5maW5kKCcjJyArIGlkKTsK
KyAgICAgICAgICAgIHZhciBrZXl3b3JkcyA9M0QgdHlwZS5rZXl3b3JkcyB8fCAnJzsKKyAgICAg
ICAgICAgIGlmIChrZXl3b3Jkcy5pbmRleE9mKHZhbHVlKSA9M0Q9M0QgLTEpIHsKKyAgICAgICAg
ICAgICAgICAkZWwuaGlkZSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAkZWwuc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgID0yMAor
ICAgIC8vIHJlbmRlcgorICAgIF9yZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBsb2Fk
IGNoYXJ0IHR5cGVzIGludG8gY2F0ZWdvcmllcworICAgICAgICB2YXIgY2F0ZWdvcmllcyA9M0Qg
e307CisgICAgICAgIHZhciB0eXBlcyA9M0QgdGhpcy5hcHAudHlwZXMuYXR0cmlidXRlczsKKyAg
ICAgICAgZm9yICh2YXIgaWQgaW4gdHlwZXMpIHsKKyAgICAgICAgICAgIC8vIGFkZCBjYXRlZ29y
eQorICAgICAgICAgICAgdmFyIHR5cGUgPTNEIHR5cGVzW2lkXTsKKyAgICAgICAgICAgIHZhciBj
YXRlZ29yeSA9M0QgdHlwZS5jYXRlZ29yeTsKKyAgICAgICAgICAgIGlmICghY2F0ZWdvcmllc1tj
YXRlZ29yeV0pIHsKKyAgICAgICAgICAgICAgICBjYXRlZ29yaWVzW2NhdGVnb3J5XSA9M0Qge307
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRlZ29yaWVzW2NhdGVnb3J5XVtpZF0gPTNE
IHR5cGU7CisgICAgICAgIH0KKyAgICAgICA9MjAKKyAgICAgICAgLy8gYWRkIGNhdGVnb3JpZXMg
YW5kIGNoYXJ0cyB0byBzY3JlZW4KKyAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdv
cmllcykgeworICAgICAgICAgICAgLy8gY3JlYXRlIGVtcHR5IGVsZW1lbnQKKyAgICAgICAgICAg
IHZhciAkZWwgPTNEICQoJzxkaXYgc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ii8+JykKKyAgICAgICAg
ICAgPTIwCisgICAgICAgICAgICAvLyBhZGQgaGVhZGVyIGxhYmVsCisgICAgICAgICAgICAkZWwu
YXBwZW5kKFV0aWxzLndyYXAodGhpcy5fdGVtcGxhdGVfaGVhZGVyKHt0aXRsZTogY2F0ZWdvcnl9
KT0KKSk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gYWRkIGNoYXJ0IHR5cGVzCisg
ICAgICAgICAgICBmb3IgKHZhciBpZCBpbiBjYXRlZ29yaWVzW2NhdGVnb3J5XSkgeworICAgICAg
ICAgICAgICAgIHZhciB0eXBlID0zRCBjYXRlZ29yaWVzW2NhdGVnb3J5XVtpZF07CisgICAgICAg
ICAgICAgICAgJGVsLmFwcGVuZChVdGlscy53cmFwKHRoaXMuX3RlbXBsYXRlX2l0ZW0oeworICAg
ICAgICAgICAgICAgICAgICBpZCAgICAgIDogaWQsCisgICAgICAgICAgICAgICAgICAgIHRpdGxl
ICAgOiB0eXBlLnRpdGxlICsgJyAoJyArIHR5cGUubGlicmFyeSArICcpJywKKyAgICAgICAgICAg
ICAgICAgICAgdXJsICAgICA6IGNvbmZpZy5hcHBfcm9vdCArICdjaGFydHMvJyArIHRoaXMuYXBw
LmNoYXJ0PQpQYXRoKGlkKSArICcvbG9nby5wbmcnCisgICAgICAgICAgICAgICAgfSkpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBhZGQgdG8gdmlldwor
ICAgICAgICAgICAgdGhpcy4kZWwuYXBwZW5kKFV0aWxzLndyYXAoJGVsKSk7CisgICAgICAgIH0K
KyAgICB9LAorICAgPTIwCiAgICAgLy8gb25jbGljawogICAgIF9vbmNsaWNrOiBmdW5jdGlvbihl
KSB7CiAgICAgICAgIHZhciBvbGRfdmFsdWUgPTNEIHRoaXMudmFsdWUoKTsKCmRpZmYgLXIgMWJl
MDdkZTg2YzJhNjA2NTE4YTdjZmMyOTEzMjMwYzI5YTcyMTBmOCAtciAyZGY0MjRmYzA1MzY4MzFl
NDliMDlkND0KZDJmZmEzYTExMWZiYTEyODIgc3RhdGljL3NjcmlwdHMvbXZjL3VpL3VpLXBvcnRs
ZXQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL3VpL3VpLXBvcnRsZXQuanMKKysrIGIvc3Rh
dGljL3NjcmlwdHMvbXZjL3VpL3VpLXBvcnRsZXQuanMKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAg
ICAgLy8gc2V0IGNvbnRlbnQgcGFkZGluZwogICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5vcGFk
ZGluZykgewogICAgICAgICAgICAgJHBvcnRsZXRfY29udGVudC5jc3MoJ3BhZGRpbmcnLCAnMHB4
Jyk7Ci0gICAgICAgICAgICAkY29udGVudC5jc3MoJ3BhZGRpbmcnLCAnMHB4Jyk7CisgICAgICAg
ICAgICB0aGlzLiRjb250ZW50LmNzcygncGFkZGluZycsICcwcHgnKTsKICAgICAgICAgfQogICAg
ICAgID0yMAogICAgICAgICAvLyBhcHBlbmQgYnV0dG9ucwoKZGlmZiAtciAxYmUwN2RlODZjMmE2
MDY1MThhN2NmYzI5MTMyMzBjMjlhNzIxMGY4IC1yIDJkZjQyNGZjMDUzNjgzMWU0OWIwOWQ0PQpk
MmZmYTNhMTExZmJhMTI4MiBzdGF0aWMvc2NyaXB0cy9tdmMvdWkvdWktdGFicy5qcwotLS0gYS9z
dGF0aWMvc2NyaXB0cy9tdmMvdWkvdWktdGFicy5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMv
dWkvdWktdGFicy5qcwpAQCAtMTU4LDcgKzE1OCw4IEBACiAgICAgICAgPTIwCiAgICAgICAgIC8v
IHNob3cgc2VsZWN0ZWQgdGFiCiAgICAgICAgIGlmIChpZCkgewotICAgICAgICAgICAgdGhpcy4k
ZWwuZmluZCgnLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKKyAgICAgICAgICAgIHRo
aXMuJGVsLmZpbmQoJy50YWItZWxlbWVudCcpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKKyAgICAg
ICAgICAgIHRoaXMuJGVsLmZpbmQoJy50YWItcGFuZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsK
ICAgICAgICAgICAgIHRoaXMuJGVsLmZpbmQoJyN0YWItJyArIGlkKS5hZGRDbGFzcygnYWN0aXZl
Jyk7CiAgICAgICAgICAgICB0aGlzLiRlbC5maW5kKCcjdGFiLWNvbnRlbnQtJyArIGlkKS5hZGRD
bGFzcygnYWN0aXZlJyk7CiAgICAgICAgIH0KQEAgLTIxOCw3ICsyMTksNyBAQAogICAgPTIwCiAg
ICAgLy8gZmlsbCB0ZW1wbGF0ZSB0YWIKICAgICBfdGVtcGxhdGVfdGFiOiBmdW5jdGlvbihvcHRp
b25zKSB7Ci0gICAgICAgIHZhciB0bXBsID0zRCAgJzxsaSBpZD0zRCJ0YWItJyArIG9wdGlvbnMu
aWQgKyAnIj4nICsKKyAgICAgICAgdmFyIHRtcGwgPTNEICAnPGxpIGlkPTNEInRhYi0nICsgb3B0
aW9ucy5pZCArICciIGNsYXNzPTNEInRhYi1lbGVtPQplbnQiPicgKwogICAgICAgICAgICAgICAg
ICAgICAgICAgJzxhIGlkPTNEInRhYi10aXRsZS1saW5rLScgKyBvcHRpb25zLmlkICsgJyIgdGl0
bGU9Cj0zRCIiIGhyZWY9M0QiI3RhYi1jb250ZW50LScgKyBvcHRpb25zLmlkICsgJyIgZGF0YS1v
cmlnaW5hbC10aXRsZT0zRCIiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3Bh
biBpZD0zRCJ0YWItdGl0bGUtdGV4dC0nICsgb3B0aW9ucy5pZCArICc9CiI+JyArIG9wdGlvbnMu
dGl0bGUgKyAnPC9zcGFuPic7CiAgICAgICAgPTIwCgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUx
OGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZh
M2ExMTFmYmExMjgyIHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdWkvdWktcG9ydGxldC5qcwot
LS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3VpL3VpLXBvcnRsZXQuanMKKysrIGIvc3Rh
dGljL3NjcmlwdHMvcGFja2VkL212Yy91aS91aS1wb3J0bGV0LmpzCkBAIC0xLDEgKzEsMSBAQAot
ZGVmaW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihhKXt2YXIgYj0zREJhY2tib25lLlZpZXcu
ZXh0ZW5kKHt2aXNpYmxlOmY9CmFsc2Usb3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGljb246IiIs
YnV0dG9uczpudWxsLGJvZHk6bnVsbCxzY3JvbGxhYmxlOnRydT0KZSxub3BhZGRpbmc6ZmFsc2Us
b3BlcmF0aW9uczpudWxsLHBsYWNlbWVudDoiYm90dG9tIn0sJHRpdGxlOm51bGwsJGNvbnRlbnQ6
PQpudWxsLCRidXR0b25zOm51bGwsJG9wZXJhdGlvbnM6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9u
KGUpe3RoaXMub3B0aW9ucz0zRGE9Ci5tZXJnZShlLHRoaXMub3B0aW9uc0RlZmF1bHQpO3RoaXMu
c2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKT0KO3RoaXMuJGNvbnRlbnQ9
M0R0aGlzLiRlbC5maW5kKCIjY29udGVudCIpO3RoaXMuJHRpdGxlPTNEdGhpcy4kZWwuZmluZCgi
I3BvPQpydGxldC1oZWFkZXItdGV4dCIpO3ZhciBkPTNEdGhpcy4kZWwuZmluZCgiI3BvcnRsZXQt
Y29udGVudCIpO2lmKCF0aGlzLm9wdGk9Cm9ucy5zY3JvbGxhYmxlKXtpZih0aGlzLm9wdGlvbnMu
dGl0bGUpe2QuYWRkQ2xhc3MoIm5vLXNjcm9sbCIpfWVsc2V7ZC5hZGRDbD0KYXNzKCJuby1zY3Jv
bGwtbm8tdGl0bGUiKX19ZWxzZXtkLmFkZENsYXNzKCJzY3JvbGwiKX1pZih0aGlzLm9wdGlvbnMu
bm9wYWRkPQppbmcpe2QuY3NzKCJwYWRkaW5nIiwiMHB4Iik7JGNvbnRlbnQuY3NzKCJwYWRkaW5n
IiwiMHB4Iil9dGhpcy4kYnV0dG9ucz0zRCQ9Cih0aGlzLmVsKS5maW5kKCIjYnV0dG9ucyIpO2lm
KHRoaXMub3B0aW9ucy5idXR0b25zKXt2YXIgYz0zRHRoaXM7JC5lYWNoKHRoaT0Kcy5vcHRpb25z
LmJ1dHRvbnMsZnVuY3Rpb24oZixnKXtnLiRlbC5wcm9wKCJpZCIsZik7Yy4kYnV0dG9ucy5hcHBl
bmQoZy4kZWwpPQp9KX1lbHNle3RoaXMuJGJ1dHRvbnMucmVtb3ZlKCl9dGhpcy4kb3BlcmF0aW9u
cz0zRCQodGhpcy5lbCkuZmluZCgiI29wZXJhdGk9Cm9ucyIpO2lmKHRoaXMub3B0aW9ucy5vcGVy
YXRpb25zKXt2YXIgYz0zRHRoaXM7JC5lYWNoKHRoaXMub3B0aW9ucy5vcGVyYXRpbz0KbnMsZnVu
Y3Rpb24oZixnKXtnLiRlbC5wcm9wKCJpZCIsZik7Yy4kb3BlcmF0aW9ucy5hcHBlbmQoZy4kZWwp
fSl9aWYodGhpcy5vPQpwdGlvbnMuYm9keSl7dGhpcy5hcHBlbmQodGhpcy5vcHRpb25zLmJvZHkp
fX0sYXBwZW5kOmZ1bmN0aW9uKGMpe3RoaXMuJGNvbnQ9CmVudC5hcHBlbmQoYS53cmFwKGMpKX0s
Y29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRjb250ZW50fSxzaG93OmZ1bmN0aT0Kb24o
KXt0aGlzLiRlbC5mYWRlSW4oImZhc3QiKTt0aGlzLnZpc2libGU9M0R0cnVlfSxoaWRlOmZ1bmN0
aW9uKCl7dGhpcy4kZWwuPQpmYWRlT3V0KCJmYXN0Iik7dGhpcy52aXNpYmxlPTNEZmFsc2V9LGVu
YWJsZUJ1dHRvbjpmdW5jdGlvbihjKXt0aGlzLiRidXR0b249CnMuZmluZCgiIyIrYykucHJvcCgi
ZGlzYWJsZWQiLGZhbHNlKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdGlvbihjKXt0aGlzLiRidXR0bz0K
bnMuZmluZCgiIyIrYykucHJvcCgiZGlzYWJsZWQiLHRydWUpfSxoaWRlT3BlcmF0aW9uOmZ1bmN0
aW9uKGMpe3RoaXMuJG9wZXJhPQp0aW9ucy5maW5kKCIjIitjKS5oaWRlKCl9LHNob3dPcGVyYXRp
b246ZnVuY3Rpb24oYyl7dGhpcy4kb3BlcmF0aW9ucy5maW5kKCI9CiMiK2MpLnNob3coKX0sc2V0
T3BlcmF0aW9uOmZ1bmN0aW9uKGUsZCl7dmFyIGM9M0R0aGlzLiRvcGVyYXRpb25zLmZpbmQoIiMi
Kz0KZSk7Yy5vZmYoImNsaWNrIik7Yy5vbigiY2xpY2siLGQpfSx0aXRsZTpmdW5jdGlvbihkKXt2
YXIgYz0zRHRoaXMuJHRpdGxlO2lmPQooZCl7Yy5odG1sKGQpfXJldHVybiBjLmh0bWwoKX0sX3Rl
bXBsYXRlOmZ1bmN0aW9uKGQpe3ZhciBjPTNEJzxkaXYgY2xhc3M9M0Q9CiJ1aS1wb3J0bGV0Ij4n
O2lmKGQudGl0bGUpe2MrPTNEJzxkaXYgaWQ9M0QicG9ydGxldC1oZWFkZXIiIGNsYXNzPTNEInBv
cnRsZT0KdC1oZWFkZXIiPjxkaXYgaWQ9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxvYXQ6IHJp
Z2h0OyI+PC9kaXY+PGgzPic7aWYoZC5pPQpjb24pe2MrPTNEJzxpIGNsYXNzPTNEImljb24gZmEg
JytkLmljb24rJyI+Jm5ic3A7PC9pPid9Yys9M0QnPHNwYW4gaWQ9M0QicG89CnJ0bGV0LWhlYWRl
ci10ZXh0Ij4nK2QudGl0bGUrIjwvc3Bhbj48L2gzPjwvZGl2PiJ9Yys9M0QnPGRpdiBpZD0zRCJw
b3J0bGV0LT0KY29udGVudCIgY2xhc3M9M0QicG9ydGxldC1jb250ZW50Ij4nO2lmKGQucGxhY2Vt
ZW50PTNEPTNEInRvcCIpe2MrPTNEJzxkaXYgPQppZD0zRCJidXR0b25zIiBjbGFzcz0zRCJidXR0
b25zIj48L2Rpdj4nfWMrPTNEJzxkaXYgaWQ9M0QiY29udGVudCIgY2xhc3M9M0Q9CiJjb250ZW50
Ij48L2Rpdj4nO2lmKGQucGxhY2VtZW50PTNEPTNEImJvdHRvbSIpe2MrPTNEJzxkaXYgaWQ9M0Qi
YnV0dG9ucyIgYz0KbGFzcz0zRCJidXR0b25zIj48L2Rpdj4nfWMrPTNEIjwvZGl2PjwvZGl2PiI7
cmV0dXJuIGN9fSk7cmV0dXJue1ZpZXc6Yn19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CitkZWZpbmUoWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGEpe3ZhciBiPTNEQmFja2JvbmUuVmll
dy5leHRlbmQoe3Zpc2libGU6Zj0KYWxzZSxvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsaWNvbjoi
IixidXR0b25zOm51bGwsYm9keTpudWxsLHNjcm9sbGFibGU6dHJ1PQplLG5vcGFkZGluZzpmYWxz
ZSxvcGVyYXRpb25zOm51bGwscGxhY2VtZW50OiJib3R0b20ifSwkdGl0bGU6bnVsbCwkY29udGVu
dDo9Cm51bGwsJGJ1dHRvbnM6bnVsbCwkb3BlcmF0aW9uczpudWxsLGluaXRpYWxpemU6ZnVuY3Rp
b24oZSl7dGhpcy5vcHRpb25zPTNEYT0KLm1lcmdlKGUsdGhpcy5vcHRpb25zRGVmYXVsdCk7dGhp
cy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpPQo7dGhpcy4kY29udGVu
dD0zRHRoaXMuJGVsLmZpbmQoIiNjb250ZW50Iik7dGhpcy4kdGl0bGU9M0R0aGlzLiRlbC5maW5k
KCIjcG89CnJ0bGV0LWhlYWRlci10ZXh0Iik7dmFyIGQ9M0R0aGlzLiRlbC5maW5kKCIjcG9ydGxl
dC1jb250ZW50Iik7aWYoIXRoaXMub3B0aT0Kb25zLnNjcm9sbGFibGUpe2lmKHRoaXMub3B0aW9u
cy50aXRsZSl7ZC5hZGRDbGFzcygibm8tc2Nyb2xsIil9ZWxzZXtkLmFkZENsPQphc3MoIm5vLXNj
cm9sbC1uby10aXRsZSIpfX1lbHNle2QuYWRkQ2xhc3MoInNjcm9sbCIpfWlmKHRoaXMub3B0aW9u
cy5ub3BhZGQ9CmluZyl7ZC5jc3MoInBhZGRpbmciLCIwcHgiKTt0aGlzLiRjb250ZW50LmNzcygi
cGFkZGluZyIsIjBweCIpfXRoaXMuJGJ1dHRvbj0Kcz0zRCQodGhpcy5lbCkuZmluZCgiI2J1dHRv
bnMiKTtpZih0aGlzLm9wdGlvbnMuYnV0dG9ucyl7dmFyIGM9M0R0aGlzOyQuZWFjPQpoKHRoaXMu
b3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGYsZyl7Zy4kZWwucHJvcCgiaWQiLGYpO2MuJGJ1dHRv
bnMuYXBwZW5kKGc9Ci4kZWwpfSl9ZWxzZXt0aGlzLiRidXR0b25zLnJlbW92ZSgpfXRoaXMuJG9w
ZXJhdGlvbnM9M0QkKHRoaXMuZWwpLmZpbmQoIiNvcD0KZXJhdGlvbnMiKTtpZih0aGlzLm9wdGlv
bnMub3BlcmF0aW9ucyl7dmFyIGM9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMub3BlPQpyYXRp
b25zLGZ1bmN0aW9uKGYsZyl7Zy4kZWwucHJvcCgiaWQiLGYpO2MuJG9wZXJhdGlvbnMuYXBwZW5k
KGcuJGVsKX0pfWlmKHQ9Cmhpcy5vcHRpb25zLmJvZHkpe3RoaXMuYXBwZW5kKHRoaXMub3B0aW9u
cy5ib2R5KX19LGFwcGVuZDpmdW5jdGlvbihjKXt0aGlzLj0KJGNvbnRlbnQuYXBwZW5kKGEud3Jh
cChjKSl9LGNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGVudH0sc2hvdzpmPQp1
bmN0aW9uKCl7dGhpcy4kZWwuZmFkZUluKCJmYXN0Iik7dGhpcy52aXNpYmxlPTNEdHJ1ZX0saGlk
ZTpmdW5jdGlvbigpe3RoaXM9Ci4kZWwuZmFkZU91dCgiZmFzdCIpO3RoaXMudmlzaWJsZT0zRGZh
bHNlfSxlbmFibGVCdXR0b246ZnVuY3Rpb24oYyl7dGhpcy4kYj0KdXR0b25zLmZpbmQoIiMiK2Mp
LnByb3AoImRpc2FibGVkIixmYWxzZSl9LGRpc2FibGVCdXR0b246ZnVuY3Rpb24oYyl7dGhpcy4k
PQpidXR0b25zLmZpbmQoIiMiK2MpLnByb3AoImRpc2FibGVkIix0cnVlKX0saGlkZU9wZXJhdGlv
bjpmdW5jdGlvbihjKXt0aGlzLiQ9Cm9wZXJhdGlvbnMuZmluZCgiIyIrYykuaGlkZSgpfSxzaG93
T3BlcmF0aW9uOmZ1bmN0aW9uKGMpe3RoaXMuJG9wZXJhdGlvbnMuZj0KaW5kKCIjIitjKS5zaG93
KCl9LHNldE9wZXJhdGlvbjpmdW5jdGlvbihlLGQpe3ZhciBjPTNEdGhpcy4kb3BlcmF0aW9ucy5m
aW5kPQooIiMiK2UpO2Mub2ZmKCJjbGljayIpO2Mub24oImNsaWNrIixkKX0sdGl0bGU6ZnVuY3Rp
b24oZCl7dmFyIGM9M0R0aGlzLiR0aXQ9CmxlO2lmKGQpe2MuaHRtbChkKX1yZXR1cm4gYy5odG1s
KCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihkKXt2YXIgYz0zRCc8ZGl2IGNsYT0Kc3M9M0QidWktcG9y
dGxldCI+JztpZihkLnRpdGxlKXtjKz0zRCc8ZGl2IGlkPTNEInBvcnRsZXQtaGVhZGVyIiBjbGFz
cz0zRCJwPQpvcnRsZXQtaGVhZGVyIj48ZGl2IGlkPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZs
b2F0OiByaWdodDsiPjwvZGl2PjxoMz4nO2k9CmYoZC5pY29uKXtjKz0zRCc8aSBjbGFzcz0zRCJp
Y29uIGZhICcrZC5pY29uKyciPiZuYnNwOzwvaT4nfWMrPTNEJzxzcGFuIGlkPQo9M0QicG9ydGxl
dC1oZWFkZXItdGV4dCI+JytkLnRpdGxlKyI8L3NwYW4+PC9oMz48L2Rpdj4ifWMrPTNEJzxkaXYg
aWQ9M0QicG89CnJ0bGV0LWNvbnRlbnQiIGNsYXNzPTNEInBvcnRsZXQtY29udGVudCI+JztpZihk
LnBsYWNlbWVudD0zRD0zRCJ0b3AiKXtjKz0zRD0KJzxkaXYgaWQ9M0QiYnV0dG9ucyIgY2xhc3M9
M0QiYnV0dG9ucyI+PC9kaXY+J31jKz0zRCc8ZGl2IGlkPTNEImNvbnRlbnQiIGNsPQphc3M9M0Qi
Y29udGVudCI+PC9kaXY+JztpZihkLnBsYWNlbWVudD0zRD0zRCJib3R0b20iKXtjKz0zRCc8ZGl2
IGlkPTNEImJ1dHQ9Cm9ucyIgY2xhc3M9M0QiYnV0dG9ucyI+PC9kaXY+J31jKz0zRCI8L2Rpdj48
L2Rpdj4iO3JldHVybiBjfX0pO3JldHVybntWaWV3Oj0KYn19KTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEw
ZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIHN0YXRpYy9z
Y3JpcHRzL3BhY2tlZC9tdmMvdWkvdWktdGFicy5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNr
ZWQvbXZjL3VpL3VpLXRhYnMuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy91aS91
aS10YWJzLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlv
bihhKXt2YXIgYj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGU9CmZhdWx0Ont0aXRs
ZV9uZXc6IiIsb3BlcmF0aW9uczpudWxsLG9ubmV3Om51bGx9LGluaXRpYWxpemU6ZnVuY3Rpb24o
ZSl7dGhpcz0KLnZpc2libGU9M0RmYWxzZTt0aGlzLiRuYXY9M0RudWxsO3RoaXMuJGNvbnRlbnQ9
M0RudWxsO3RoaXMuZmlyc3RfdGFiPTNEbnVsPQpsO3RoaXMub3B0aW9ucz0zRGEubWVyZ2UoZSx0
aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgYz0zRCQodGhpcy5fdGVtcGxhdGUodGg9CmlzLm9wdGlv
bnMpKTt0aGlzLiRuYXY9M0RjLmZpbmQoIi50YWItbmF2aWdhdGlvbiIpO3RoaXMuJGNvbnRlbnQ9
M0RjLmZpbmQoIj0KLnRhYi1jb250ZW50Iik7dGhpcy5zZXRFbGVtZW50KGMpO3RoaXMubGlzdD0z
RHt9O3ZhciBkPTNEdGhpcztpZih0aGlzLm9wdGlvPQpucy5vcGVyYXRpb25zKXskLmVhY2godGhp
cy5vcHRpb25zLm9wZXJhdGlvbnMsZnVuY3Rpb24oZyxoKXtoLiRlbC5wcm9wKCJpZCI9CixnKTtk
LiRuYXYuZmluZCgiLm9wZXJhdGlvbnMiKS5hcHBlbmQoaC4kZWwpfSl9aWYodGhpcy5vcHRpb25z
Lm9ubmV3KXt2YXIgZj0KPTNEJCh0aGlzLl90ZW1wbGF0ZV90YWJfbmV3KHRoaXMub3B0aW9ucykp
O3RoaXMuJG5hdi5hcHBlbmQoZik7Zi50b29sdGlwKHt0PQppdGxlOiJBZGQgYSBuZXcgdGFiIixw
bGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyOmQuJGVsfSk7Zi5vbigiY2xpY2siLGZ1bmM9CnRp
b24oZyl7Zi50b29sdGlwKCJoaWRlIik7ZC5vcHRpb25zLm9ubmV3KCl9KX19LGFkZDpmdW5jdGlv
bihmKXt2YXIgZT0zRHRoaT0Kczt2YXIgaD0zRGYuaWQ7dmFyIGc9M0QkKHRoaXMuX3RlbXBsYXRl
X3RhYihmKSk7dmFyIGQ9M0QkKHRoaXMuX3RlbXBsYXRlX3RhPQpiX2NvbnRlbnQoZikpO3RoaXMu
bGlzdFtoXT0zRGYub25kZWw/dHJ1ZTpmYWxzZTtpZih0aGlzLm9wdGlvbnMub25uZXcpe3RoaXM9
Ci4kbmF2LmZpbmQoIiNuZXctdGFiIikuYmVmb3JlKGcpfWVsc2V7dGhpcy4kbmF2LmFwcGVuZChn
KX1kLmFwcGVuZChmLiRlbCk7dD0KaGlzLiRjb250ZW50LmFwcGVuZChkKTtpZihfLnNpemUodGhp
cy5saXN0KT0zRD0zRDEpe2cuYWRkQ2xhc3MoImFjdGl2ZSIpO2QuPQphZGRDbGFzcygiYWN0aXZl
Iik7dGhpcy5maXJzdF90YWI9M0RofWlmKGYub25kZWwpe3ZhciBjPTNEZy5maW5kKCIjZGVsZXRl
Iik9CjtjLnRvb2x0aXAoe3RpdGxlOiJEZWxldGUgdGhpcyB0YWIiLHBsYWNlbWVudDoiYm90dG9t
Iixjb250YWluZXI6ZS4kZWx9KTtjLj0Kb24oImNsaWNrIixmdW5jdGlvbigpe2MudG9vbHRpcCgi
ZGVzdHJveSIpO2UuJGVsLmZpbmQoIi50b29sdGlwIikucmVtb3ZlKCk7PQpmLm9uZGVsKCk7cmV0
dXJuIGZhbHNlfSl9Zy5vbigiY2xpY2siLGZ1bmN0aW9uKGkpe2kucHJldmVudERlZmF1bHQoKTtp
ZihmLm89Cm5jbGljayl7Zi5vbmNsaWNrKCl9ZWxzZXtlLnNob3coaCl9fSl9LGRlbDpmdW5jdGlv
bihjKXt0aGlzLiRlbC5maW5kKCIjdGFiLT0KIitjKS5yZW1vdmUoKTt0aGlzLiRlbC5maW5kKCIj
dGFiLWNvbnRlbnQtIitjKS5yZW1vdmUoKTtpZih0aGlzLmZpcnN0X3RhYj0KPTNEPTNEYyl7dGhp
cy5maXJzdF90YWI9M0RudWxsfWlmKHRoaXMuZmlyc3RfdGFiIT0zRG51bGwpe3RoaXMuc2hvdyh0
aGlzLmZpPQpyc3RfdGFiKX19LGRlbFJlbW92YWJsZTpmdW5jdGlvbigpe2Zvcih2YXIgYyBpbiB0
aGlzLmxpc3Qpe2lmKHRoaXMubGlzdFtjXSk9Cnt0aGlzLmRlbChjKX19fSxzaG93OmZ1bmN0aW9u
KGMpe3RoaXMuJGVsLmZhZGVJbigiZmFzdCIpO3RoaXMudmlzaWJsZT0zRHRydT0KZTtpZihjKXt0
aGlzLiRlbC5maW5kKCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpO3RoaXMuJGVsLmZp
bmQoIiN0YWItPQoiK2MpLmFkZENsYXNzKCJhY3RpdmUiKTt0aGlzLiRlbC5maW5kKCIjdGFiLWNv
bnRlbnQtIitjKS5hZGRDbGFzcygiYWN0aXZlIik9Cn19LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRl
bC5mYWRlT3V0KCJmYXN0Iik7dGhpcy52aXNpYmxlPTNEZmFsc2V9LGhpZGVPcGVyYT0KdGlvbjpm
dW5jdGlvbihjKXt0aGlzLiRuYXYuZmluZCgiIyIrYykuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1
bmN0aW9uKGMpe3RoPQppcy4kbmF2LmZpbmQoIiMiK2MpLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1
bmN0aW9uKGUsZCl7dmFyIGM9M0R0aGlzLiRuYXYuZmk9Cm5kKCIjIitlKTtjLm9mZigiY2xpY2si
KTtjLm9uKCJjbGljayIsZCl9LHRpdGxlOmZ1bmN0aW9uKGUsZCl7dmFyIGM9M0R0aGlzLj0KJGVs
LmZpbmQoIiN0YWItdGl0bGUtdGV4dC0iK2UpO2lmKGQpe2MuaHRtbChkKX1yZXR1cm4gYy5odG1s
KCl9LF90ZW1wbGF0ZTpmPQp1bmN0aW9uKGMpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLXRhYnMg
dGFiYmFibGUgdGFicy1sZWZ0Ij48dWwgaWQ9M0QidGFiLW49CmF2aWdhdGlvbiIgY2xhc3M9M0Qi
dGFiLW5hdmlnYXRpb24gbmF2IG5hdi10YWJzIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiID0K
c3R5bGU9M0QiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3VsPjxk
aXYgaWQ9M0QidGFiLWNvbnRlPQpudCIgY2xhc3M9M0QidGFiLWNvbnRlbnQiLz48L2Rpdj4nfSxf
dGVtcGxhdGVfdGFiX25ldzpmdW5jdGlvbihjKXtyZXR1cm4nPGw9CmkgaWQ9M0QibmV3LXRhYiI+
PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij48aSBjbGFzcz0zRCJ1aS10YWJzLWFkZCBm
YT0KIGZhLXBsdXMtY2lyY2xlIi8+JytjLnRpdGxlX25ldysiPC9hPjwvbGk+In0sX3RlbXBsYXRl
X3RhYjpmdW5jdGlvbihkKXt2YXIgPQpjPTNEJzxsaSBpZD0zRCJ0YWItJytkLmlkKyciPjxhIGlk
PTNEInRhYi10aXRsZS1saW5rLScrZC5pZCsnIiB0aXRsZT0zRCIiIGg9CnJlZj0zRCIjdGFiLWNv
bnRlbnQtJytkLmlkKyciIGRhdGEtb3JpZ2luYWwtdGl0bGU9M0QiIj48c3BhbiBpZD0zRCJ0YWIt
dGl0bD0KZS10ZXh0LScrZC5pZCsnIj4nK2QudGl0bGUrIjwvc3Bhbj4iO2lmKGQub25kZWwpe2Mr
PTNEJzxpIGlkPTNEImRlbGV0ZSIgY2xhPQpzcz0zRCJ1aS10YWJzLWRlbGV0ZSBmYSBmYS1taW51
cy1jaXJjbGUiLz4nfWMrPTNEIjwvYT48L2xpPiI7cmV0dXJuIGN9LF90ZW09CnBsYXRlX3RhYl9j
b250ZW50OmZ1bmN0aW9uKGMpe3JldHVybic8ZGl2IGlkPTNEInRhYi1jb250ZW50LScrYy5pZCsn
IiBjbGFzcz0KPTNEInRhYi1wYW5lIi8+J319KTtyZXR1cm57VmlldzpifX0pOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oYSl7dmFy
IGI9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlPQpmYXVsdDp7dGl0bGVfbmV3OiIi
LG9wZXJhdGlvbnM6bnVsbCxvbm5ldzpudWxsfSxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXM9
Ci52aXNpYmxlPTNEZmFsc2U7dGhpcy4kbmF2PTNEbnVsbDt0aGlzLiRjb250ZW50PTNEbnVsbDt0
aGlzLmZpcnN0X3RhYj0zRG51bD0KbDt0aGlzLm9wdGlvbnM9M0RhLm1lcmdlKGUsdGhpcy5vcHRp
b25zRGVmYXVsdCk7dmFyIGM9M0QkKHRoaXMuX3RlbXBsYXRlKHRoPQppcy5vcHRpb25zKSk7dGhp
cy4kbmF2PTNEYy5maW5kKCIudGFiLW5hdmlnYXRpb24iKTt0aGlzLiRjb250ZW50PTNEYy5maW5k
KCI9Ci50YWItY29udGVudCIpO3RoaXMuc2V0RWxlbWVudChjKTt0aGlzLmxpc3Q9M0R7fTt2YXIg
ZD0zRHRoaXM7aWYodGhpcy5vcHRpbz0KbnMub3BlcmF0aW9ucyl7JC5lYWNoKHRoaXMub3B0aW9u
cy5vcGVyYXRpb25zLGZ1bmN0aW9uKGcsaCl7aC4kZWwucHJvcCgiaWQiPQosZyk7ZC4kbmF2LmZp
bmQoIi5vcGVyYXRpb25zIikuYXBwZW5kKGguJGVsKX0pfWlmKHRoaXMub3B0aW9ucy5vbm5ldyl7
dmFyIGY9Cj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiX25ldyh0aGlzLm9wdGlvbnMpKTt0aGlzLiRu
YXYuYXBwZW5kKGYpO2YudG9vbHRpcCh7dD0KaXRsZToiQWRkIGEgbmV3IHRhYiIscGxhY2VtZW50
OiJib3R0b20iLGNvbnRhaW5lcjpkLiRlbH0pO2Yub24oImNsaWNrIixmdW5jPQp0aW9uKGcpe2Yu
dG9vbHRpcCgiaGlkZSIpO2Qub3B0aW9ucy5vbm5ldygpfSl9fSxhZGQ6ZnVuY3Rpb24oZil7dmFy
IGU9M0R0aGk9CnM7dmFyIGg9M0RmLmlkO3ZhciBnPTNEJCh0aGlzLl90ZW1wbGF0ZV90YWIoZikp
O3ZhciBkPTNEJCh0aGlzLl90ZW1wbGF0ZV90YT0KYl9jb250ZW50KGYpKTt0aGlzLmxpc3RbaF09
M0RmLm9uZGVsP3RydWU6ZmFsc2U7aWYodGhpcy5vcHRpb25zLm9ubmV3KXt0aGlzPQouJG5hdi5m
aW5kKCIjbmV3LXRhYiIpLmJlZm9yZShnKX1lbHNle3RoaXMuJG5hdi5hcHBlbmQoZyl9ZC5hcHBl
bmQoZi4kZWwpO3Q9Cmhpcy4kY29udGVudC5hcHBlbmQoZCk7aWYoXy5zaXplKHRoaXMubGlzdCk9
M0Q9M0QxKXtnLmFkZENsYXNzKCJhY3RpdmUiKTtkLj0KYWRkQ2xhc3MoImFjdGl2ZSIpO3RoaXMu
Zmlyc3RfdGFiPTNEaH1pZihmLm9uZGVsKXt2YXIgYz0zRGcuZmluZCgiI2RlbGV0ZSIpPQo7Yy50
b29sdGlwKHt0aXRsZToiRGVsZXRlIHRoaXMgdGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFp
bmVyOmUuJGVsfSk7Yy49Cm9uKCJjbGljayIsZnVuY3Rpb24oKXtjLnRvb2x0aXAoImRlc3Ryb3ki
KTtlLiRlbC5maW5kKCIudG9vbHRpcCIpLnJlbW92ZSgpOz0KZi5vbmRlbCgpO3JldHVybiBmYWxz
ZX0pfWcub24oImNsaWNrIixmdW5jdGlvbihpKXtpLnByZXZlbnREZWZhdWx0KCk7aWYoZi5vPQpu
Y2xpY2spe2Yub25jbGljaygpfWVsc2V7ZS5zaG93KGgpfX0pfSxkZWw6ZnVuY3Rpb24oYyl7dGhp
cy4kZWwuZmluZCgiI3RhYi09CiIrYykucmVtb3ZlKCk7dGhpcy4kZWwuZmluZCgiI3RhYi1jb250
ZW50LSIrYykucmVtb3ZlKCk7aWYodGhpcy5maXJzdF90YWI9Cj0zRD0zRGMpe3RoaXMuZmlyc3Rf
dGFiPTNEbnVsbH1pZih0aGlzLmZpcnN0X3RhYiE9M0RudWxsKXt0aGlzLnNob3codGhpcy5maT0K
cnN0X3RhYil9fSxkZWxSZW1vdmFibGU6ZnVuY3Rpb24oKXtmb3IodmFyIGMgaW4gdGhpcy5saXN0
KXtpZih0aGlzLmxpc3RbY10pPQp7dGhpcy5kZWwoYyl9fX0sc2hvdzpmdW5jdGlvbihjKXt0aGlz
LiRlbC5mYWRlSW4oImZhc3QiKTt0aGlzLnZpc2libGU9M0R0cnU9CmU7aWYoYyl7dGhpcy4kZWwu
ZmluZCgiLnRhYi1lbGVtZW50IikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpO3RoaXMuJGVsLmZpbmQo
Ij0KLnRhYi1wYW5lIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpO3RoaXMuJGVsLmZpbmQoIiN0YWIt
IitjKS5hZGRDbGFzcygiYWN0aXZlPQoiKTt0aGlzLiRlbC5maW5kKCIjdGFiLWNvbnRlbnQtIitj
KS5hZGRDbGFzcygiYWN0aXZlIil9fSxoaWRlOmZ1bmN0aW9uKCl7dGg9CmlzLiRlbC5mYWRlT3V0
KCJmYXN0Iik7dGhpcy52aXNpYmxlPTNEZmFsc2V9LGhpZGVPcGVyYXRpb246ZnVuY3Rpb24oYyl7
dGhpcz0KLiRuYXYuZmluZCgiIyIrYykuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0aW9uKGMp
e3RoaXMuJG5hdi5maW5kKCIjIitjKS5zPQpob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUs
ZCl7dmFyIGM9M0R0aGlzLiRuYXYuZmluZCgiIyIrZSk7Yy5vZmYoImNsaWM9CmsiKTtjLm9uKCJj
bGljayIsZCl9LHRpdGxlOmZ1bmN0aW9uKGUsZCl7dmFyIGM9M0R0aGlzLiRlbC5maW5kKCIjdGFi
LXRpdGxlLT0KdGV4dC0iK2UpO2lmKGQpe2MuaHRtbChkKX1yZXR1cm4gYy5odG1sKCl9LF90ZW1w
bGF0ZTpmdW5jdGlvbihjKXtyZXR1cm4nPGRpPQp2IGNsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUg
dGFicy1sZWZ0Ij48dWwgaWQ9M0QidGFiLW5hdmlnYXRpb24iIGNsYXNzPTNEInQ9CmFiLW5hdmln
YXRpb24gbmF2IG5hdi10YWJzIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZs
b2F0OiByaWdodD0KOyBtYXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3VsPjxkaXYgaWQ9M0Qi
dGFiLWNvbnRlbnQiIGNsYXNzPTNEInRhYi1jb250PQplbnQiLz48L2Rpdj4nfSxfdGVtcGxhdGVf
dGFiX25ldzpmdW5jdGlvbihjKXtyZXR1cm4nPGxpIGlkPTNEIm5ldy10YWIiPjxhIGg9CnJlZj0z
RCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij48aSBjbGFzcz0zRCJ1aS10YWJzLWFkZCBmYSBmYS1wbHVz
LWNpcmNsZSIvPicrYz0KLnRpdGxlX25ldysiPC9hPjwvbGk+In0sX3RlbXBsYXRlX3RhYjpmdW5j
dGlvbihkKXt2YXIgYz0zRCc8bGkgaWQ9M0QidGFiLScrPQpkLmlkKyciIGNsYXNzPTNEInRhYi1l
bGVtZW50Ij48YSBpZD0zRCJ0YWItdGl0bGUtbGluay0nK2QuaWQrJyIgdGl0bGU9M0QiIiA9Cmhy
ZWY9M0QiI3RhYi1jb250ZW50LScrZC5pZCsnIiBkYXRhLW9yaWdpbmFsLXRpdGxlPTNEIiI+PHNw
YW4gaWQ9M0QidGFiLXRpdD0KbGUtdGV4dC0nK2QuaWQrJyI+JytkLnRpdGxlKyI8L3NwYW4+Ijtp
ZihkLm9uZGVsKXtjKz0zRCc8aSBpZD0zRCJkZWxldGUiIGNsPQphc3M9M0QidWktdGFicy1kZWxl
dGUgZmEgZmEtbWludXMtY2lyY2xlIi8+J31jKz0zRCI8L2E+PC9saT4iO3JldHVybiBjfSxfdGU9
Cm1wbGF0ZV90YWJfY29udGVudDpmdW5jdGlvbihjKXtyZXR1cm4nPGRpdiBpZD0zRCJ0YWItY29u
dGVudC0nK2MuaWQrJyIgY2xhcz0Kcz0zRCJ0YWItcGFuZSIvPid9fSk7cmV0dXJue1ZpZXc6Yn19
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUx
OGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRmNDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZh
M2ExMTFmYmExMjgyIHN0YXRpYy9zdHlsZS9ibHVlL2Jhc2UuY3NzCi0tLSBhL3N0YXRpYy9zdHls
ZS9ibHVlL2Jhc2UuY3NzCisrKyBiL3N0YXRpYy9zdHlsZS9ibHVlL2Jhc2UuY3NzCkBAIC0xMjc4
LDYgKzEyNzgsNyBAQAogLnVwbG9hZC1mdHAgLnVwbG9hZC1mdHAtaGVscHttYXJnaW4tYm90dG9t
OjEwcHh9CiAudXBsb2FkLWZ0cCAudXBsb2FkLWZ0cC13YXJuaW5ne3RleHQtYWxpZ246Y2VudGVy
O21hcmdpbi10b3A6MjBweH0KIC51cGxvYWQtc2V0dGluZ3MgLnVwbG9hZC1zZXR0aW5ncy1jb3Zl
cntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdoPQp0OjEwMCU7dG9wOjBweDtsZWZ0
OjBweDtiYWNrZ3JvdW5kOiNmZmY7b3BhY2l0eTowLjQ7Y3Vyc29yOm5vLWRyb3B9CisudWktcmFk
aW9idXR0b24gbGFiZWx7aGVpZ2h0OjIzcHg7bGluZS1oZWlnaHQ6MWVtfQogLnVpLXRhYmxlLWZv
cm0tc2VwYXJhdG9ye2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjAuOWVtfQogLnVpLWxhYmVs
e2ZvbnQtd2VpZ2h0OmJvbGR9CiAudWktbWVzc2FnZXtwYWRkaW5nOjJweCAycHggMnB4IDEwcHh9
CgpkaWZmIC1yIDFiZTA3ZGU4NmMyYTYwNjUxOGE3Y2ZjMjkxMzIzMGMyOWE3MjEwZjggLXIgMmRm
NDI0ZmMwNTM2ODMxZTQ5YjA5ZDQ9CmQyZmZhM2ExMTFmYmExMjgyIHN0YXRpYy9zdHlsZS9zcmMv
bGVzcy91aS5sZXNzCi0tLSBhL3N0YXRpYy9zdHlsZS9zcmMvbGVzcy91aS5sZXNzCisrKyBiL3N0
YXRpYy9zdHlsZS9zcmMvbGVzcy91aS5sZXNzCkBAIC0xLDMgKzEsMTAgQEAKKy51aS1yYWRpb2J1
dHRvbiB7CisgICAgbGFiZWwgeworICAgICAgICBoZWlnaHQ6IDIzcHg7CisgICAgICAgIGxpbmUt
aGVpZ2h0OiAxZW07CisgICAgfQorfQorCiAudWktdGFibGUgewogICAgICY6ZXh0ZW5kKC5ncmlk
KTsKClJlcG9zaXRvcnkgVVJMOiBodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1j
ZW50cmFsLwoKLS0KClRoaXMgaXMgYSBjb21taXQgbm90aWZpY2F0aW9uIGZyb20gYml0YnVja2V0
Lm9yZy4gWW91IGFyZSByZWNlaXZpbmcKdGhpcyBiZWNhdXNlIHlvdSBoYXZlIHRoZSBzZXJ2aWNl
IGVuYWJsZWQsIGFkZHJlc3NpbmcgdGhlIHJlY2lwaWVudCBvZgp0aGlzIGVtYWlsLgo
1
0
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/1be07de86c2a/
Changeset: 1be07de86c2a
User: dannon
Date: 2014-06-03 23:42:17
Summary: Pack scripts.
Affected #: 1 file
diff -r e33a715ee045acac64b9e8e4ac14bcdc31ef6ca7 -r 1be07de86c2a606518a7cfc2913230c29a7210f8 static/scripts/packed/mvc/data.js
--- a/static/scripts/packed/mvc/data.js
+++ b/static/scripts/packed/mvc/data.js
@@ -1,1 +1,1 @@
-define(["mvc/ui/ui-modal","mvc/ui/ui-frames"],function(j,i){var g=Backbone.Model.extend({});var b=Backbone.Model.extend({defaults:{id:"",type:"",name:"",hda_ldda:"hda",metadata:null},initialize:function(){this._set_metadata();this.on("change",this._set_metadata,this)},_set_metadata:function(){var m=new g();_.each(_.keys(this.attributes),function(n){if(n.indexOf("metadata_")===0){var o=n.split("metadata_")[1];m.set(o,this.attributes[n]);delete this.attributes[n]}},this);this.set("metadata",m,{silent:true})},get_metadata:function(m){return this.attributes.metadata.get(m)},urlRoot:galaxy_config.root+"api/datasets"});var h=b.extend({defaults:_.extend({},b.prototype.defaults,{chunk_url:null,first_data_chunk:null,chunk_index:-1,at_eof:false}),initialize:function(m){b.prototype.initialize.call(this);this.attributes.chunk_index=(this.attributes.first_data_chunk?1:0);this.attributes.chunk_url=galaxy_config.root+"dataset/display?dataset_id="+this.id;this.attributes.url_viz=galaxy_config.root+"visualization"},get_next_chunk:function(){if(this.attributes.at_eof){return null}var m=this,n=$.Deferred();$.getJSON(this.attributes.chunk_url,{chunk:m.attributes.chunk_index++}).success(function(o){var p;if(o.ck_data!==""){p=o}else{m.attributes.at_eof=true;p=null}n.resolve(p)});return n}});var e=Backbone.Collection.extend({model:b});var a=Backbone.View.extend({initialize:function(m){this.row_count=0;this.header_color="#AAA";this.dark_row_color="#DDD";new d({model:m.model,$el:this.$el})},render:function(){var s=$("<div/>").attr("id","loading_indicator");this.$el.append(s);var q=$("<table/>").attr({id:"content_table",cellpadding:0});this.$el.append(q);var m=this.model.get_metadata("column_names"),r=$("<tr/>").css("background-color",this.header_color).appendTo(q);if(m){r.append("<th>"+m.join("</th><th>")+"</th>")}var o=this,n=this.model.get("first_data_chunk");if(n){this._renderChunk(n)}else{$.when(o.model.get_next_chunk()).then(function(t){o._renderChunk(t)})}var p=false;this.scroll_elt.scroll(function(){if(!p&&o.scrolled_to_bottom()){p=true;s.show();$.when(o.model.get_next_chunk()).then(function(t){if(t){o._renderChunk(t);p=false;s.hide()}})}})},scrolled_to_bottom:function(){return false},_renderCell:function(p,m,q){var n=$("<td>").text(p);var o=this.model.get_metadata("column_types");if(q!==undefined){n.attr("colspan",q).addClass("stringalign")}else{if(o){if(m<o.length){if(o[m]==="str"||o[m]==="list"){n.addClass("stringalign")}}}}return n},_renderRow:function(m){var n=m.split("\t"),p=$("<tr>"),o=this.model.get_metadata("columns");if(this.row_count%2!==0){p.css("background-color",this.dark_row_color)}if(n.length===o){_.each(n,function(r,q){p.append(this._renderCell(r,q))},this)}else{if(n.length>o){_.each(n.slice(0,o-1),function(r,q){p.append(this._renderCell(r,q))},this);p.append(this._renderCell(n.slice(o-1).join("\t"),o-1))}else{if(o>5&&n.length===o-1){_.each(n,function(r,q){p.append(this._renderCell(r,q))},this);p.append($("<td>"))}else{p.append(this._renderCell(m,0,o))}}}this.row_count++;return p},_renderChunk:function(m){var n=this.$el.find("table");_.each(m.ck_data.split("\n"),function(o,p){n.append(this._renderRow(o))},this)}});var f=a.extend({initialize:function(m){a.prototype.initialize.call(this,m);scroll_elt=_.find(this.$el.parents(),function(n){return $(n).css("overflow")==="auto"});if(!scroll_elt){scroll_elt=window}this.scroll_elt=$(scroll_elt)},scrolled_to_bottom:function(){return(this.$el.height()-this.scroll_elt.scrollTop()-this.scroll_elt.height()<=0)}});var l=a.extend({initialize:function(m){a.prototype.initialize.call(this,m);this.scroll_elt=this.$el.css({position:"relative",overflow:"scroll",height:this.options.height||"500px"})},scrolled_to_bottom:function(){return this.$el.scrollTop()+this.$el.innerHeight()>=this.el.scrollHeight}});var d=Backbone.View.extend({col:{chrom:null,start:null,end:null},url_viz:null,dataset_id:null,genome_build:null,data_type:null,initialize:function(o){var r=parent.Galaxy;if(r&&r.modal){this.modal=r.modal}if(r&&r.frame){this.frame=r.frame}if(!this.modal||!this.frame){return}var n=o.model;var q=n.get("metadata");if(!n.get("data_type")){return}this.data_type=n.get("data_type");if(this.data_type=="bed"){if(q.get("chromCol")&&q.get("startCol")&&q.get("endCol")){this.col.chrom=q.get("chromCol")-1;this.col.start=q.get("startCol")-1;this.col.end=q.get("endCol")-1}else{console.log("TabularButtonTrackster : Bed-file metadata incomplete.");return}}if(this.data_type=="vcf"){function p(t,u){for(var s=0;s<u.length;s++){if(u[s].match(t)){return s}}return -1}this.col.chrom=p("Chrom",q.get("column_names"));this.col.start=p("Pos",q.get("column_names"));this.col.end=null;if(this.col.chrom==-1||this.col.start==-1){console.log("TabularButtonTrackster : VCF-file metadata incomplete.");return}}if(this.col.chrom===undefined){return}if(n.id){this.dataset_id=n.id}else{console.log("TabularButtonTrackster : Dataset identification is missing.");return}if(n.get("url_viz")){this.url_viz=n.get("url_viz")}else{console.log("TabularButtonTrackster : Url for visualization controller is missing.");return}if(n.get("genome_build")){this.genome_build=n.get("genome_build")}var m=new IconButtonView({model:new IconButton({title:"Visualize",icon_class:"chart_curve",id:"btn_viz"})});this.setElement(o.$el);this.$el.append(m.render().$el);this.hide()},events:{"mouseover tr":"show",mouseleave:"hide"},show:function(r){function q(w){return !isNaN(parseFloat(w))&&isFinite(w)}if(this.col.chrom===null){return}var v=$(r.target).parent();var s=v.children().eq(this.col.chrom).html();var m=v.children().eq(this.col.start).html();var o=this.col.end?v.children().eq(this.col.end).html():m;if(!s.match("^#")&&s!==""&&q(m)){var u={dataset_id:this.dataset_id,gene_region:s+":"+m+"-"+o};var p=v.offset();var n=p.left-10;var t=p.top-$(window).scrollTop()+3;$("#btn_viz").css({position:"fixed",top:t+"px",left:n+"px"});$("#btn_viz").off("click");$("#btn_viz").click(this.create_trackster_action(this.url_viz,u,this.genome_build));$("#btn_viz").show()}else{$("#btn_viz").hide()}},hide:function(){this.$el.find("#btn_viz").hide()},create_trackster_action:function(m,p,o){var n=this;return function(){var q={};if(o){q["f-dbkey"]=o}$.ajax({url:m+"/list_tracks?"+$.param(q),dataType:"html",error:function(){n.modal.show({title:"Something went wrong!",body:"Unfortunately we could not add this dataset to the track browser. Please try again or contact us.",buttons:{Cancel:function(){n.modal.hide()}}})},success:function(r){n.modal.show({title:"View Data in a New or Saved Visualization",buttons:{Cancel:function(){n.modal.hide()},"View in saved visualization":function(){n.modal.show({title:"Add Data to Saved Visualization",body:r,buttons:{Cancel:function(){n.modal.hide()},"Add to visualization":function(){n.modal.hide();n.modal.$el.find("input[name=id]:checked").each(function(){var s=$(this).val();p.id=s;n.frame.add({title:"Trackster",type:"url",content:m+"/trackster?"+$.param(p)})})}}})},"View in new visualization":function(){n.modal.hide();n.frame.add({title:"Trackster",type:"url",content:m+"/trackster?"+$.param(p)})}}})}});return false}}});var k=function(p,n,q,m){var o=new n({model:new p(q)});o.render();if(m){m.append(o.$el)}return o};var c=function(o){if(!o.model){o.model=new h(o.dataset_config)}var n=o.parent_elt;var p=o.embedded;delete o.embedded;delete o.parent_elt;delete o.dataset_config;var m=(p?new l(o):new f(o));m.render();if(n){n.append(m.$el)}return m};return{Dataset:b,TabularDataset:h,DatasetCollection:e,TabularDatasetChunkedView:a,createTabularDatasetChunkedView:c}});
\ No newline at end of file
+define(["mvc/ui/ui-modal","mvc/ui/ui-frames"],function(j,i){var g=Backbone.Model.extend({});var b=Backbone.Model.extend({defaults:{id:"",type:"",name:"",hda_ldda:"hda",metadata:null},initialize:function(){this._set_metadata();this.on("change",this._set_metadata,this)},_set_metadata:function(){var m=new g();_.each(_.keys(this.attributes),function(n){if(n.indexOf("metadata_")===0){var o=n.split("metadata_")[1];m.set(o,this.attributes[n]);delete this.attributes[n]}},this);this.set("metadata",m,{silent:true})},get_metadata:function(m){return this.attributes.metadata.get(m)},urlRoot:galaxy_config.root+"api/datasets"});var h=b.extend({defaults:_.extend({},b.prototype.defaults,{chunk_url:null,first_data_chunk:null,chunk_index:-1,at_eof:false}),initialize:function(m){b.prototype.initialize.call(this);this.attributes.chunk_index=(this.attributes.first_data_chunk?1:0);this.attributes.chunk_url=galaxy_config.root+"dataset/display?dataset_id="+this.id;this.attributes.url_viz=galaxy_config.root+"visualization"},get_next_chunk:function(){if(this.attributes.at_eof){return null}var m=this,n=$.Deferred();$.getJSON(this.attributes.chunk_url,{chunk:m.attributes.chunk_index++}).success(function(o){var p;if(o.ck_data!==""){p=o}else{m.attributes.at_eof=true;p=null}n.resolve(p)});return n}});var e=Backbone.Collection.extend({model:b});var a=Backbone.View.extend({initialize:function(m){this.row_count=0;this.header_color="#AAA";this.dark_row_color="#DDD";new d({model:m.model,$el:this.$el})},render:function(){var s=$("<div/>").attr("id","loading_indicator");this.$el.append(s);var q=$("<table/>").attr({id:"content_table",cellpadding:0});this.$el.append(q);var m=this.model.get_metadata("column_names"),r=$("<tr/>").css("background-color",this.header_color).appendTo(q);if(m){r.append("<th>"+m.join("</th><th>")+"</th>")}var o=this,n=this.model.get("first_data_chunk");if(n){this._renderChunk(n)}else{$.when(o.model.get_next_chunk()).then(function(t){o._renderChunk(t)})}var p=false;this.scroll_elt.scroll(function(){if(!p&&o.scrolled_to_bottom()){p=true;s.show();$.when(o.model.get_next_chunk()).then(function(t){if(t){o._renderChunk(t);p=false}s.hide()})}})},scrolled_to_bottom:function(){return false},_renderCell:function(p,m,q){var n=$("<td>").text(p);var o=this.model.get_metadata("column_types");if(q!==undefined){n.attr("colspan",q).addClass("stringalign")}else{if(o){if(m<o.length){if(o[m]==="str"||o[m]==="list"){n.addClass("stringalign")}}}}return n},_renderRow:function(m){var n=m.split("\t"),p=$("<tr>"),o=this.model.get_metadata("columns");if(this.row_count%2!==0){p.css("background-color",this.dark_row_color)}if(n.length===o){_.each(n,function(r,q){p.append(this._renderCell(r,q))},this)}else{if(n.length>o){_.each(n.slice(0,o-1),function(r,q){p.append(this._renderCell(r,q))},this);p.append(this._renderCell(n.slice(o-1).join("\t"),o-1))}else{if(o>5&&n.length===o-1){_.each(n,function(r,q){p.append(this._renderCell(r,q))},this);p.append($("<td>"))}else{p.append(this._renderCell(m,0,o))}}}this.row_count++;return p},_renderChunk:function(m){var n=this.$el.find("table");_.each(m.ck_data.split("\n"),function(o,p){n.append(this._renderRow(o))},this)}});var f=a.extend({initialize:function(m){a.prototype.initialize.call(this,m);scroll_elt=_.find(this.$el.parents(),function(n){return $(n).css("overflow")==="auto"});if(!scroll_elt){scroll_elt=window}this.scroll_elt=$(scroll_elt)},scrolled_to_bottom:function(){return(this.$el.height()-this.scroll_elt.scrollTop()-this.scroll_elt.height()<=0)}});var l=a.extend({initialize:function(m){a.prototype.initialize.call(this,m);this.scroll_elt=this.$el.css({position:"relative",overflow:"scroll",height:this.options.height||"500px"})},scrolled_to_bottom:function(){return this.$el.scrollTop()+this.$el.innerHeight()>=this.el.scrollHeight}});var d=Backbone.View.extend({col:{chrom:null,start:null,end:null},url_viz:null,dataset_id:null,genome_build:null,data_type:null,initialize:function(o){var r=parent.Galaxy;if(r&&r.modal){this.modal=r.modal}if(r&&r.frame){this.frame=r.frame}if(!this.modal||!this.frame){return}var n=o.model;var q=n.get("metadata");if(!n.get("data_type")){return}this.data_type=n.get("data_type");if(this.data_type=="bed"){if(q.get("chromCol")&&q.get("startCol")&&q.get("endCol")){this.col.chrom=q.get("chromCol")-1;this.col.start=q.get("startCol")-1;this.col.end=q.get("endCol")-1}else{console.log("TabularButtonTrackster : Bed-file metadata incomplete.");return}}if(this.data_type=="vcf"){function p(t,u){for(var s=0;s<u.length;s++){if(u[s].match(t)){return s}}return -1}this.col.chrom=p("Chrom",q.get("column_names"));this.col.start=p("Pos",q.get("column_names"));this.col.end=null;if(this.col.chrom==-1||this.col.start==-1){console.log("TabularButtonTrackster : VCF-file metadata incomplete.");return}}if(this.col.chrom===undefined){return}if(n.id){this.dataset_id=n.id}else{console.log("TabularButtonTrackster : Dataset identification is missing.");return}if(n.get("url_viz")){this.url_viz=n.get("url_viz")}else{console.log("TabularButtonTrackster : Url for visualization controller is missing.");return}if(n.get("genome_build")){this.genome_build=n.get("genome_build")}var m=new IconButtonView({model:new IconButton({title:"Visualize",icon_class:"chart_curve",id:"btn_viz"})});this.setElement(o.$el);this.$el.append(m.render().$el);this.hide()},events:{"mouseover tr":"show",mouseleave:"hide"},show:function(r){function q(w){return !isNaN(parseFloat(w))&&isFinite(w)}if(this.col.chrom===null){return}var v=$(r.target).parent();var s=v.children().eq(this.col.chrom).html();var m=v.children().eq(this.col.start).html();var o=this.col.end?v.children().eq(this.col.end).html():m;if(!s.match("^#")&&s!==""&&q(m)){var u={dataset_id:this.dataset_id,gene_region:s+":"+m+"-"+o};var p=v.offset();var n=p.left-10;var t=p.top-$(window).scrollTop()+3;$("#btn_viz").css({position:"fixed",top:t+"px",left:n+"px"});$("#btn_viz").off("click");$("#btn_viz").click(this.create_trackster_action(this.url_viz,u,this.genome_build));$("#btn_viz").show()}else{$("#btn_viz").hide()}},hide:function(){this.$el.find("#btn_viz").hide()},create_trackster_action:function(m,p,o){var n=this;return function(){var q={};if(o){q["f-dbkey"]=o}$.ajax({url:m+"/list_tracks?"+$.param(q),dataType:"html",error:function(){n.modal.show({title:"Something went wrong!",body:"Unfortunately we could not add this dataset to the track browser. Please try again or contact us.",buttons:{Cancel:function(){n.modal.hide()}}})},success:function(r){n.modal.show({title:"View Data in a New or Saved Visualization",buttons:{Cancel:function(){n.modal.hide()},"View in saved visualization":function(){n.modal.show({title:"Add Data to Saved Visualization",body:r,buttons:{Cancel:function(){n.modal.hide()},"Add to visualization":function(){n.modal.hide();n.modal.$el.find("input[name=id]:checked").each(function(){var s=$(this).val();p.id=s;n.frame.add({title:"Trackster",type:"url",content:m+"/trackster?"+$.param(p)})})}}})},"View in new visualization":function(){n.modal.hide();n.frame.add({title:"Trackster",type:"url",content:m+"/trackster?"+$.param(p)})}}})}});return false}}});var k=function(p,n,q,m){var o=new n({model:new p(q)});o.render();if(m){m.append(o.$el)}return o};var c=function(o){if(!o.model){o.model=new h(o.dataset_config)}var n=o.parent_elt;var p=o.embedded;delete o.embedded;delete o.parent_elt;delete o.dataset_config;var m=(p?new l(o):new f(o));m.render();if(n){n.append(m.$el)}return m};return{Dataset:b,TabularDataset:h,DatasetCollection:e,TabularDatasetChunkedView:a,createTabularDatasetChunkedView:c}});
\ No newline at end of file
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: dannon: Stop loading indicator at the end of get_next_chunk regardless of result.
by commits-noreply@bitbucket.org 03 Jun '14
by commits-noreply@bitbucket.org 03 Jun '14
03 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/e33a715ee045/
Changeset: e33a715ee045
User: dannon
Date: 2014-06-03 23:40:00
Summary: Stop loading indicator at the end of get_next_chunk regardless of result.
Affected #: 1 file
diff -r 58a057a02b896ae6d32571f7141f46ccb9006e54 -r e33a715ee045acac64b9e8e4ac14bcdc31ef6ca7 static/scripts/mvc/data.js
--- a/static/scripts/mvc/data.js
+++ b/static/scripts/mvc/data.js
@@ -180,8 +180,8 @@
if (result) {
self._renderChunk(result);
loading_chunk = false;
- loading_indicator.hide();
}
+ loading_indicator.hide();
});
}
});
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
03 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/58a057a02b89/
Changeset: 58a057a02b89
User: davebgx
Date: 2014-06-03 23:04:13
Summary: Merge fix from stable.
Affected #: 1 file
diff -r d1d3a8f09b2bcaf23962310f5d535758823e13d7 -r 58a057a02b896ae6d32571f7141f46ccb9006e54 lib/tool_shed/galaxy_install/repository_util.py
--- a/lib/tool_shed/galaxy_install/repository_util.py
+++ b/lib/tool_shed/galaxy_install/repository_util.py
@@ -623,11 +623,11 @@
# Get the tool_dependencies.xml file from the repository.
tool_dependencies_config = hg_util.get_config_from_disk( 'tool_dependencies.xml', install_dir )
installed_tool_dependencies = \
- common_install_util.install_specified_packages( app=trans.app,
- tool_shed_repository=tool_shed_repository,
- tool_dependencies_config=tool_dependencies_config,
- tool_dependencies=tool_shed_repository.tool_dependencies,
- from_tool_migration_manager=False )
+ common_install_util.install_specified_tool_dependencies( app=trans.app,
+ tool_shed_repository=tool_shed_repository,
+ tool_dependencies_config=tool_dependencies_config,
+ tool_dependencies=tool_shed_repository.tool_dependencies,
+ from_tool_migration_manager=False )
basic_util.remove_dir( work_dir )
suc.update_tool_shed_repository_status( trans.app,
tool_shed_repository,
@@ -881,11 +881,11 @@
# Get the tool_dependencies.xml file from the repository.
tool_dependencies_config = hg_util.get_config_from_disk( 'tool_dependencies.xml', repository.repo_path( trans.app ) )
installed_tool_dependencies = \
- common_install_util.install_specified_packages( app=trans.app,
- tool_shed_repository=repository,
- tool_dependencies_config=tool_dependencies_config,
- tool_dependencies=repository.tool_dependencies,
- from_tool_migration_manager=False )
+ common_install_util.install_specified_tool_dependencies( app=trans.app,
+ tool_shed_repository=repository,
+ tool_dependencies_config=tool_dependencies_config,
+ tool_dependencies=repository.tool_dependencies,
+ from_tool_migration_manager=False )
for installed_tool_dependency in installed_tool_dependencies:
if installed_tool_dependency.status in [ trans.install_model.ToolDependency.installation_status.ERROR ]:
repair_dict = add_repair_dict_entry( repository.name, installed_tool_dependency.error_message )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: dan: Fix for Safari Caching External View application 302 redirect links. See https://trello.com/c/optldnPm
by commits-noreply@bitbucket.org 03 Jun '14
by commits-noreply@bitbucket.org 03 Jun '14
03 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/d1d3a8f09b2b/
Changeset: d1d3a8f09b2b
User: dan
Date: 2014-06-03 23:03:17
Summary: Fix for Safari Caching External View application 302 redirect links. See https://trello.com/c/optldnPm
Affected #: 1 file
diff -r 72dea09e14ab6e87e7537b23f8c9af2cd6f50c6b -r d1d3a8f09b2bcaf23962310f5d535758823e13d7 lib/galaxy/webapps/galaxy/controllers/dataset.py
--- a/lib/galaxy/webapps/galaxy/controllers/dataset.py
+++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py
@@ -738,6 +738,8 @@
return rval
elif app_action == None:
#redirect user to url generated by display link
+ #Fix for Safari caching display links, which can change if the underlying dataset has an attribute change, e.g. name, metadata, etc
+ trans.response.headers[ 'Cache-Control' ] = [ 'no-cache', 'max-age=0', 'no-store', 'must-revalidate' ]
return trans.response.send_redirect( display_link.display_url() )
else:
msg.append( ( 'Invalid action provided: %s' % app_action, 'error' ) )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: davebgx: Add change that was lost when resolving a merge conflict.
by commits-noreply@bitbucket.org 03 Jun '14
by commits-noreply@bitbucket.org 03 Jun '14
03 Jun '14
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/f9c050410d6a/
Changeset: f9c050410d6a
Branch: stable
User: davebgx
Date: 2014-06-03 22:52:18
Summary: Add change that was lost when resolving a merge conflict.
Affected #: 1 file
diff -r 96fdb9168f28b2ffa463195d084c9278efb2465a -r f9c050410d6a56d7f6fe503b4f22f286bd5a40e2 lib/tool_shed/galaxy_install/repository_util.py
--- a/lib/tool_shed/galaxy_install/repository_util.py
+++ b/lib/tool_shed/galaxy_install/repository_util.py
@@ -622,11 +622,11 @@
# Get the tool_dependencies.xml file from the repository.
tool_dependencies_config = suc.get_config_from_disk( 'tool_dependencies.xml', install_dir )
installed_tool_dependencies = \
- common_install_util.install_specified_packages( app=trans.app,
- tool_shed_repository=tool_shed_repository,
- tool_dependencies_config=tool_dependencies_config,
- tool_dependencies=tool_shed_repository.tool_dependencies,
- from_tool_migration_manager=False )
+ common_install_util.install_specified_tool_dependencies( app=trans.app,
+ tool_shed_repository=tool_shed_repository,
+ tool_dependencies_config=tool_dependencies_config,
+ tool_dependencies=tool_shed_repository.tool_dependencies,
+ from_tool_migration_manager=False )
suc.remove_dir( work_dir )
suc.update_tool_shed_repository_status( trans.app,
tool_shed_repository,
@@ -880,11 +880,11 @@
# Get the tool_dependencies.xml file from the repository.
tool_dependencies_config = suc.get_config_from_disk( 'tool_dependencies.xml', repository.repo_path( trans.app ) )
installed_tool_dependencies = \
- common_install_util.install_specified_packages( app=trans.app,
- tool_shed_repository=repository,
- tool_dependencies_config=tool_dependencies_config,
- tool_dependencies=repository.tool_dependencies,
- from_tool_migration_manager=False )
+ common_install_util.install_specified_tool_dependencies( app=trans.app,
+ tool_shed_repository=repository,
+ tool_dependencies_config=tool_dependencies_config,
+ tool_dependencies=repository.tool_dependencies,
+ from_tool_migration_manager=False )
for installed_tool_dependency in installed_tool_dependencies:
if installed_tool_dependency.status in [ trans.install_model.ToolDependency.installation_status.ERROR ]:
repair_dict = add_repair_dict_entry( repository.name, installed_tool_dependency.error_message )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0